day12 – 补课

MFC DLL

规则DLL

规则DLL也叫常规DLL - 导出的接口是标准的,可以给SDK,MFC使用

共享规则DLL

在DLL里任何使用MFC函数的第一行代码都需要加入如下代码:

// 切换资源的模块句柄
AFX_MANAGE_STATE(AfxGetStaticModuleState());

静态规则DLL

可以直接使用

扩展DLL

导出的MFC类【专门给MFC使用】,使用 AFX_EXT_DATA 宏导出MFC的Class

注意:EXE的项目和DLL的项目的字符集需要一致,否则会导致程序崩溃

INI文件

接口中带有 private 的是可以自定义存储路径的

不带 private 的使用的是系统的win.ini文件

注册表

注册新的节点,使用 RegCreateKey() 函数。如果没有该节点则会创建一个新的节点,若存在则会打开该节点返回HKEY,使用完后要使用 RegCloseKey() 关闭

RegCreateKey函数原型

LONG RegCreateKey(
  HKEY hKey,        // handle to an open key
  LPCTSTR lpSubKey, // subkey name
  PHKEY phkResult   // buffer for key handle
);

RegCloseKey函数原型

LONG RegCloseKey(  HKEY hKey   // handle to key to close);

添加新的项/修改现有项,使用 RegSetValue() 函数和 RegSetValueEx() 函数

其中 RegSetValue() 只能添加REG_SZ类型,而 RegSetValueEx() 函数可以使用全部类型。

若key值不存在则会新建一个新的,若key值存在则会修改当前值。

RegSetValue函数原型

LONG RegSetValue(  
  HKEY hKey,         // handle to key
  LPCTSTR lpSubKey,  // subkey name  
  DWORD dwType,      // information type
  LPCTSTR lpData,    // value data  
  DWORD cbData       // size of value data
);

删除值,使用 RegDeleteValue()

RegDeleteValue函数原型

LONG RegDeleteValue(  
  HKEY hKey,            // handle to key
  LPCTSTR lpValueName   // value name
);

删除节点,使用 RegDeleteKey() ,只能删除没有子节点的节点

RegDeleteKey函数原型

LONG RegDeleteKey(
  HKEY hKey,         // handle to open key
  LPCTSTR lpSubKey   // subkey name
);

遍历值,使用 RegEnumValue() 函数,获取节点下有多少个值的数量使用 RegQueryInfoKey() 函数获取

RegEnumValue函数原型

LONG RegEnumValue(
  HKEY hKey,             // handle to key to query
  DWORD dwIndex,         // index of value to query
  LPTSTR lpValueName,    // value buffer
  LPDWORD lpcValueName,  // size of value buffer
  LPDWORD lpReserved,    // reserved
  LPDWORD lpType,        // type buffer
  LPBYTE lpData,         // data buffer
  LPDWORD lpcbData       // size of data buffer
);

RegQueryInfoKey函数原型

LONG RegQueryInfoKey(
  HKEY hKey,                      // handle to key
  LPTSTR lpClass,                 // class buffer
  LPDWORD lpcClass,               // size of class buffer
  LPDWORD lpReserved,             // reserved
  LPDWORD lpcSubKeys,             // number of subkeys
  LPDWORD lpcMaxSubKeyLen,        // longest subkey name
  LPDWORD lpcMaxClassLen,         // longest class string
  LPDWORD lpcValues,              // number of value entries
  LPDWORD lpcMaxValueNameLen,     // longest value name
  LPDWORD lpcMaxValueLen,         // longest value data
  LPDWORD lpcbSecurityDescriptor, // descriptor length
  PFILETIME lpftLastWriteTime     // last write time
);

遍历键,使用 RegEnumKeyEx() 函数

RegEnumKeyEx函数原型

LONG RegEnumKeyEx(
  HKEY hKey,                  // handle to key to enumerate
  DWORD dwIndex,              // subkey index
  LPTSTR lpName,              // subkey name
  LPDWORD lpcName,            // size of subkey buffer
  LPDWORD lpReserved,         // reserved
  LPTSTR lpClass,             // class string buffer
  LPDWORD lpcClass,           // size of class string buffer
  PFILETIME lpftLastWriteTime // last write time
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值