帐号
注册
密码
登录
关闭
安全选项
找回密码
记住我
我的中心
登录或注册新用户,开通自己的个人中心
切换到窄版
论坛
标签
搜索
帮助
快速搜索
帖子标题
作者
版块
迷你5207专属论坛
»
技术带动变革
»
手机开发综合
»
M8SDK学习系列之公共函数
技术带动变革
U880/V880/N880
Android交流
手机开发综合
Mini开发技术综合区
快乐的旅程
Mini大嘴巴
返回列表
查看:
3582
|
回复:
0
[魅族M8]
M8SDK学习系列之公共函数
[复制链接]
发送短消息
UID
1
精华
77
5207.com@163.com
89387228
查看公共资料
搜索主题
搜索帖子
5207
组别
皇帝
生日
1983-12-1
帖子
1542
积分
2020
生命值
93
钱
3909.8 M
性别
发表者
字体大小:
t
T
发表于
2009-02-22 22:46
|
只看楼主
写程序积累资源库是很重要的,将一些经常用到的而且是通用的功能进行封装后,在经后的开发中直接拿来用即是了,可以省去很多的时间。在学习M8sdk的过程中由于写一些程序需要用到些常用的功能,比如检查文件是否存在?目录是否创建等。。于是就开始建立了一个单元专门来维护 这些函数。
目前只是几个已经用到的函数,由于对C++不熟,在写这些函数时也是郁闷了一陈,主要就是集中在指针和字符串两个方面,字符串在C++的处理中真的是太弱了,也许是接触的不深,但就目前看到的C++中关于字符串的定义及各种处理就明白,C++的字符处理能力都是后天生成的。先天的不足让我们这些笨的人真的是吃了大苦头。。希望大家在学习的过程中多注意一下,C++中的指针和字符串对入门者将会是个非常头痛的问题。当然也许对你不是问题。
开始放出公共函数库代码,我分别建了CPubFunction.h和CPubFunction.cpp文件,先贴出CPubFunction.h文件:
/************************************************************************/
/*
* 版权所有 点滴论坛([url]http://www.mini188.com[/url])
*
* 公共函数
* Author: 5207
* Create: 2009-02-20
*/
/************************************************************************/
#pragma once
//检查目录是否存在
//参数:
// TCHAR* filepath : 待检查的目录
//返回值: 目录存在返回true, 否则为false;
bool DirectoryExists(TCHAR* filepath);
//检查文件否存在
//参数:
// TCHAR* filename: 待检查的文件完整路径
//返回值: 存在返回true, 否则为false;
bool FileExists(TCHAR* filename);
//获取应用程序目录
//参数:
// LPTSTR szPath: 返回应用程序目录
//返回值: 成功返回true, 否则为false;
bool GetCurrentPath(LPTSTR szPath);
//获取一个Guid(字符串)
//参数:
// TCHAR **strGuid: 返回的GUID字符串
//返回值: 成功true, 否则为false;
bool GetGuidString(TCHAR **strGuid);
复制代码
其中的DirectoryExists和FileExsits两个函数是我根据Delphi中的代码转换过来的,基本相同都是API完成的。而GetCurrentPath函数是在网上找了段代码,后经修改得到的,这个函数也弄了半天。而GetGuidString也是学习了下DelphiVCL的代码改写而成。经过测试都能使用。
另外将实现部分.CPP代码也贴出来:
#include "stdafx.h"
#include "CPubFunction.h"
//目录是否存在的检查
bool DirectoryExists(TCHAR* filepath)
{
int code = GetFileAttributes(filepath);
return ((code != -1) && (FILE_ATTRIBUTE_DIRECTORY && code != 0));
}
//检查文件否存在
bool FileExists(TCHAR* filename)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile(filename, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
return false;
}
else
{
FindClose(hFind);
return true;
}
}
//获取应用程序目录
bool GetCurrentPath(LPTSTR szPath)
{
HMODULE handle = GetModuleHandle(NULL);
DWORD dwRet = GetModuleFileName(handle, szPath, MAX_PATH);
if (dwRet == 0)
{
return false;
}
else
{
TCHAR* p = szPath;
while(*p)++p; //let p point to '\0'
while('\\' != *p)--p; //let p point to '\\'
++p;
*p = '\0'; //get the path
return true;
}
}
//获取Guid
bool GetGuidString(TCHAR **strGuid)
{
GUID theGuid;
LPOLESTR pstrGuid;
CoCreateGuid(&theGuid);
if (StringFromCLSID(theGuid, &pstrGuid) == 0)
{
*strGuid = pstrGuid;
//CoTaskMemFree(pstrGuid);
return true;
}
else
return false;
}
复制代码
具体代码功能就不作解释了,如果有疑问可以回帖。
调用的代码也贴出:
//保存
bool CM8NoteEditWnd::SaveNoteItem()
{
CMzString newFileName;
TCHAR szPath[MAX_PATH] = L"";
if (m_EditType == etAdd)
{
if (!GetCurrentPath(szPath))
return false;
TCHAR *szGuid;
GetGuidString(&szGuid);
CMzString mzGuid = szGuid;
... ...
}
if (!FileExists(newFileName))
{
return false;
}
else
{
... ...
return true;
}
}
复制代码
下面的代码是用于DirectoryExists的调用示例
CMzString tmpDataDir = L"\\Program Files\\Mini188\\";
//检查Data文件夹是否存在,不存在则创建
if (!DirectoryExists(tmpDataDir))
{
//创建Data目录
CreateDirectory(tmpDataDir, NULL);
}
复制代码
作者:
5207
出处:
http://www.mini188.com
本文版权归作者所有,欢迎转载请注明出处,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
本主题由
皇帝
5207 于 2009-7-4 11:50:18 执行 主题分类 操作
分享
转发
相信与不相信都是矛盾的. 5207宣!欢迎您来到
点滴论坛
TOP
上一主题
|
下一主题
返回列表
高级编辑器
B
Color
Image
Link
Quote
Code
Smilies
动感职场
洋葱头
默认表情
你需要登录后才可以发帖
登录
|
注册
发表回复
查看背景广告
隐藏
发新主题
技术带动变革
U880/V880/N880
Android交流
手机开发综合
Mini开发技术综合区
快乐的旅程
Mini大嘴巴
浏览过的版块
Mini大嘴巴
永远的Delphi
Mini开发技术综合区
TOP
设置头像
个人资料
更改密码
用户组
收藏夹
积分
default