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)
{
...
}
将类的构造函数定义成保护成员
在类中定义一个公共的友元类
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)
{
...
}
相关文章推荐
- 关于代码阅读的编程实现技巧及自己工作学习的一些经验(推荐看后面的后记)
- vc++学习(六)——代码学习
- java并发编程学习之一段简单代码证明synchronized锁的是对象
- vc学习遇到的几个问题。。2005-03-07
- 如何利用单台计算机(可能只有一个或没有串口)学习VC串口编程
- VC编程经验汇总(二)
- 代码大全学习总结——伪代码编程
- VC编程规范—程序员应该这样写代码
- 主流机器学习模型模板代码+经验分享[xgb, lgb, Keras, LR]
- 几个不错的VC编程学习网站
- 编程经验系列-Java学习杂谈(一)
- VC++代码片段学习:编辑框
- VC编程经验汇总(一)
- 谈一谈网络编程学习经验
- VC/MFC 编程经验
- Python(编程小白的第一本 Python 入门书) 学习笔记2——代码练习
- 从VC 6.0移植代码到VS C++ 2005得出的一些经验
- C++代码书写风格的一点小结(也许会对编程经验在两个月以下的程序员会有一定参考价值)
- VC编程规范-程序员们都应该这样写代码