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
);