锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
棣栧厛浠嬬粛涓や釜鍑芥暟錛?br>
璇誨彇 ini 鏂囦歡錛?br>
1.1 鐢╓M_TIMER鏉ヨ緗畾鏃跺櫒
鍏堣鐪婼etTimer榪欎釜API鍑芥暟鐨勫師鍨?
UINT_PTR SetTimer(
HWND hWnd, // 紿楀彛鍙ユ焺
UINT_PTR nIDEvent, // 瀹氭椂鍣↖D錛屽涓畾鏃跺櫒鏃訛紝鍙互閫氳繃璇D鍒ゆ柇鏄摢涓畾鏃跺櫒
UINT uElapse, // 鏃墮棿闂撮殧,鍗曚綅涓烘縐?br> TIMERPROC lpTimerFunc // 鍥炶皟鍑芥暟
);
渚嬪
SetTimer(m_hWnd,1,1000,NULL); //涓涓?縐掕Е鍙戜竴嬈$殑瀹氭椂鍣?br>鍦∕FC紼嬪簭涓璖etTimer琚皝瑁呭湪CWnd綾諱腑錛岃皟鐢ㄥ氨涓嶇敤鎸囧畾紿楀彛鍙ユ焺浜?br>
浜庢槸SetTimer鍑芥暟鐨勫師鍨嬪彉涓猴細(xì)
UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD))
褰撲嬌鐢⊿etTimer鍑芥暟鐨勬椂鍊欙紝灝變細(xì)鐢熸垚涓涓鏃跺櫒銆傚嚱鏁頒腑nIDEvent鎸囩殑鏄鏃跺櫒鐨勬爣璇嗭紝涔熷氨鏄悕瀛椼俷Elapse鎸囩殑鏄椂闂撮棿闅旓紝涔熷氨鏄瘡闅斿闀挎椂闂磋Е鍙戜竴嬈′簨浠躲傜涓変釜鍙傛暟鏄竴涓洖璋冨嚱鏁幫紝鍦ㄨ繖涓嚱鏁伴噷錛屾斁鍏ヤ綘鎯寵鍋氱殑浜嬫儏鐨勪唬鐮侊紝浣犲彲浠ュ皢瀹冭瀹氫負(fù)NULL錛屼篃灝辨槸浣跨敤緋葷粺榛樿鐨勫洖璋冨嚱鏁幫紝緋葷粺榛樿璁ょ殑鏄痮nTime鍑芥暟銆傝繖涓嚱鏁版庝箞鐢熸垚鐨勫憿錛熶綘闇瑕佸湪闇瑕佽鏃跺櫒鐨勭被鐨勭敓鎴恛nTime鍑芥暟錛氬湪ClassWizard閲岋紝閫夋嫨闇瑕佽鏃跺櫒鐨勭被錛屾坊鍔燱M_TIME娑堟伅鏄犲皠錛屽氨鑷姩鐢熸垚onTime鍑芥暟浜?jiǎn)銆傜劧鍚庡湪鍑芥暟閲屾坊鍔犱唬鐮侊紝璁╀唬鐮佸疄鐜板姛鑳姐傛瘡闅斾竴孌墊椂闂村氨浼?xì)鑷姩鎵ц涓嬈°?
渚嬶細(xì)
SetTimer(1,1000,NULL);
1:璁℃椂鍣ㄧ殑鍚嶇О錛?
1000錛氭椂闂撮棿闅旓紝鍗曚綅鏄縐掞紱
NULL:浣跨敤onTime鍑芥暟銆?
褰撲笉闇瑕佽鏃跺櫒鐨勬椂鍊欒皟鐢↘illTimer(nIDEvent);
渚嬪錛欿illTimer(1);
1.2 璋冪敤鍥炶皟鍑芥暟
姝ゆ柟娉曢鍏堝啓涓涓涓嬫牸寮忕殑鍥炶皟鍑芥暟
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);
鐒跺悗鍐嶇敤SetTimer(1,100,TimerProc)鍑芥暟鏉ュ緩涓涓畾鏃跺櫒錛岀涓変釜鍙傛暟灝辨槸鍥炶皟鍑芥暟鍦板潃銆?br>
浜? 鎴栬浣犱細(xì)闂紝濡傛灉鎴戣鍔犲叆涓や釜鎴栬呬袱涓互涓婄殑 timer鎬庝箞鍔烇紵
緇х畫鐢⊿etTimer鍑芥暟鍚э紝涓婃鐨則imer鐨処D鏄?錛岃繖嬈″彲浠ユ槸2錛?錛?銆傘傘傘?
SetTimer(2,1000,NULL);
SetTimer(3,500,NULL);
鍡紝W(xué)INDOWS浼?xì)鍗忚皟浠栦滑鐨勩傚綋鐒秓nTimer鍑芥暟浣撲篃瑕佸彂鐢熷彉鍖栵紝瑕佸湪鍑芥暟浣撳唴娣誨姞姣忎竴涓猼imer鐨勫鐞嗕唬鐮侊細(xì)
onTimer(nIDEvent)
{
switch(nIDEvent)
{
case 1:........;
break;
case 2:.......;
break;
case 3:......;
break;
}
}
浠涔堟椂鍊欐垜浠渶瑕佺敤鍒癝etTimer鍑芥暟鍛紵褰撲綘闇瑕佹瘡涓竴孌墊椂闂存墽琛屼竴浠朵簨鐨勭殑鏃跺欏氨闇瑕佷嬌鐢⊿etTimer鍑芥暟浜?jiǎn)銆?浣跨敤瀹氭椂鍣ㄧ殑鏂規(guī)硶姣旇緝綆鍗曪紝閫氬父鍛婅瘔WINDOWS涓涓椂闂撮棿闅旓紝鐒跺悗WINDOWS浠ユ鏃墮棿闂撮殧鍛ㄦ湡鎬цЕ鍙戠▼搴忋傞氬父鏈変袱縐嶆柟娉曟潵瀹炵幇錛氬彂閫乄M_TIMER娑堟伅鍜岃皟鐢ㄥ簲鐢ㄧ▼搴忓畾涔夌殑鍥炶皟鍑芥暟銆?
1.1 鐢╓M_TIMER鏉ヨ緗畾鏃跺櫒
鍏堣鐪婼etTimer榪欎釜API鍑芥暟鐨勫師鍨?
UINT_PTR SetTimer(
HWND hWnd, // 紿楀彛鍙ユ焺
UINT_PTR nIDEvent, // 瀹氭椂鍣↖D錛屽涓畾鏃跺櫒鏃訛紝鍙互閫氳繃璇D鍒ゆ柇鏄摢涓畾鏃跺櫒
UINT uElapse, // 鏃墮棿闂撮殧,鍗曚綅涓烘縐?br> TIMERPROC lpTimerFunc // 鍥炶皟鍑芥暟
);
渚嬪
SetTimer(m_hWnd,1,1000,NULL); //涓涓?縐掕Е鍙戜竴嬈$殑瀹氭椂鍣?br>鍦∕FC紼嬪簭涓璖etTimer琚皝瑁呭湪CWnd綾諱腑錛岃皟鐢ㄥ氨涓嶇敤鎸囧畾紿楀彛鍙ユ焺浜?br>
浜庢槸SetTimer鍑芥暟鐨勫師鍨嬪彉涓猴細(xì)
UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD))
褰撲嬌鐢⊿etTimer鍑芥暟鐨勬椂鍊欙紝灝變細(xì)鐢熸垚涓涓鏃跺櫒銆傚嚱鏁頒腑nIDEvent鎸囩殑鏄鏃跺櫒鐨勬爣璇嗭紝涔熷氨鏄悕瀛椼俷Elapse鎸囩殑鏄椂闂撮棿闅旓紝涔熷氨鏄瘡闅斿闀挎椂闂磋Е鍙戜竴嬈′簨浠躲傜涓変釜鍙傛暟鏄竴涓洖璋冨嚱鏁幫紝鍦ㄨ繖涓嚱鏁伴噷錛屾斁鍏ヤ綘鎯寵鍋氱殑浜嬫儏鐨勪唬鐮侊紝浣犲彲浠ュ皢瀹冭瀹氫負(fù)NULL錛屼篃灝辨槸浣跨敤緋葷粺榛樿鐨勫洖璋冨嚱鏁幫紝緋葷粺榛樿璁ょ殑鏄痮nTime鍑芥暟銆傝繖涓嚱鏁版庝箞鐢熸垚鐨勫憿錛熶綘闇瑕佸湪闇瑕佽鏃跺櫒鐨勭被鐨勭敓鎴恛nTime鍑芥暟錛氬湪ClassWizard閲岋紝閫夋嫨闇瑕佽鏃跺櫒鐨勭被錛屾坊鍔燱M_TIME娑堟伅鏄犲皠錛屽氨鑷姩鐢熸垚onTime鍑芥暟浜?jiǎn)銆傜劧鍚庡湪鍑芥暟閲屾坊鍔犱唬鐮侊紝璁╀唬鐮佸疄鐜板姛鑳姐傛瘡闅斾竴孌墊椂闂村氨浼?xì)鑷姩鎵ц涓嬈°?
渚嬶細(xì)
SetTimer(1,1000,NULL);
1:璁℃椂鍣ㄧ殑鍚嶇О錛?
1000錛氭椂闂撮棿闅旓紝鍗曚綅鏄縐掞紱
NULL:浣跨敤onTime鍑芥暟銆?
褰撲笉闇瑕佽鏃跺櫒鐨勬椂鍊欒皟鐢↘illTimer(nIDEvent);
渚嬪錛欿illTimer(1);
1.2 璋冪敤鍥炶皟鍑芥暟
姝ゆ柟娉曢鍏堝啓涓涓涓嬫牸寮忕殑鍥炶皟鍑芥暟
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);
鐒跺悗鍐嶇敤SetTimer(1,100,TimerProc)鍑芥暟鏉ュ緩涓涓畾鏃跺櫒錛岀涓変釜鍙傛暟灝辨槸鍥炶皟鍑芥暟鍦板潃銆?br>
浜? 鎴栬浣犱細(xì)闂紝濡傛灉鎴戣鍔犲叆涓や釜鎴栬呬袱涓互涓婄殑 timer鎬庝箞鍔烇紵
緇х畫鐢⊿etTimer鍑芥暟鍚э紝涓婃鐨則imer鐨処D鏄?錛岃繖嬈″彲浠ユ槸2錛?錛?銆傘傘傘?
SetTimer(2,1000,NULL);
SetTimer(3,500,NULL);
鍡紝W(xué)INDOWS浼?xì)鍗忚皟浠栦滑鐨勩傚綋鐒秓nTimer鍑芥暟浣撲篃瑕佸彂鐢熷彉鍖栵紝瑕佸湪鍑芥暟浣撳唴娣誨姞姣忎竴涓猼imer鐨勫鐞嗕唬鐮侊細(xì)
onTimer(nIDEvent)
{
switch(nIDEvent)
{
case 1:........;
break;
case 2:.......;
break;
case 3:......;
break;
}
}
榪欎釜鍑芥暟涓嶹indows 3.1鍏煎銆傚熀浜嶹in32鐨勫簲鐢ㄧ▼搴忓簲璇ヤ嬌鐢?a href="file:///I:/鍗庡鑻變功嫻?緙栫▼璇█/VISUAL%20MSDN/娉ㄥ唽琛ㄦ搷浣?regapi_3wzc.htm">RegQueryValueEx鍑芥暟銆?
LONG RegQueryValue(
HKEY hKey, // 瑕佹煡璇㈤敭鐨勫彞鏌?br> LPCTSTR lpSubKey,
// 瑕佹煡璇㈠瓙閿殑鍚嶅瓧
LPTSTR lpValue, // 榪斿洖瀛楃涓茬殑緙撳瓨
PLONG lpcbValue // 鎺ユ敹榪斿洖瀛楃涓茬殑澶у皬
);
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95鍜學(xué)indows 98: HKEY_DYN_DATA
濡傛灉lpValue鏄疦ULL騫朵笖lpcbValue涓嶆槸NULL錛岃繖涓嚱鏁拌繑鍥濫RROR_SUCCESS錛屽茍鍙栧洖琚玪pcbData鎸囧畾鐨勫彉閲忕紦瀛樼殑澶у皬錛堜互瀛楄妭涓哄崟浣嶏級(jí)銆傝繖涓負(fù)鍊肩殑鏁版嵁緙撳瓨鍒嗛厤鏈濂界殑閫斿緞銆?
濡傛灉琚?em>lpData鍙傛暟鎸囧畾鐨勭紦瀛樹笉澶熷ぇ錛岃繖涓嚱鏁拌繑鍥濫RROR_MORE_DATA鍊鹼紝騫跺彇鍥炶lpcbData鎸囧畾鐨勫彉閲忕紦瀛樼殑澶у皬錛堜互瀛楄妭涓哄崟浣嶏級(jí)銆?
鍦ㄦ墍鏈夌殑妗堜緥涓紝鍦?em>lpcbValue榪斿洖鐨勫肩殑澶у皬鍖呭惈瀛楃涓茬殑緇撴潫絎︺?
濡傛灉璋冪敤鎴愬姛錛岃繑鍥濫RROR_SUCCESS銆?/p>
濡傛灉璋冪敤澶辮觸錛岃繑鍥炰竴涓潪闆墮敊璇爜錛堝畾涔夊湪WINERROR.H錛夈備綘鍙互浣跨敤甯︽湁FORMAT_MESSAGE_FROM_SYSTEM鏍囪鐨?a href="file:///I:/鍗庡鑻變功嫻?緙栫▼璇█/VISUAL%20MSDN/娉ㄥ唽琛ㄦ搷浣?strings_0sdh.htm">FormatMessage鍑芥暟鑾峰緱閿欒鐨勬櫘閫氭弿榪頒俊鎭?/p>
鑳借hKey鍙傛暟璇嗗埆鐨勯敭蹇呴』琚甫鏈塊EY_QUERY_VALUE瀛樺彇鏉冮檺鎵撳紑錛圞EY_READ瀛樺彇鏉冮檺鍖呮嫭KEY_QUERY_VALUE瀛樺彇鏉冮檺錛夈?
濡傛灉榪欎釜鍑芥暟鐨凙NSI鐗堟湰琚嬌鐢紙鏄庣‘鐨勮皟鐢?strong>RegQueryValueExA鎴栧湪鍖呭惈WINDOWS.H鏂囦歡鍓嶄笉瀹氫箟UNICODE錛夛紝榪欎釜鍑芥暟鍦ㄥ鍒跺畠鍒?em>lpValue鍙傛暟緇欏畾鐨勭紦瀛樺尯鍓嶏紝杞崲瀛樿串鐨刄nicode瀛楃涓插埌ANSI瀛楃涓層?
Windows NT: 闇瑕?.1鎴栨洿楂樼増鏈?br> Windows: 闇瑕乄indows 95鎴栨洿楂樼増鏈?br> Windows CE: 涓嶆敮鎸併?br> 澶存枃浠? winreg.h銆?br> 杈撳叆搴? advapi32.lib銆?br> Unicode: 鍦╓indows NT涓綔涓篣nicode鍜孉NSI鎵ц銆?/p>
Registry Overview, Registry Functions, RegEnumKey, RegEnumKeyEx, RegEnumValue, RegQueryInfoKey, RegQueryValueEx, RegSetValue, RegSetValueEx
LONG RegOpenKey(
HKEY hKey, // 瑕佹墦寮閿殑鍙ユ焺
LPCTSTR lpSubKey, // 瑕佹墦寮瀛愰敭鐨勫悕瀛楃殑鍦板潃
PHKEY phkResult // 瑕佹墦寮閿殑鍙ユ焺鐨勫湴鍧
);
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95鍜學(xué)indows 98: HKEY_DYN_DATA
琚?strong>RegOpenKey鍑芥暟鎵撳紑鍦伴敭鏄兘琚?em>hKey璇嗗埆鐨勫瓙閿?
濡傛灉璋冪敤鎴愬姛錛岃繑鍥濫RROR_SUCCESS銆?/p>
濡傛灉璋冪敤澶辮觸錛岃繑鍥炰竴涓潪闆墮敊璇爜錛堝畾涔夊湪WINERROR.H錛夈備綘鍙互浣跨敤甯︽湁FORMAT_MESSAGE_FROM_SYSTEM鏍囪鐨?a href="file:///I:/鍗庡鑻變功嫻?緙栫▼璇█/VISUAL%20MSDN/娉ㄥ唽琛ㄦ搷浣?strings_0sdh.htm">FormatMessage鍑芥暟鑾峰緱鏅氶敊璇弿榪頒俊鎭?/p>
RegOpenKey鍑芥暟浣跨敤榛樿鐨勫畨鍏ㄥ瓨鍙栨帺鐮佹墦寮涓涓敭銆傚鏋滄墦寮鐨勯敭闇瑕佷竴涓笉鍚岀殑鎺╃爜錛屽嚱鏁板皢鍙戠敓閿欒錛岃繑鍥濫RROR_ACCESS_DENIED銆傚湪榪欑鎯呭艦涓嬩竴涓簲鐢ㄧ▼搴忓簲璇ヤ嬌鐢?strong>RegOpenKeyEx鍑芥暟鍘繪寚瀹氬瓨鍙栨帺鐮併?
涓哄儚RegCreateKey鍑芥暟錛屽鏋滈敭鍦ㄦ暟鎹簱涓嶅瓨鍦ㄦ椂錛?strong>RegOpenKey涓嶈兘鏂板緩緇欏畾閿?
Windows NT: 闇瑕?.1鎴栨洿楂樼増鏈?br> Windows: 闇瑕乄indows 95鎴栨洿楂樼増鏈?br> Windows CE: 涓嶆敮鎸併?br> 鏂囦歡澶? winreg.h銆?br> 杈撳叆搴? advapi32.lib銆?br> Unicode: 鍦╓indows NT涓綔涓篣nicode鍜孉NSI鎵ц銆?/p>
Registry Overview, Registry Functions, RegCloseKey, RegCreateKey, RegCreateKeyEx, RegDeleteKey, RegOpenKeyEx
LONG RegCloseKey( HKEY hKey // 瑕佸叧闂敭鐨勫彞鏌?strong>);
濡傛灉璋冪敤鎴愬姛錛岃繑鍥濫RROR_SUCCESS銆?/p>
濡傛灉璋冪敤澶辮觸錛岃繑鍥為潪闆墮敊璇唬鐮侊紙瀹氫箟鍦╓INERROR.H錛夈備綘鍙互浣跨敤甯︽湁FORMAT_MESSAGE_FROM_SYSTE鏍囪 FormatMessage鍑芥暟鑾峰緱鏅氶敊璇弿榪頒俊鎭?/p>
榪欎釜緇欏畾閿殑鍙ユ焺涓嶅簲璇ュ湪瀹冨叧闂悗浣跨敤錛屽洜涓哄畠涓嶅啀鏈夋晥銆傞敭鍙ユ焺涓嶅簲璇ユ瘮闇瑕佺殑鏃墮棿鐭?
RegCloseKey鍦ㄨ繑鍥炰箣鍓嶄笉闇瑕佸線娉ㄥ唽琛ㄤ腑鍐欎俊鎭紱瀹冨彲浠ヨ姳璐瑰嚑縐掔紦瀛樺埌紜洏鐨勭紦瀛樺尯銆傚鏋滀竴涓簲鐢ㄧ▼搴忓繀欏繪槑紜殑鍐欐敞鍐屼俊鎭埌紜洏錛屽畠鍙互浣跨敤RegFlushKey鍑芥暟銆?strong>RegFlushKey錛岀劧鑰屼嬌鐢ㄤ簡(jiǎn)鏇村鐨勭郴緇熻祫婧愶紝搴旇鍦ㄥ繀闇鏃舵墠璋冪敤瀹冦?
Windows CE: RegCloseKey鍑芥暟鎬繪槸鍦ㄨ繑鍥炲墠鍐欎俊鎭埌娉ㄥ唽琛紝鍦╓indows CE鍘婚櫎浜?jiǎn)缂撳瓨閿殑闇瑕併?
Windows NT: 闇瑕?.1鎴栨洿楂樼増鏈?br> Windows: 闇瑕乄indows 95鎴栨洿楂樼増鏈?br> Windows CE: 闇瑕?.0鎴栨洿楂樼増鏈?br> 澶存枃浠? winreg.h銆?br> 杈撳叆搴? advapi32.lib銆?/p>
LONG RegQueryValueEx( HKEY hKey, // 瑕佹煡璇㈤敭鐨勫彞鏌?strong> LPTSTR lpValueName, // 瑕佹煡璇㈠肩殑鍚嶅瓧鐨勫湴鍧 LPDWORD lpReserved, // 淇濈暀 LPDWORD lpType, // 鍊肩被鍨嬬紦瀛樺湴鍧 LPBYTE lpData, // 鏁版嵁緙撳瓨鍦板潃 LPDWORD lpcbData // 鏁版嵁緙撳瓨澶у皬鍦板潃);
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95鍜學(xué)indows 98: HKEY_DYN_DATA
濡傛灉lpValueName鏄疦ULL鎴栦竴涓┖瀛楃涓詫紙""錛夛紝榪欎釜鍑芥暟鎵懼洖榪欎釜閿殑鏈懡鍚嶆垨榛樿鍊肩殑綾誨瀷鍜屾暟鎹?
Windows 95鍜學(xué)indows 98: 姣忎釜閿湁涓涓粯璁ゅ鹼紙鏈鍒濈殑涓嶅寘鍚暟鎹級(jí)銆傚湪Windows 95錛岃繖浜洪粯璁ゅ肩被鍨嬫繪槸REG_SZ銆傚湪Windows 98錛岄粯璁ら敭鐨勭被鍨嬫渶鍒濇槸REG_SZ錛屼絾鍙互閫氳繃RegSetValueEx鎸囧畾涓涓粯璁ゅ間負(fù)涓嶅悓鐨勭被鍨嬨?
Windows NT: 閿笉鑳借嚜鍔ㄦ嫢鏈変竴涓湭鍛藉悕鎴栭粯璁ょ殑鍊鹼紝鏈懡鍚嶇殑鍊煎彲浠ユ槸浠諱綍綾誨瀷銆?
鍊?/th> | 鍚剰 |
---|---|
REG_BINARY | 浜岃繘鍒舵暟鎹?/td> |
REG_DWORD | 涓涓?2浣嶆暟瀛椼?/td> |
REG_DWORD_LITTLE_ENDIAN | 涓涓猯ittle-endian鏍煎紡鐨?2浣嶆暟瀛椼傝繖鐩稿綋浜嶳EG_DWORD銆?
little-endian鏍煎紡錛屾槸涓涓瀛楄妭鍊煎湪鍐呭瓨涓浠庝綆瀛楄妭鍒伴珮瀛楄妭瀛樿串銆傚錛屽?0x12345678鍦╨ittle-endian鏍煎紡涓瀛樿串涓?0x78 0x56 0x34 0x12)銆?/p> Windows NT, Windows 95,鍜學(xué)indows 98鏄湁鎰忚繍琛屽湪little-endian璁$畻鏈轟綋緋諱笂鐨勩備緥濡傚儚涓浜沀NIX緋葷粺錛屼竴涓敤鎴峰繀欏昏繛鎺ュ埌big-endian浣撶郴鐨勮綆楁満涓娿? |
REG_DWORD_BIG_ENDIAN | 涓涓猙ig-endian鏍煎紡鐨?2浣嶆暟瀛椼?
big-endian鏍煎紡錛屼竴涓瀛楄妭鍊煎湪鍐呭瓨鑱岃浠庨珮瀛楄妭鍒頒綆瀛楄妭瀛樿串銆傚錛屽?x12345678鍦╞ig-endian鏍煎紡涓瀛樿串涓?0x12 0x34 0x56 0x78)銆?/p> |
REG_EXPAND_SZ | 涓涓寘鍚湭琚紩鐢ㄧ殑鐜鍙橀噺鐨勪互絀哄瓧絎︾粨鏉熺殑瀛楃涓?濡傦紝"%PATH%")銆傚畠鏄疷nicode瀛楃涓茶繕鏄疉NSI瀛楃涓插皢渚濊禆浣犳墍浣跨敤鐨勬槸Unicode鍑芥暟榪樻槸ANSI鍑芥暟銆傛墿灞曠幆澧冨彉閲忓紩鐢紝浣跨敤 ExpandEnvironmentStrings鍑芥暟銆?/td> |
REG_LINK | 涓涓猆nicode絎﹀彿榪炴帴銆?/td> |
REG_MULTI_SZ | 涓涓互絀哄瓧絎︾粨鏉熺殑瀛楃涓叉暟緇勶紝琚袱涓猲ull瀛楃緇撴潫銆?/td> |
REG_NONE | 鏈畾涔夊肩被鍨嬨?/td> |
REG_RESOURCE_LIST | 涓涓澶?a class=UBBWordLink target=_blank>椹卞姩璧勬簮鍒楄〃銆?/td> |
REG_SZ | 涓涓互絀哄瓧絎︾粨鏉熺殑瀛楃涓層傚畠鏄?Unicode瀛楃涓茶繕鏄?ANSI瀛楃涓插皢渚濊禆浣犳墍浣跨敤鐨勬槸 Unicode鍑芥暟榪樻槸 ANSI鍑芥暟銆?/td> |
濡傛灉涓嶉渶瑕佺被鍨?em>lpType鍙傛暟鍙互涓虹┖錛圢ULL錛夈?
濡傛灉鏁版嵁鏄疪EG_SZ銆丷EG_MULTI_SZ鎴朢EG_EXPAND_SZ綾誨瀷錛岄偅涔?em>lpcbData榪樺皢鍖呮嫭浠ョ┖瀛楃緇撴潫鐨勫ぇ灝忋?
濡傛灉lpData鏄疦ULL錛?em>lpcbData鍙傛暟鍙互鏄疦ULL銆?
濡傛灉琚?em>lpData鍙傛暟鎸囧畾鐨勭紦瀛樹笉澶熷ぇ錛岃繖涓嚱鏁拌繑鍥濫RROR_MORE_DATA鍊鹼紝騫跺彇鍥炶lpcbData鎸囧畾鐨勫彉閲忕紦瀛樼殑澶у皬錛堜互瀛楄妭涓哄崟浣嶏級(jí)銆?
濡傛灉lpData鏄疦ULL錛?em>lpcbData涓嶆槸NULL錛岃繖涓嚱鏁拌繑鍥濫RROR_SUCCESS錛屽茍鍙栧洖琚?em>lpcbData鎸囧畾鐨勫彉閲忕紦瀛樼殑澶у皬錛堜互瀛楄妭涓哄崟浣嶏級(jí)銆傝繖涓負(fù)鍊肩殑鏁版嵁緙撳瓨鍒嗛厤鏈濂界殑閫斿緞銆?
Window NT: 濡傛灉hKey鎸囧畾涓?strong>HKEY_PERFORMANCE_DATA錛?/strong>騫朵笖lpData緙撳瓨澶皬錛?strong>RegQueryValueEx榪斿洖ERROR_MORE_DATA錛屼絾鏄?em>lpcbData涓嶈兘榪斿洖蹇呴渶鐨勭紦瀛樺ぇ灝忋傝繖鏄洜涓鴻繍鐢ㄦ暟鎹殑澶у皬鍙互鍦ㄨ皟鐢ㄧ殑涓嬩竴姝ヨ鏀瑰彉銆傚湪榪欑鎯呭艦涓嬶紝浣犲繀欏誨鍔犵紦瀛樼殑澶у皬騫墮噸鏂拌皟鐢?strong>RegQueryValueEx閫氳繃lpcbData 鍙傛暟鏇存柊緙撳瓨澶у皬銆傞噸澶嶇洿鍒板嚱鏁版垚鍔熴?浣犻渶瑕佺淮鎶や竴涓崟鐙殑鍙橀噺鍘葷暀鎰忕紦瀛樼殑澶у皬銆傚洜涓鴻lpcbData榪斿洖鐨勫兼槸鍙笉棰勭煡鐨勩?
濡傛灉榪欎釜鍑芥暟鎴愬姛錛岃繑鍥濫RROR_SUCCESS銆?/p>
濡傛灉璋冩湁澶辮觸錛岃繑鍥炰竴涓潪闆墮敊璇爜錛堝畾涔夊湪WINERROR.H錛夈備綘鍙互浣跨敤甯︽湁FORMAT_MESSAGE_FROM_SYSTEM鏍囪鐨?a href="file:///I:/鍗庡鑻變功嫻?緙栫▼璇█/VISUAL%20MSDN/娉ㄥ唽琛ㄦ搷浣?strings_0sdh.htm">FormatMessage鍑芥暟鑾峰緱閿欒鐨勬櫘閫氭弿榪頒俊鎭?/p>
琚?em>hKey紜畾鐨勯敭蹇呴』鏄甯︽湁KEY_QUERY_VALUE鏍囪鎵撳紑鐨勩傛墦寮閿紝浣跨敤RegCreateKeyEx鍑芥暟鎴?a href="file:///I:/鍗庡鑻變功嫻?緙栫▼璇█/VISUAL%20MSDN/娉ㄥ唽琛ㄦ搷浣?regapi_7yns.htm">RegOpenKeyEx鍑芥暟銆?
濡傛灉鍊兼暟鎹槸REG_SZ銆丷EG_MULTI_SZ鎴朢EG_EXPAND_SZ綾誨瀷錛岃繖涓嚱鏁扮殑ANSI鐗堟湰灝嗚浣跨敤錛堟槑紜殑璋冪敤RegQueryValueExA鎴栧湪鍖呭惈WINDOWS.H鏂囦歡鍓嶄笉瀹氫箟UNICODE錛夛紝榪欎釜鍑芥暟鍦ㄥ鍒跺畠鍒?em>lpData鎸囧畾鐨勭紦瀛樹腑浠ュ墠錛岃漿鎹㈠瓨璐湴Unicode瀛楃涓蹭負(fù)ANSI瀛楃涓層?
Window NT: 褰撹皟鐢?strong>RegQueryValueEx鍑芥暟騫?em>hKey琚緗垚HKEY_PERFORMANCE_DATA鍙ユ焺錛岀粰瀹氬璞$殑鍊煎瓧絎︿覆鏃訛紝榪斿洖鏁版嵁緇撴瀯寰寰鏄湭瀹氫箟鐨勫璞°備笉瑕佹劅鍒版儕璁訛紱榪欐槸姝e父鐨勩傚綋璋?strong>RegQueryValueEx鍑芥暟鏃訛紝you should always expect to walk the returned data structure to look for the requested object.
Windows NT: 闇瑕?.1鎴栨洿楂樼増鏈?br> Windows: 闇瑕乄indows 95鎴栨洿楂樼増鏈?br> Windows CE: 闇瑕?.0鎴栨洿楂樼増鏈?br> 澶存枃浠? winreg.h銆?br> 杈撳叆搴? advapi32.lib銆?br> Unicode: 鍦╓indows NT涓綔涓篣nicode鎴朅NSI鎵ц銆?/p>
Registry Overview, Registry Functions, ExpandEnvironmentStrings, RegCreateKeyEx, RegEnumKey, RegEnumKeyEx, RegEnumValue, RegOpenKeyEx, RegQueryInfoKey, RegQueryValue
LONG RegOpenKeyEx( HKEY hKey, // 瑕佹墦寮涓婚敭鐨勫彞鏌?strong> LPCTSTR lpSubKey, // 瑕佹墦寮瀛愰敭鐨勫湴鍧鍚嶅瓧 DWORD ulOptions, // 淇濈暀 REGSAM samDesired, // 瀹夊叏瀛樺彇鎺╃爜 PHKEY phkResult // 瑕佹墦寮閿彞鏌勭殑鍦板潃);
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95鍜學(xué)indows 98: HKEY_DYN_DATA
鍊?/th> | 鍚剰 |
---|---|
KEY_ALL_ACCESS | 鐩稿綋浜嶬EY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, KEY_SET_VALUE鐨勭粍鍚堛?/td> |
KEY_CREATE_LINK | 鍏佽鏂板緩絎﹀彿榪炴帴銆?/td> |
KEY_CREATE_SUB_KEY | 鍏佽鏂板緩瀛愰敭銆?/td> |
KEY_ENUMERATE_SUB_KEYS | 鍏佽鍒椾婦瀛愰敭銆?/td> |
KEY_EXECUTE | 鍏佽璇繪搷浣溿?/td> |
KEY_NOTIFY | 鍏佽淇敼銆?/td> |
KEY_QUERY_VALUE | 鍏佽鏌ヨ瀛愰敭鏁版嵁銆?/td> |
KEY_READ | 鐩稿綋浜嶬EY_QUERY_VALUE錛孠EY_ENUMERATE_SUB_KEYS錛孠EY_NOTIFY鐨勭粍鍚?/td> |
KEY_SET_VALUE | 鍏佽璁劇疆瀛愰敭鏁版嵁 |
KEY_WRITE | 鐩稿綋浜嶬EY_SET_VALUE鍜孠EY_CREATE_SUB_KEY鐨勭粍鍚堛?/td> |
濡傛灉鍑芥暟鍙栧緱鎴愬姛錛岃繑鍥濫RROR_SUCCESS銆?/p>
濡傛灉鍑芥暟璋冪敤澶辮觸錛岃繑鍥炰竴涓潪闆剁殑閿欒浠g爜錛堝畾涔夊湪WINERROR.H鏂囦歡涓級(jí)銆備綘鍙互浣跨敤甯︽湁FORMAT_MESSAGE_FROM_SYSTEM鏍囪鐨?a href="file:///I:/鍗庡鑻變功嫻?緙栫▼璇█/VISUAL%20MSDN/娉ㄥ唽琛ㄦ搷浣?strings_0sdh.htm">FormatMessage鍑芥暟鏉ヨ幏寰椾竴涓敊璇殑鏅氭弿榪般?/p>
涓?strong>RegCreateKeyEx鍑芥暟涓嶅悓錛屽鏋滃湪娉ㄥ唽琛ㄤ腑鎸囧畾鐨勯敭涓嶅瓨鍦?strong>RegOpenKeyEx鍑芥暟涓嶄細(xì)鏂板緩鎸囧畾閿?
Windows NT: 闇瑕?/strong>3.1鎴栨洿楂樼増鏈?br> Windows: 闇瑕?/strong>Windows 95鎴栨洿楂樼増鏈?br> Windows CE: 闇瑕?/strong>1.0鎴栨洿楂樼増鏈?br> 澶存枃浠? winreg.h銆?br> 杈撳叆搴擄細(xì)advapi32.lib.
Unicode: Windows NT鐗堟湰涓綔涓篣nicode鍜孉NSI鎵ц銆?/p>
]]>
RegCreateKey鍑芥暟鏂板緩緇欏畾閿傚鏋滆繖涓敭鍦ㄦ敞鍐岃〃涓凡緇忓瓨鍦紝榪欎釜鍑芥暟鎵撳紑瀹冦傝繖涓嚱鏁頒笌Windows 3.1鍏煎銆傚熀浜嶹in32鐨勫簲鐢ㄧ▼搴忓簲璇ヤ嬌鐢?a href="file:///I:/鍗庡鑻變功嫻?緙栫▼璇█/VISUAL%20MSDN/娉ㄥ唽琛ㄦ搷浣?regapi_1woo.htm">RegCreateKeyEx鍑芥暟銆?
LONG RegCreateKey( HKEY hKey, // 瑕佹墦寮閿殑鍙ユ焺 LPCTSTR lpSubKey, // 瑕佹墦寮瀛愰敭鐨勫悕瀛楃殑鍦板潃 PHKEY phkResult // 宸叉墦寮鍙ユ焺鐨勭紦瀛樺尯鐨勫湴鍧);
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT: HKEY_PERFORMANCE_DATA
Windows 95鍜學(xué)indows 98: HKEY_DYN_DATA
琚?strong>RegCreateKey鎵撳紑鎴栨柊寤虹殑鏄hKey璇嗗埆鐨勯敭鐨勫瓙閿?
濡傛灉hKey鏄凡紜畾淇濈暀鍙ユ焺鍊間箣涓錛?em>lpSubKey鍙互涓篘ULL銆傚湪榪欑鎯呭艦涓嬶紝鍑芥暟phkResult榪斿洖涓庤浼犻掔浉鍚岀殑鍙ユ焺銆?
濡傛灉璋冪敤鎴愬姛錛岃繑鍥濫RROR_SUCCESS銆?/p>
濡傛灉璋冪敤澶辮觸錛岃繑鍥炰竴涓潪闆墮敊璇爜錛堝畾涔夊湪WINERROR.H錛夈備綘鍙互浣跨敤甯︽湁FORMAT_MESSAGE_FROM_SYSTEM鏍囪鐨?a href="file:///I:/鍗庡鑻變功嫻?緙栫▼璇█/VISUAL%20MSDN/娉ㄥ唽琛ㄦ搷浣?strings_0sdh.htm">FormatMessage鍑芥暟鑾峰緱鏅氶敊璇弿榪頒俊鎭?/p>
涓涓簲鐢ㄧ▼搴忓彲浠ヤ嬌鐢?strong>RegCreateKey鍑芥暟涓嬈℃柊寤哄崟鐙敭銆傚錛屼竴涓簲鐢ㄧ▼搴忓彲浠ュ湪鍏變竴鏃墮棿鏂板緩涓涓洓綰у瓙閿紙鍖呮嫭緇欏畾閿墠闈㈢殑涓夌駭錛夎薄浠ヤ笅鐨?em>lpSubKey鍙傛暟瀛楃涓詫細(xì)
subkey1subkey2subkey3subkey4
榪欎釜鑳借hKey鍙傛暟璇嗗埆鐨勯敭蹇呴』琚甫鏈塊EY_CREATE_SUB_KEY瀛樺彇鏉冮檺鎵撳紑錛圞EY_WRITE瀛樺彇鏉冮檺鍖呮嫭KEY_CREATE_SUB_KEY瀛樺彇鏉冮檺錛夈?
濡傛灉lpSubKey鍙傛暟鏄竴涓┖瀛楃涓茬殑鍦板潃錛屽嚱鏁版墦寮騫朵紶閫掕兘琚?em>hKey鍙傛暟璇嗗埆鐨勯敭銆?/p>
Windows NT: 闇瑕?.1鎴栨洿楂樼増鏈?br> Windows: 闇瑕乄indows 95鎴栨洿楂樼増鏈?br> Windows CE: 涓嶆敮鎸併?br> 鏂囦歡澶? winreg.h
杈撳叆搴? advapi32.lib.
Unicode: 鍦╓indows NT涓綔涓篣nicode鍜孉NSI鎵ц銆?br>
閰辮彍Pickle<sunraiing@yahoo.com> 14:39:38
pThreadClass
The RUNTIME_CLASS of an object derived from CWinThread.
pParam
Parameter to be passed to the controlling function as shown in the parameter to the function declaration in pfnThreadProc.
nPriority
The desired priority of the thread. If 0, the same priority as the creating thread will be used. For a full list and description of the available priorities, see SetThreadPriority in the Platform SDK.
nStackSize
Specifies the size in bytes of the stack for the new thread. If 0, the stack size defaults to the same size stack as the creating thread.
dwCreateFlags
Specifies an additional flag that controls the creation of the thread. This flag can contain one of two values:
CREATE_SUSPENDED Start the thread with a suspend count of one. Use CREATE_SUSPENDED if you want to initialize any member data of the CWinThread object, such as m_bAutoDelete or any members of your derived class, before the thread starts running. Once your initialization is complete, use CWinThread::ResumeThread to start the thread running. The thread will not execute until CWinThread::ResumeThread is called.
0 Start the thread immediately after creation.
lpSecurityAttrs
Points to a SECURITY_ATTRIBUTES structure that specifies the security attributes for the thread. If NULL, the same security attributes as the creating thread will be used. For more information on this structure, see the Platform SDK.
閰辮彍Pickle<sunraiing@yahoo.com> 14:41:06
CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UNT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);//鐢ㄤ簬鍒涘緩宸ヤ綔鑰呯嚎紼?/p>
榪斿洖鍊? 涓涓寚鍚戞柊綰跨▼鐨勭嚎紼嬪璞?br>pfnThreadProc : 綰跨▼鐨勫叆鍙e嚱鏁?澹版槑涓瀹氳濡備笅: UINT MyThreadFunction( LPVOID pParam );
pParam : 浼犻掑叆綰跨▼鐨勫弬鏁?娉ㄦ剰瀹冪殑綾誨瀷涓?LPVOID,鎵浠ユ垜浠彲浠ヤ紶閫掍竴涓粨鏋勪綋鍏ョ嚎紼?
nPriority : 綰跨▼鐨勪紭鍏堢駭,涓鑸緗負(fù) 0 .璁╁畠鍜屼富綰跨▼鍏鋒湁鍏卞悓鐨勪紭鍏堢駭.
nStackSize : 鎸囧畾鏂板垱寤虹殑綰跨▼鐨勬爤鐨勫ぇ灝?濡傛灉涓?0,鏂板垱寤虹殑綰跨▼鍏鋒湁鍜屼富綰跨▼涓鏍風(fēng)殑澶у皬鐨勬爤
dwCreateFlags : 鎸囧畾鍒涘緩綰跨▼浠ュ悗,綰跨▼鏈夋庝箞鏍風(fēng)殑鏍囧織.鍙互鎸囧畾涓や釜鍊?
CREATE_SUSPENDED : 綰跨▼鍒涘緩浠ュ悗,浼?xì)澶勪簬鎸傝碉L(fēng)姸鎬?鐪熷埌璋冪敤: ResumeThread
0 : 鍒涘緩綰跨▼鍚庡氨寮濮嬭繍琛?
• | They process all input messages before performing background processing, providing good response to user input. |
• | The application "idles" (waits for an input message) when no background processing needs to be done. |
// Improved PeekMessage() loop
for(;;)
{
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
return TRUE;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if (IfBackgroundProcessingRequired())
BackgroundProcessing();
else
WaitMessage(); // Will not return until a message is posted.
}
Improved PeekMessage Loop 2
// Another improved PeekMessage() loop
for (;;)
{
for (;;)
{
if (IfBackgroundProcessingRequired())
{
if (!PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
break;
}
else
GetMessage(&msg, NULL, 0, 0, 0);
if (msg.message == WM_QUIT)
return TRUE;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
BackgroundProcessing();
}
Note that calls to functions such as IsDialogMessage() and TranslateAccelerator() can be added to these loops as appropriate.
There is one case in which the loops above need additional support: if the application waits for input from a device (for example, a fax board) that does not send standard Windows messages. For the reasons outlined above, a Windows-based application should not use a PeekMessage() loop to continuously poll the device. Rather, implement an Interrupt Service Routine (ISR) in a Dynamic-Link Library (DLL). When the ISR is called, the DLL can use the PostMessage function to inform the application that the device requires service. DLL functions can safely call the PostMessage() function because the PostMessage() function is reentrant.