VC编程经验03_学习代码

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)
{
...
}




 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值