您的位置:首页 > 编程语言

VC编程经验03_学习代码

2012-01-04 20:07 267 查看
1 可以将一个类仅仅提供给另一个类使用的方法

将类的构造函数定义成保护成员

在类中定义一个公共的友元类

class CEnvManageImpl

{

friend class CProjectMgr;

protected:

CEnvManageImpl();

public:

~CEnvManageImpl();

...

}

2一般路径名中可以有/和\,在进一步处理前最好先统一一下

strPath.Repalce('/', '\\');

...

3 获取模块的安装目录

在继承于CWinApp的派生类(应用程序类)的初始化函数中可以获得相应的模块句柄

BOOL CMangeApp::Instance()

{

char szPath[MAX_PATH] = "";

GetModuleFileName(this->m_hInstance, szPath, MAX_PATH);

}

4 写注册表

4.1 打开注册表

4.2 写注册表

4.3 关闭注册表

HKEY hKey;

DWORD dwDis = REG_CREATED_NEW_KEY;

CString strVal("huan");

if(ERROR_SUCCESS == RegCreateKeyEx(HKEY_CLASSES_ROOT, //当前打开的句柄或者预定义好的句柄

TEXT(".aspj\\DefaultIcon"), //指定打开或创建子键的路径

0, //保留字

NULL, //指定键的类型

REG_OPTION_NON_VOLATILE, //注册键选项,默认或者动态

KEY_ALL_ACCESS | KEY_WRITE, //键的操作方式

NULL, //安全属性,NULL默认

&hKey, //返回键句柄

&dwDis)) //指定是创建方式还是打开方式

{

RegSetValueEx(hKey,//键句柄(包括创建的和预定义好的)

"",//句柄名称

0, //保留

REG_SZ,//键类型

(const BYTE *)(LPCSTR)strVal,//键值

strVal.GetLength()+1 );//键的长度

RegCloseKey(hKey);//关闭键

}

5 在构造函数中将数据成员进行初始化

6 在头文件中一般会有一个保证头文件出现一次的预定义伪指令

#if !defined(AFX_ENVMANAGE_H__EDD2EF62_25DB_4F81_B504_1265E4E1ABDB__INCLUDED_)

#define AFX_ENVMANAGE_H__EDD2EF62_25DB_4F81_B504_1265E4E1ABDB__INCLUDED_

...

#endif



#ifndef AFX_ENVMANAGE_H__EDD2EF62_25DB_4F81_B504_1265E4E1ABDB__INCLUDED_

#define AFX_ENVMANAGE_H__EDD2EF62_25DB_4F81_B504_1265E4E1ABDB__INCLUDED_

...

#endif;

7 数组个数计算

静态数组个数

_countof(arr);

动态数组个数

int nLen = sizeof(arr) / sizeof(arr[0]);

8 将文件夹有子目录移动到上级目录

CString strCurrentDir("C:\\qiao");

CString strSubDir("C:\\qiao\\huan");

CString strFileToFind("");

bool bIsFind = true;

CFileFind oFind;//CFileFind继承自CObject类

strFileToFind.Format("%s\\", );

bIsFind = oFind.FindFile(strFileToFind);

while(bIsFind)

{

bIsFind = oFind.FindNextFile();

if(oFind.IsDots() != 0)

{

coutinue;

}

CString strFile;

strFile = oFind.GetFileName();

CString strSourceDir;

CString strDestDir;

strSourceDir.Format("%s\\%s", strSubDir, strFile);

strDestDir.Format("%s\\%s", strCurrentDir, strFile);

MoveFileEx(strSourceDir, strDestDir, MOVEFILE_WRITE_THROUGH | MOVEFILE_REPLACE_EXISTING);

oFind.Close();

}

9 一般在操作一个文件(夹)之前需要判断一个文件是否存在

if(GetFileAttributes(strDir) == -1)

{

...

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: