锘??xml version="1.0" encoding="utf-8" standalone="yes"?>午夜欧美视频,亚洲在线第一页,亚洲国产成人精品久久http://m.shnenglu.com/cppblog/category/2192.html鏃?闄?椋?鍏?灝?鍦?鎴?蹇?寮?鍧?/description>zh-cnTue, 20 May 2008 00:29:33 GMTTue, 20 May 2008 00:29:33 GMT60銆奦C++鍔ㄦ侀摼鎺ュ簱娣卞叆嫻呭嚭銆嬪涔犵瑪璁頒箣Non-MFC DLL(闈?MFC 鍔ㄦ佸簱)http://m.shnenglu.com/cppblog/archive/2007/02/05/18356.html娼滈緳灞?/dc:creator>娼滈緳灞?/author>Mon, 05 Feb 2007 12:20:00 GMThttp://m.shnenglu.com/cppblog/archive/2007/02/05/18356.htmlhttp://m.shnenglu.com/cppblog/comments/18356.htmlhttp://m.shnenglu.com/cppblog/archive/2007/02/05/18356.html#Feedback0http://m.shnenglu.com/cppblog/comments/commentRss/18356.htmlhttp://m.shnenglu.com/cppblog/services/trackbacks/18356.html闈欐侀摼鎺ュ簱涓庡姩鎬侀摼鎺ュ簱鎬諱綋鍖哄埆錛?br />聽
聽聽聽聽聽聽聽 闈欐侀摼鎺ュ簱涓庡姩鎬侀摼鎺ュ簱閮芥槸鍏變韓浠g爜鐨勬柟寮忥紝濡傛灉閲囩敤闈欐侀摼鎺ュ簱錛屽垯鏃犺浣犳効涓嶆効鎰忥紝lib 涓殑鎸囦護閮藉叏閮ㄨ鐩存帴鍖呭惈鍦ㄦ渶緇堢敓鎴愮殑 EXE 鏂囦歡涓簡銆備絾鏄嫢浣跨敤 DLL錛岃 DLL 涓嶅繀琚寘鍚湪鏈緇?EXE 鏂囦歡涓紝EXE 鏂囦歡鎵ц鏃跺彲浠モ滃姩鎬佲濆湴寮曠敤鍜屽嵏杞借繖涓笌 EXE 鐙珛鐨?DLL 鏂囦歡銆傞潤鎬侀摼鎺ュ簱鍜屽姩鎬侀摼鎺ュ簱鐨勫彟澶栦竴涓尯鍒湪浜庨潤鎬侀摼鎺ュ簱涓笉鑳藉啀鍖呭惈鍏朵粬鐨勫姩鎬侀摼鎺ュ簱鎴栬呴潤鎬佸簱錛岃屽湪鍔ㄦ侀摼鎺ュ簱涓繕鍙互鍐嶅寘鍚叾浠栫殑鍔ㄦ佹垨闈欐侀摼鎺ュ簱銆傞潤鎬侀摼鎺ュ簱涓庨潤鎬侀摼鎺ュ簱璋冪敤瑙勫垯鎬諱綋姣旇緝濡備笅銆?/p>

瀵逛簬闈欐侀摼鎺ュ簱(姣旇緝綆鍗?錛?br />棣栧厛錛岄潤鎬侀摼鎺ュ簱鐨勪嬌鐢ㄩ渶瑕佸簱鐨勫紑鍙戣呮彁渚涚敓鎴愬簱鐨?h澶存枃浠跺拰.lib鏂囦歡銆?br />
鐢熸垚搴撶殑.h澶存枃浠朵腑鐨勫0鏄庢牸寮忓涓嬶細
extern "C" 鍑芥暟榪斿洖綾誨瀷 鍑芥暟鍚?鍙傛暟琛?;
鍦ㄨ皟鐢ㄧ▼搴忕殑.cpp婧愪唬鐮佹枃浠朵腑濡備笅錛?br />#include "..\lib.h"
#pragma comment(lib,"..\\debug\\libTest.lib")
//鎸囧畾涓庨潤鎬佸簱涓璧烽摼鎺?br />
絎簩錛屽洜涓洪潤鎬侀摼鎺ュ簱鏄皢鍏ㄩ儴鎸囦護閮藉寘鍚叆璋冪敤紼嬪簭鐢熸垚鐨凟XE鏂囦歡涓傚洜姝ゅ鏋滅敤鐨勬槸闈欐侀摼鎺ュ簱錛岄偅涔堜篃灝變笉瀛樺湪鈥滃鍑烘煇涓嚱鏁版彁渚涚粰鐢ㄦ埛浣跨敤鈥濈殑鎯呭喌錛岃鎯崇敤灝卞緱鍏ㄨ錛佽涓嶅氨閮藉埆瑕侊紒:)

瀵逛簬鍔ㄦ侀摼鎺ュ簱錛?br />鍔ㄦ侀摼鎺ュ簱鐨勪嬌鐢ㄩ渶瑕佸簱鐨勫紑鍙戣呮彁渚涚敓鎴愮殑.lib鏂囦歡鍜?dll鏂囦歡銆傛垨鑰呭彧鎻愪緵dll鏂囦歡銆?br />棣栧厛鎴戜滑蹇呴』鍏堟敞鎰忓埌DLL鍐呯殑鍑芥暟鍒嗕負涓ょ錛?
(1)DLL 瀵煎嚭鍑芥暟錛屽彲渚涘簲鐢ㄧ▼搴忚皟鐢紱
(2)DLL 鍐呴儴鍑芥暟錛屽彧鑳藉湪 DLL 紼嬪簭浣跨敤錛屽簲鐢ㄧ▼搴忔棤娉曡皟鐢ㄥ畠浠?br />鍥犳璋冪敤紼嬪簭鑻ユ兂璋冪敤DLL涓殑鏌愪釜鍑芥暟灝辮浠ユ煇縐嶅艦寮忔垨鏂瑰紡鎸囨槑瀹冨埌搴曟兂璋冪敤鍝竴涓嚱鏁般?/p>

鍥犳榪欓噷琛嶇敓鍑轟袱涓棶棰橈細
絎竴錛氬浣曡皟鐢紵鍗寵皟鐢ㄧ殑鏂瑰紡
絎簩錛氫笉鍚岃皟鐢ㄦ柟寮忓搴旂殑搴撶殑鐢熸垚榪囩▼鍜岃皟鐢ㄨ鍒?/p>

鎴戦愭灞曞紑闂銆?br />絎竴錛屽瓨鍦ㄤ袱縐嶈皟鐢ㄦ柟寮忊斺斿姩鎬佽皟鐢ㄥ拰闈欐佽皟鐢?br />絎簩錛屼袱縐嶈皟鐢ㄦ柟寮忕殑搴撶殑鐢熸垚榪囩▼鍜岃皟鐢ㄨ鍒?br />1銆夊姩鎬佽皟鐢?br />
鐢熸垚搴撶殑.h澶存枃浠朵腑鐨勫0鏄庢牸寮忓涓嬶細
extern "C" 鍑芥暟榪斿洖綾誨瀷 __declspec(dllexport) 鍑芥暟鍚?鍙傛暟琛?;
鍦ㄨ皟鐢ㄧ▼搴忕殑.cpp婧愪唬鐮佹枃浠朵腑鎸夊涓嬫祦紼嬭皟鐢細
鍦╩ain鍑芥暟浠g爜鐨勫紑濮嬪
瀹氫箟闇瑕佺殑DLL妯″潡鐨勫彞鏌勫拰姝LL妯″潡妯″潡涓渶瑕佽皟鐢ㄧ殑鍑芥暟鐨勫嚱鏁版寚閽堛?br />瀹氫箟濂藉悗绱ф帴鐫灝辨槸鏍囧噯鐨勪笁閮ㄦ洸錛?br />鍙栧緱闇瑕佺殑DLL妯″潡------>榪斿洖妯″潡鍙ユ焺
LoadLibrary("DLL妯″潡璺緞")
鍙栧緱闇瑕佺殑鍑芥暟鍦板潃鈥斺斺?gt;榪斿洖鍑芥暟鎸囬拡GetProcAddress(妯″潡鍙ユ焺錛?鍑芥暟鍚?)
浠庡唴瀛樹腑鍗歌澆DLL妯″潡鈥斺斺?gt;FreeLibrary(妯″潡鍙ユ焺)
2>闈欐佽皟鐢?br />鍦ㄨ皟鐢ㄧ▼搴忕殑.cpp婧愪唬鐮佹枃浠朵腑鎸夊涓嬫祦紼嬭皟鐢細
#include.........
鍛婅瘔緙栬瘧鍣ㄤ笌 DLL 鐩稿搴旂殑.lib 鏂囦歡鎵鍦ㄧ殑璺緞鍙婃枃浠跺悕
#pragma comment(lib,"璺緞鍜屾枃浠跺悕")
extern "C" 鍑芥暟榪斿洖綾誨瀷 _declspec(dllimport) 鍑芥暟鍚?鍙傛暟琛?鍒嗗彿
int main()
{
..............
}
鏈畬錛屽緟緇?......



]]>
杞創錛歏C++涓浜庡鐞嗘秷鎭殑瀛︿範鎬葷粨http://m.shnenglu.com/cppblog/archive/2006/07/20/10248.html娼滈緳灞?/dc:creator>娼滈緳灞?/author>Thu, 20 Jul 2006 03:25:00 GMThttp://m.shnenglu.com/cppblog/archive/2006/07/20/10248.htmlhttp://m.shnenglu.com/cppblog/comments/10248.htmlhttp://m.shnenglu.com/cppblog/archive/2006/07/20/10248.html#Feedback0http://m.shnenglu.com/cppblog/comments/commentRss/10248.htmlhttp://m.shnenglu.com/cppblog/services/trackbacks/10248.htmlMessage Map

struct AFX_MSGMAP //娑堟伅鏄犲皠琛?br />{
AFX_MSGMAP* pBaseMessageMap; //鍩虹被娑堟伅鏄犲皠琛ㄧ殑鎸囬拡錛?br />AFX_MSGMAP_ENTRY* lpEntries; //娑堟伅鍏ュ彛琛ㄧ殑鎸囬拡錛?br />};

struct AFX_MSGMAP_ENTRY //娑堟伅鏄犲皠鍏ュ彛琛?br />{
UINT nMessage; //娑堟伅錛?br />UINT nCode; //鎺т歡鐨勯氱煡鐮佹垨WM_NOTIFY鐨勯氱煡鐮?br />UINT nID; //鎺т歡鐨処D錛?0鏃朵負 Window 娑堟伅)
UINT nLastID; //鏈鍚庝竴涓帶浠剁殑ID錛?br />UINT nSig; //淇″彿綾誨瀷錛?br />AFX_PMSG pfn; //娑堟伅鍑芥暟鐨勬寚閽堬紱
};

typedef void (CCmdTarget::*AFX_PMSG)(void); //娑堟伅鏄犲皠鍑芥暟錛?/p>

涓銆佹秷鎭槧灝勫浘
1銆丏ECLARE_MESSAGE_MAP()
灞曞紑錛?br />static AFX_MSGMAP_ENTRY _messageEntries[] //娑堟伅鏄犲皠鍏ュ彛琛?
static AFX_MSGMAP messageMap錛?//娑堟伅鏄犲皠琛紱
virtual AFX_MSGMAP* GetMessageMap() const錛?/榪斿洖娑堟伅鏄犲皠 琛ㄧ殑鎸囬拡錛?/p>

2銆丅EGIN_MESSAGE_MAP(class_name,base_class_name)
鈶犮佸畾涔塆etMessageMap()鍑芥暟錛屼唬鐮佸涓嬶細
{ return &class_name::messageMap錛泒
鈶°佸垵濮嬪寲娑堟伅鏄犲皠琛紝浠g爜濡備笅錛?br />AFX_MSGMAP class_name::messageMap={
&(base_class_name::messageMap)錛?br />&(class_name::_messageEntries)
}
鈶€佸垵濮嬪寲娑堟伅鍏ュ彛琛?br />AFX_MSGMAP_ENTRY class_name::_messageEntries[]={
//鍦ㄨ繖閲屾坊鍔犳秷鎭拰鏄犲皠鍑芥暟錛?/p>

3銆丒ND_MESSAGE_MAP()
{0,0,0,0,AfxSig_end,(AFX_PMSG)0}
} 錛?//璇ユ嫭鍙峰拰鈶㈢浉瀵瑰簲錛?/p>


浜屻佹秷鎭被鍨?br />1銆佸懡浠ゆ秷鎭?WM_COMMAND)
鎵鏈夋淳鐢熻嚜 CCmdTarget 鐨勭被閮芥湁璧勬牸鎺ュ彈WM_COMMAND銆?/p>

2銆乄indow娑堟伅(WM_xxx)
鎵鏈夋淳鐢熻嚜 CWnd 鐨勭被閮芥湁璧勬牸鎺ュ彈 WM_xxx銆?/p>

3銆佹帶浠舵秷鎭?WM_NOTIFY)
鎺т歡鍚戝叾鐖剁獥鍙i氱煡娑堟伅銆?/p>

涓夈佹秷鎭鐞?br />1銆乄M_xxx 娑堟伅澶勭悊
紿楀彛綾?鑷韓)澶勭悊鈫掑熀綾誨鐞嗏啋CWnd鈭稤efWindowProc()澶勭悊錛?br />鍏舵墍瀵瑰簲鐨勫畯涓鑸負鍦ㄦ秷鎭?WM_ 鍓嶉潰鍔犱笂 ON_銆?/p>

2銆佸懡浠ゆ秷鎭鐞?br />鍛戒護娑堟伅鏉ヨ嚜鍛戒護鐢ㄦ埛鎺ュ彛瀵硅薄(鑿滃崟銆佸姞閫熼敭鎴栧伐鍏鋒爮鎸夐挳)鍙戝嚭鐨刉M_COMMAND娑堟伅錛?br />銏犮乄M_COMMAND娑堟伅
鍏舵墍鍖呭惈鐨勭被鍨嬪拰瀵瑰簲鐨勫畯濡備笅錛?br />鈶犮丱N_COMMAND(ID,pfn)
鏍囧噯鐨勫懡浠ゆ秷鎭紱

鈶°丱N_COMMAND_EX(ID,pfn)
澶氫釜瀵硅薄瀵瑰悓涓涓懡浠?ID 鐨勫鐞嗭紱
鍏跺嚱鏁扮殑鍘熷瀷濡備笅錛?br />afx_msg BOOL pfn(UINT nID)
璇存槑錛?br />褰撹繑鍥?TRUE 鏃惰〃紺哄凡緇忓鐞嗭紝涓嶇敤鍦ㄦ秷鎭鐞嗛摼涓戶緇鐞嗚鍛戒護錛涗負 FALSE 鏃惰〃紺虹戶緇湪娑堟伅澶勭悊閾句腑澶勭悊璇ュ懡浠ゃ?br />娉ㄦ剰錛?br />鍏朵竴錛氬湪澶氬璞″鐞嗕腑涓瀹氳浣跨敤璇ュ畯錛?br />鍏朵簩錛歱fn(UINT nID)(娑堟伅澶勭悊鍑芥暟)榪斿洖鍊煎皢鍏剁被鍨媣oid鏀規垚BOOL錛岃屼笖蹇呴』涓篎ALSE錛?br />鍏朵笁錛氬涓璞$殑澶勭悊鏄敱楂樺眰鍚戜綆灞傜殑榪囩▼錛氬嵆瑙嗗浘綾燴啋涓繪鏋剁獥鍙g被鈫掑簲鐢ㄧ▼搴忕被錛?/p>

鈶€丱N_COMMAND_RANGE(nID,nLastID,pfn)
澶氫釜鍛戒護 ID 鎻愪緵鐩稿悓鐨勫鐞嗭紱
娉ㄦ剰錛?br />鍏朵竴錛氱‘淇漬ID銆乶LastID鐨勫煎湪 Resource.h 涓槸榪炵畫鐨勩?br />鍏朵簩錛氫竴鑸湪鍑芥暟 pfn(UINT nID) 涓姞鍏ュ弬鏁幫紝鐢ㄦ潵紜畾閭d竴涓寜閽偣鍑匯?/p>

銏°丆N_UPDATE_COMMAND_UI娑堟伅
褰撹彍鍗曢」銆佸伐鍏鋒爮鎸夐挳絳塠鍛戒護鐢ㄦ埛鎺ュ彛瀵硅薄]瑕佹洿鏂板叾鐘舵佹椂鎵瀵瑰簲鐨勬秷鎭紝瀹冩墍鍖呭惈鐨勭被鍨嬪拰瀵瑰簲鐨勫畯濡備笅錛?br />鈶犮丱N_UPDATE_COMMAND_UI(ID,pfn)
鍏朵腑鍑芥暟鐨勫師鍨嬪涓嬶細
afx_msg void pfn(CCmdUI* pCmdUI)

鈶°丱N_UPDATE_COMMAND_UI_RANGE(nID,nLastID,pfn)
璇ュ嚱鏁板彲浠ュ鐞嗕竴緇刐鍛戒護鐢ㄦ埛鎺ュ彛瀵硅薄]鐨勫瑙傦紱
鍏朵腑鍑芥暟鐨勫師鍨嬪涓嬶細
afx_msg void pfn(CCmdUI* pCmdUI)
閲嶈錛?br />CCmdUI 涓殑 m_nID 鎴愬憳琛ㄧず涓嶅悓鐨?ID錛屽洜姝ゅ彲浠ュ埄鐢ㄥ畠鏉ヨ繘琛屽尯鍒鐞嗐?/p>

3銆佹帶浠剁殑閫氱煡娑堟伅
浠庢帶浠跺拰瀛愮獥鍙e彂閫佸埌鐖剁獥鍙g殑WM_COMMAND閫氱煡娑堟伅(鍗沖湪鍙戦佸懡浠ゆ秷鎭腑鍔犲叆鎺т歡鐨勯氱煡鐮?銆?br />娉ㄦ剰錛氬湪 Window9x 鏂版帶浠朵腑涓嶅啀浼犻乄M_COMMAND閫氱煡娑堟伅錛岃屾槸鍙戦?WM_NOTIFY 娑堟伅錛屼絾涓轟簡鍏煎錛屾棫鏈夌殑鎺т歡榪樻槸浼犻乄M_COMMAND娑堟伅銆?br />渚嬪錛?br />CEdit鎺т歡鍚戠埗紿楀彛鍙戦?EN_CHANGE 閫氱煡浠g爜鐨刉M_COMMAND娑堟伅銆?br />娉ㄦ剰錛氭鏋跺儚浼犻佸叾瀹?WM_ 娑堟伅涓鏍蜂紶閫侀氱煡娑堟伅錛屼絾鏈変竴涓緥澶栵紝鍗崇敱 [鎸夐挳] 鎺т歡鍙戦佺殑 BN_CLICKED 閫氱煡娑堟伅錛岃浣滀負鍛戒護娑堟伅鐗瑰埆澶勭悊銆?br />銏犮乄M_COMMAND 鍏舵墍瀵瑰簲鐨勫畯濡備笅錛?br />鈶犮丱N_CONTROL(閫氱煡鐮? nID,fn)
鈶°丱N_CONTROL_RANGE(閫氱煡鐮? nFirstID,nEndID,fn)
娉ㄦ剰錛?br />榪欎袱涓畯鐨勫簲鐢ㄥ拰 ON_COMMAND銆丱N_COMMAND_RANGE鐩稿悓錛屾墍涓嶅悓鐨勬槸鍦ㄥ畯鍓嶉潰鍔犲叆[閫氱煡鐮乚銆?br />娉ㄦ剰錛氬彲浠ユ牴鎹笉鍚岀殑鎺т歡鐨刐閫氱煡鐮乚媧劇敓鍑虹壒瀹氱殑瀹忥紝鍏舵墍媧劇敓鐨勫畯涓鑸負鍦?[閫氱煡鐮乚 鍓嶉潰鍔犱笂 ON_銆?br />銏°乄M_NOTIFY 鍏舵墍瀵瑰簲鐨勫畯濡備笅錛?br />鈶犮丱N_NOTIFY(閫氱煡鐮? nID,fn)
鍏朵腑鍑芥暟鐨勫師鍨嬪涓嬶細
afx_msg void fn(NMHDR* pNotifyStruct,LRESULT* result)
鍏朵腑緇撴瀯錛?br />typedef struct tagNMHDR {
HWND hwndFrom; //鍙戦侀氱煡娑堟伅鐨勬帶浠剁殑鍙ユ焺錛?br />UINT idFrom; //鍙戦侀氱煡娑堟伅鐨勬帶浠剁殑 ID錛?br />UINT code; //閫氱煡鐮侊紱
} NMHDR;

鈶°丱N_NOTIFY_EX(閫氱煡鐮? nID,fn)
琛ㄧず涓涓秷鎭湪澶氫釜瀵硅薄鐨勬垚鍛樺嚱鏁頒腑榪涜澶勭悊銆?br />鍏朵腑鍑芥暟鐨勫師鍨嬪涓嬶細
afx_msg BOOL fn(UINT nID,NMHDR* pNotifyStruct,LRESULT* result)
璇存槑錛?br />瀹冨繀欏昏繑鍥?BOOL 綾誨瀷鐨勬暟鍊鹼紝鍏舵剰涔夊拰 ON_COMMAND_EX 鐩稿悓銆?/p>

鈶€丱N_NOTIFY_RANGE(閫氱煡鐮? nFirstID,nEnd,fn)
琛ㄧず澶氫釜鎺т歡鐨勯氱煡娑堟伅鍦ㄥ悓涓涓嚱鏁頒腑榪涜澶勭悊銆?br />鍏朵腑鍑芥暟鐨勫師鍨嬪涓嬶細
afx_msg void fn(UINT nID,NMHDR* pNotifyStruct,LRESULT* result)
璇存槑錛?br />鍏舵剰涔夊拰ON_COMMAND_RANGE鐩稿悓銆?/p>

4銆佸弽灝勬秷鎭鐞?br />鐖剁獥鍙e湪澶勭悊鎺т歡紿楀彛鐨勯氱煡娑堟伅WM_CTLCOLOR銆乄M_COMMAND銆乄M_NOTIFY鏃訛紝浼氭妸璇ユ秷鎭漿鍖栦負鍙嶅皠娑堟伅錛屽茍杞氦緇欐帶浠跺瓙紿楀彛澶勭悊錛屽彧鏈夊湪鎺т歡瀛愮獥浣撲笉澶勭悊璇ユ秷鎭椂錛岀埗紿楀彛鎵嶆湁鏈轟細澶勭悊銆?br />娉ㄦ剰錛氬湪綾葷殑灞炴у璇濇涓殑娑堟伅欏甸潰鍙煡鍙嶅皠娑堟伅(鍓嶉潰鏈?="鏍囧織)
鈶犮乄M_CTLCOLOR_REFLECT鍙嶅皠娑堟伅
鍏舵墍瀵瑰簲鐨勫畯濡備笅錛?br />ON_WM_CTLCOLOR_REFLECT()
鍙嶅皠娑堟伅鍑芥暟鐨勫師鍨嬶細
HBRUSH class_name鈭稢tlColor(CDC* pDC,UINT nCtlColor)
{
return NULL;
}
璇ュ嚱鏁扮敤鏉ラ噸緗帶浠剁殑欏旇壊錛涙敞鎰忥細蹇呴』 return CBrush鎵嶆湁鏁堛?/p>


5銆佽嚜瀹氫箟鐨勭獥鍙f秷鎭?br />鑷畾涔夌獥鍙f秷鎭殑娑堟伅鏍囧織閮藉ぇ浜嶹M_USER(鑷沖皯鏄疻M_USER+100錛屽洜涓鴻澶氭帶浠墮兘浣跨敤榪欎竴鑼冨洿鐨刉M_USER娑堟伅)
浣跨敤鑷畾涔夌殑娑堟伅鍒嗕負浜屾錛?br />鈶犮佸湪 Resource.h 涓畾涔夋秷鎭爣璁?br />#define WM_MYMSG (WM_USER+1000)

鈶°佸湪娑堟伅鏄犲皠琛ㄤ腑鍔犲叆娑堟伅鏄犲皠瀹?br />BEGIN_MESSAGE_MAP()

ON_MESSAGE(WM_MYMSG,fn)
END_MESSAGE_MAP()
璇存槑錛?br />鍏跺搴旂殑瀹忎負 ON_MESSAGE()錛屽叾鎴愬憳鍑芥暟鐨勫師鍨嬩負錛?br />afx_msg LRESULT fn(WPARAM,LPARAM)

6銆佺櫥璁版秷鎭?br />鈶犮佸湪緋葷粺涓敞鍐屽茍鑾峰彇涓涓櫥璁版秷鎭殑娑堟伅鏍囪
UINT RegisterWindowMessage(LPCTSTR)
璇存槑錛?br />閫氳繃 API 鍑芥暟鏉ユ敞鍐屾秷鎭爣璁幫紝鍏朵腑 LPCTSTR 涓虹敤鎴風殑浠繪剰瀛楃涓層備緥濡傦細
UINT WM_MYMSG=RegisterWindowMessage("MYMSG");
鍏朵腑 WM_MYMSG 鏄嚜瀹氫箟鏃犵鍙鋒暣鍨嬬殑娑堟伅鏍囪銆?/p>

鈶°佸湪娑堟伅鏄犲皠琛ㄤ腑鍔犲叆娑堟伅鏄犲皠瀹?br />BEGIN_MESSAGE_MAP()

ON_REGISTERED_MESSAGE(WM_MYMSG,fn)
END_MESSAGE_MAP()
璇存槑錛?br />鍏跺搴旂殑瀹忎負 ON_REGISTERED_MESSAGE()錛屽叾鎴愬憳鍑芥暟鐨勫師鍨嬩負錛?br />afx_msg LRESULT fn(WPARAM,LPARAM)
娉ㄦ剰錛氱櫥璁版秷鎭彲浠ュ疄鐜拌法榪涚▼鐨勬暟鎹氳銆?/p>

7銆佺嚎紼嬫秷鎭?br />鍙湁緇ф壙鑷狢WinThread綾繪墠鑳藉厑璁稿鐞嗙嚎紼嬫秷鎭?br />鈶犮佸畾涔夌嚎紼嬬殑娑堟伅鏍囪
鏈変袱縐嶆柟娉曪細
(1)銆佷嬌鐢ㄨ嚜瀹氫箟鐨勬秷鎭爣璁幫紝鍗籌細WM_USER錛?br />(2)銆佷嬌鐢ㄧ櫥璁扮殑娑堟伅鏍囪錛屽嵆錛歊egisterWindowMessage錛?/p>

鈶°佸湪CWinThread緇ф壙綾葷殑娑堟伅鏄犲皠琛ㄤ腑娣誨姞瀹?br />ON_THREAD_MESSAGE(娑堟伅鏍囪,fn) //鑷畾涔夌殑娑堟伅錛?br />ON_REGISTERED_THREAD_MESSAGE(娑堟伅鏍囪,fn) //鐧昏鐨?//娑堟伅
鈶€佸叾鍑芥暟鐨勫師鍨嬪涓嬶細
afx_msg void fn(WPARAM wPARAM,LPARAM lParam)

鈶c佸紩鍙戠嚎紼嬫秷鎭?br />綰跨▼娑堟伅鐨勫紩鍙戝繀欏昏皟鐢?CWinThread 綾葷殑PostThreadMessage灝嗘秷鎭姇閫掑埌綰跨▼娑堟伅闃熷垪涓?br />娉ㄦ剰錛氬彲浠ラ氳繃 AfxGetApp() 鍑芥暟鑾峰彇涓涓叏灞鐨勫簲鐢ㄥ璞°?br />PostThreadMessage(UINT,WPARAM,LPARAM)

8銆乄M_COPYDATA
鎿嶄綔緋葷粺緇存姢涓鍧楀唴瀛樻潵綆$悊 WM_COPYDATA 娑堟伅錛岃娑堟伅涓昏鐢ㄤ簬璺ㄨ繘紼嬩紶閫掓暟鎹紝浼犻掔殑鏁版嵁閲忚揪鍒?232銆?br />鈶犮佸畾涔変竴涓?COPYDATASTRUCT 鏁版嵁緇撴瀯
typedef struct tagCOPYDATASTRUCT {
DWORD dwData; //鑷畾涔夌殑鐗規畩鏁版嵁錛?br />DWORD cbData; //浠ュ瓧鑺備負鍗曚綅鐨?lpData 鐨勫ぇ灝忥紱
PVOID lpData; //浼犻佺殑鏁版嵁鍐呭瓨鍧楃殑鎸囬拡錛?br />} COPYDATASTRUCT;

鈶°佸叾鎵瀵瑰簲鐨勫畯
ON_WM_COPYDATA()

鈶€佸叾鎵瀵瑰簲鐨勫嚱鏁扮殑鍘熷瀷
afx_msg BOOL OnCopyData(CWnd*,COPYDATASTRUCT*)
璇存槑錛?br />CWnd*錛氬彂閫佽娑堟伅鐨勭獥鍙g殑鎸囬拡錛?/p>


9銆佹姇閫掑拰鍙戦佹秷鎭?br />閫氳繃鍚戜竴涓獥浣撴姇閫掓垨鍙戦佹秷鎭紝鍙互闂存帴鍦伴┍鍔ㄧ獥浣撶殑娑堟伅榪囩▼銆?br />鎶曢?PostMessage)錛氬皢娑堟伅鏀懼埌綰跨▼鐨勬秷鎭槦鍒椾腑錛岀劧鍚庝笉絳夌嚎紼嬪鐞嗚娑堟伅灝辯洿鎺ヨ繑鍥炲埌璋冪敤鏂廣?br />鍙戦?SendMessage)錛氬綋涓涓嚎紼嬪悜鐩爣綰跨▼鍙戦佹秷鎭椂錛岃綰跨▼瑕佷竴鐩寸瓑寰咃紝鐩村埌鐩爣綰跨▼澶勭悊浜嗚娑堟伅涓烘銆?br />鈶犮佹姇閫掓秷鎭?br />BOOL CWnd鈭稰ostMessage(UINT,WPARAM=0,LPARAM=0)
璇存槑錛?br />CWnd錛氱洰鏍囩獥鍙o紱
璇ュ嚱鏁板皢涓鏉℃秷鎭斁鍏ュ埌搴旂敤紼嬪簭鐨勬秷鎭槦鍒楋紝鐒跺悗涓嶇瓑紿楀彛澶勭悊灝辯洿鎺ヨ繑鍥炪?/p>

鈶°佸彂閫佹秷鎭?br />LRESULT CWnd鈭稴endMessage(UINT,WPARAM=0,LPARAM=0)
璇存槑錛?br />CWnd錛氱洰鏍囩獥鍙o紱
璇ュ嚱鏁板皢涓鏉℃秷鎭斁鍏ュ埌搴旂敤紼嬪簭鐨勬秷鎭槦鍒楋紝絳夊緟紿楀彛澶勭悊鍚庢墠榪斿洖銆?br />涓轟簡閬垮厤綰跨▼闄峰叆姘鎬箙絳夊緟鐘舵侊紝鍙互鐢⊿endMessageTimeout浠f浛SendMessage錛?br />LRESULT SendMessageTimeout(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD_PTR)
璇存槑錛?br />HWND錛氱獥鍙e彞鏌勶紱
UINT錛氭秷鎭彂閫佺殑閫夐」錛屼負SMTO_BLOCK鏃訛紝鍙互闃叉綰跨▼鏃?闄愮瓑寰咃紝鍗蟲牴鎹竴瀹氱殑瓚呮椂鍊艱繑鍥炪?br />UINT錛氳秴鏃訛紝浠ユ縐掍負鍗曚綅錛?br />PDWORD_PTR錛氳繑鍥炲鹼紱
娉ㄦ剰錛欳Wnd娌℃湁瀵硅鍑芥暟鐨勫寘瑁呫?/p>

鈶€佹姇閫掑拰鍙戦佹秷鎭?br />BOOL CWnd鈭稴endNotifyMessage(UINT,WPARAM,LPARAM)
璇存槑錛?br />CWnd錛氱洰鏍囩獥鍙o紱
璇ユ秷鎭叿鏈塖endMessage鍜孭ostMessage涓ょ鍔熻兘錛?br />褰撶洰鏍囩獥鍙e拰鍙戦佺獥鍙d負鍚屼竴涓嚎紼嬫椂錛屽垯鐩稿綋浜嶴endMessage鐨勫姛鑳斤紱鍚﹀垯褰撲笉涓哄悓涓涓嚎紼嬫椂錛屽垯涓篜ostMessage鐨勫姛鑳姐?/p>

6-1銆佹姇閫掑拰鍙戦?WM_XXX 娑堟伅
鍦ㄥ彂閫佹爣鍑嗙殑 WINDOW 娑堟伅鏃訛紝鍙灝嗚娑堟伅鐨?ID銆亀Param銆乴Param鍙傛暟鏀懼湪 SendMessage()鍜孭ostMessage()鍑芥暟鐨勭浉搴斾綅緗嵆鍙?/p>

6-2銆佹姇閫掑拰鍙戦佸懡浠ゆ秷鎭拰鎺т歡鐨勯氱煡娑堟伅
鍦ㄦ姇閫掑拰鍙戦佸懡浠ゆ秷鎭椂錛屾秷鎭殑 ID涓?WM_COMMADN錛岃屽浜庝笉鍚岀殑鑿滃崟欏廣佸姞閫熼敭銆佹帶浠跺垯wParam銆乴Param鐨勫彇鍊間笉鍚屻?br />wParam鍒嗘垚浣庛侀珮涓ら儴鍒嗭紝浣庨儴鍒嗕負鑿滃崟欏廣佸姞閫熼敭銆佹帶浠剁殑ID銆傞珮閮ㄥ垎鍒欙細
鑿滃崟欏癸細0錛涘姞閫熼敭錛?錛涙帶浠訛細閫氱煡鐮?br />lParam錛氬綋鎺т歡鏃舵槸鎺т歡鐨勫彞鏌勶紝鍚﹀垯涓?NULL銆?/p>

瀵逛簬wParam鍙傛暟鍙互閲囩敤鑷畾涔夊畯錛?br />WPARAM MAKEWPARAM(WORD wLow,WORD wHigh)

6-3銆佹姇閫掑拰鍙戦佽嚜瀹氫箟鐨勭獥鍙f秷鎭?br />鍦ㄦ姇閫掑拰鍙戦佽嚜瀹氫箟鐨勭獥鍙f秷鎭椂錛屽弬鏁?wParam銆乴Param 娌℃湁鐗瑰埆鐨勬兜涔夛紝鍙拰鏅氬嚱鏁扮殑褰㈠弬涓鏍瘋繘琛屾暟鎹殑浼犻掋?br />娉ㄦ剰錛?br />PostMessage 鍜?SendMessage 鏄笉鍚岀殑錛屽墠鑰呮姇閫掑悗灝辮繑鍥烇紝鑰屽悗鑰呭繀欏葷瓑鍒版秷鎭鐞嗗悗鍐嶈繑鍥烇紱鎵浠ュ湪鍙傛暟鏄?[灞閮╙ 鎴?[涓存椂]鏃訛紝浣跨敤PostMessage鍑芥暟浼氬紩鍙戦敊璇?闄ら潪鍙傛暟浣跨敤 鎸囬拡錛屽垯鍙伩鍏嶉敊璇?錛岃屽繀欏諱嬌鐢⊿endMessage鍑芥暟銆?br />6-4銆佹姇閫掑拰鍙戦佹敞鍐岀殑紿楀彛娑堟伅
鍜?6-3 鍩烘湰涓鏍鳳紝浣嗗畠瑕佺壒鍒敞鎰忕殑闂鏄細鍦ㄨ法榪涚▼鐨勫鐞嗘秷鎭椂錛屽鏋滃皢娑堟伅PostMessage銆丼endMessage鍒版煇涓繘紼?A錛屽垯蹇呴』鍦ㄨ繘紼?B 涓幏鍙栬繘紼?A 鐨勭獥鍙g被鍚嶏紝騫墮氳繃紿楀彛綾誨悕鑾峰彇紿楀彛鐨勬寚閽堬紝鏈鍚庡啀鏍規嵁鎸囬拡璋冪敤 PostMessage銆丼endMessage 鍑芥暟銆?br />娉ㄦ剰錛氬湪鑾峰彇紿楀彛鐨勬寚閽堟椂錛屽彲浠ユ牴鎹獥鍙g被鍚嶆垨紿楀彛鐨勬爣棰樸?/p>


6-5銆佹姇閫掑拰鍙戦乄M_COPYDATA娑堟伅
SendMessage(娑堟伅鏍囪,WPARAM,LPARAM)
鍏朵腑錛?br />娑堟伅鏍囪錛歐M_COPYDATA錛?br />WPARAM錛氬彂閫佽娑堟伅鐨勭獥鍙e彞鏌勶紱
LPARAM錛欳OPYDATASTRUCT緇撴瀯鐨勬寚閽堬紝鍏堥氳繃(LPVOID)榪涜杞崲錛屽啀閫氳繃(LPARAM)榪涜杞崲錛屽涓嬪艦寮忥細
(LPARAM)(LPVOID)&cds



]]>
杞創錛歏C甯哥敤鏁版嵁綾誨瀷浣跨敤杞崲璇﹁Вhttp://m.shnenglu.com/cppblog/archive/2006/07/20/10247.html娼滈緳灞?/dc:creator>娼滈緳灞?/author>Thu, 20 Jul 2006 03:24:00 GMThttp://m.shnenglu.com/cppblog/archive/2006/07/20/10247.htmlhttp://m.shnenglu.com/cppblog/comments/10247.htmlhttp://m.shnenglu.com/cppblog/archive/2006/07/20/10247.html#Feedback0http://m.shnenglu.com/cppblog/comments/commentRss/10247.htmlhttp://m.shnenglu.com/cppblog/services/trackbacks/10247.html鎴戜滑鍏堝畾涔変竴浜涘父瑙佺被鍨嬪彉閲忓熶互璇存槑

int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="紼嬩僵鍚?;
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;

涓銆佸叾瀹冩暟鎹被鍨嬭漿鎹負瀛楃涓?


鐭暣鍨?int)
itoa(i,temp,10);///灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
itoa(i,temp,2); ///鎸変簩榪涘埗鏂瑰紡杞崲
闀挎暣鍨?long)
ltoa(l,temp,10);
嫻偣鏁?float,double)
鐢╢cvt鍙互瀹屾垚杞崲,榪欐槸MSDN涓殑渚嬪瓙:
int decimal, sign;
char *buffer;
double source = 3.1415926535;
buffer = _fcvt( source, 7, &decimal, &sign );
榪愯緇撴灉:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0
decimal琛ㄧず灝忔暟鐐圭殑浣嶇疆,sign琛ㄧず絎﹀彿:0涓烘鏁幫紝1涓鴻礋鏁?
CString鍙橀噺
str = "2008鍖椾含濂ヨ繍";
buf = (LPSTR)(LPCTSTR)str;
BSTR鍙橀噺
BSTR bstrValue = ::SysAllocString(L"紼嬪簭鍛?);
char * buf = _com_util::ConvertBSTRToString(bstrValue);
SysFreeString(bstrValue);
AfxMessageBox(buf);
delete(buf);
CComBSTR鍙橀噺
CComBSTR bstrVar("test");
char *buf = _com_util::ConvertBSTRToString(bstrVar.m_str);
AfxMessageBox(buf);
delete(buf);

_bstr_t鍙橀噺
_bstr_t綾誨瀷鏄BSTR鐨勫皝瑁咃紝鍥犱負宸茬粡閲嶈澆浜?鎿嶄綔絎︼紝鎵浠ュ緢瀹規槗浣跨敤
_bstr_t bstrVar("test");
const char *buf = bstrVar;///涓嶈淇敼buf涓殑鍐呭
AfxMessageBox(buf);


閫氱敤鏂規硶(閽堝闈濩OM鏁版嵁綾誨瀷)
鐢╯printf瀹屾垚杞崲
char聽 buffer[200];
char聽 c = '1';
int聽聽 i = 35;
long聽 j = 1000;
float f = 1.7320534f;
sprintf( buffer, "%c",c);
sprintf( buffer, "%d",i);
sprintf( buffer, "%d",j);
sprintf( buffer, "%f",f);

浜屻佸瓧絎︿覆杞崲涓哄叾瀹冩暟鎹被鍨?
strcpy(temp,"123");

鐭暣鍨?int)
i = atoi(temp);
闀挎暣鍨?long)
l = atol(temp);
嫻偣(double)
d = atof(temp);
CString鍙橀噺
CString name = temp;
BSTR鍙橀噺
BSTR bstrValue = ::SysAllocString(L"紼嬪簭鍛?);
...///瀹屾垚瀵筨strValue鐨勪嬌鐢?
SysFreeString(bstrValue);

CComBSTR鍙橀噺
CComBSTR綾誨瀷鍙橀噺鍙互鐩存帴璧嬪?
CComBSTR bstrVar1("test");
CComBSTR bstrVar2(temp);

_bstr_t鍙橀噺
_bstr_t綾誨瀷鐨勫彉閲忓彲浠ョ洿鎺ヨ祴鍊?
_bstr_t bstrVar1("test");
_bstr_t bstrVar2(temp);


涓夈佸叾瀹冩暟鎹被鍨嬭漿鎹㈠埌CString
浣跨敤CString鐨勬垚鍛樺嚱鏁癋ormat鏉ヨ漿鎹?渚嬪:


鏁存暟(int)
str.Format("%d",i);
嫻偣鏁?float)
str.Format("%f",i);
瀛楃涓叉寚閽?char *)絳夊凡緇忚CString鏋勯犲嚱鏁版敮鎸佺殑鏁版嵁綾誨瀷鍙互鐩存帴璧嬪?
str = username;
瀵逛簬Format鎵涓嶆敮鎸佺殑鏁版嵁綾誨瀷錛屽彲浠ラ氳繃涓婇潰鎵璇寸殑鍏充簬鍏跺畠鏁版嵁綾誨瀷杞寲鍒癱har *鐨勬柟娉曞厛杞埌char *錛岀劧鍚庤祴鍊肩粰CString鍙橀噺銆?

鍥涖丅STR銆乢bstr_t涓嶤ComBSTR


CComBSTR 鏄疉TL瀵笲STR鐨勫皝瑁咃紝_bstr_t鏄疌++瀵笲STR鐨勫皝瑁?BSTR鏄?2浣嶆寚閽?浣嗗茍涓嶇洿鎺ユ寚鍚戝瓧涓茬殑緙撳啿鍖恒?
char *杞崲鍒癇STR鍙互榪欐牱:
BSTR b=_com_util::ConvertStringToBSTR("鏁版嵁");///浣跨敤鍓嶉渶瑕佸姞涓奵omutil.h鍜宑omsupp.lib
SysFreeString(bstrValue);
鍙嶄箣鍙互浣跨敤
char *p=_com_util::ConvertBSTRToString(b);
delete p;
鍏蜂綋鍙互鍙傝冧竴錛屼簩孌佃惤閲岀殑鍏蜂綋璇存槑銆?

CComBSTR涓巁bstr_t瀵瑰ぇ閲忕殑鎿嶄綔絎﹁繘琛屼簡閲嶈澆錛屽彲浠ョ洿鎺ヨ繘琛?,!=,==絳夋搷浣滐紝鎵浠ヤ嬌鐢ㄩ潪甯告柟渚褲?
鐗瑰埆鏄痏bstr_t,寤鴻澶у浣跨敤瀹冦?


浜斻乂ARIANT 銆乢variant_t 涓?COleVariant


VARIANT鐨勭粨鏋勫彲浠ュ弬鑰冨ご鏂囦歡VC98\Include\OAIDL.H涓叧浜庣粨鏋勪綋tagVARIANT鐨勫畾涔夈?
瀵逛簬VARIANT鍙橀噺鐨勮祴鍊鹼細棣栧厛緇檝t鎴愬憳璧嬪鹼紝鎸囨槑鏁版嵁綾誨瀷錛屽啀瀵硅仈鍚堢粨鏋勪腑鐩稿悓鏁版嵁綾誨瀷鐨勫彉閲忚祴鍊鹼紝涓句釜渚嬪瓙錛?
VARIANT va;
int a=2001;
va.vt=VT_I4;///鎸囨槑鏁村瀷鏁版嵁
va.lVal=a; ///璧嬪?

瀵逛簬涓嶉┈涓婅祴鍊肩殑VARIANT錛屾渶濂藉厛鐢╒oid VariantInit(VARIANTARG FAR* pvarg);榪涜鍒濆鍖?鍏舵湰璐ㄦ槸灝唙t璁劇疆涓篤T_EMPTY,涓嬭〃鎴戜滑鍒椾婦vt涓庡父鐢ㄦ暟鎹殑瀵瑰簲鍏崇郴:

Byte bVal;聽 // VT_UI1.
Short iVal;聽 // VT_I2.
long lVal;聽 // VT_I4.
float fltVal;聽 // VT_R4.
double dblVal;聽 // VT_R8.
VARIANT_BOOL boolVal;聽 // VT_BOOL.
SCODE scode;聽 // VT_ERROR.
CY cyVal;聽 // VT_CY.
DATE date;聽 // VT_DATE.
BSTR bstrVal;聽 // VT_BSTR.
DECIMAL FAR* pdecVal聽 // VT_BYREF|VT_DECIMAL.
IUnknown FAR* punkVal;聽 // VT_UNKNOWN.
IDispatch FAR* pdispVal;聽 // VT_DISPATCH.
SAFEARRAY FAR* parray;聽 // VT_ARRAY|*.
Byte FAR* pbVal;聽 // VT_BYREF|VT_UI1.
short FAR* piVal;聽 // VT_BYREF|VT_I2.
long FAR* plVal;聽 // VT_BYREF|VT_I4.
float FAR* pfltVal;聽 // VT_BYREF|VT_R4.
double FAR* pdblVal;聽 // VT_BYREF|VT_R8.
VARIANT_BOOL FAR* pboolVal;聽 // VT_BYREF|VT_BOOL.
SCODE FAR* pscode;聽 // VT_BYREF|VT_ERROR.
CY FAR* pcyVal;聽 // VT_BYREF|VT_CY.
DATE FAR* pdate;聽 // VT_BYREF|VT_DATE.
BSTR FAR* pbstrVal;聽 // VT_BYREF|VT_BSTR.
IUnknown FAR* FAR* ppunkVal;聽 // VT_BYREF|VT_UNKNOWN.
IDispatch FAR* FAR* ppdispVal;聽 // VT_BYREF|VT_DISPATCH.
SAFEARRAY FAR* FAR* pparray;聽 // VT_ARRAY|*.
VARIANT FAR* pvarVal;聽 // VT_BYREF|VT_VARIANT.
void FAR* byref;聽 // Generic ByRef.
char cVal;聽 // VT_I1.
unsigned short uiVal;聽 // VT_UI2.
unsigned long ulVal;聽 // VT_UI4.
int intVal;聽 // VT_INT.
unsigned int uintVal;聽 // VT_UINT.
char FAR * pcVal;聽 // VT_BYREF|VT_I1.
unsigned short FAR * puiVal;聽 // VT_BYREF|VT_UI2.
unsigned long FAR * pulVal;聽 // VT_BYREF|VT_UI4.
int FAR * pintVal;聽 // VT_BYREF|VT_INT.
unsigned int FAR * puintVal;聽 //VT_BYREF|VT_UINT.


_variant_t鏄疺ARIANT鐨勫皝瑁呯被錛屽叾璧嬪煎彲浠ヤ嬌鐢ㄥ己鍒剁被鍨嬭漿鎹紝鍏舵瀯閫犲嚱鏁頒細鑷姩澶勭悊榪欎簺鏁版嵁綾誨瀷銆?
浣跨敤鏃墮渶鍔犱笂#include
渚嬪錛?
long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;


COleVariant鐨勪嬌鐢ㄤ笌_variant_t鐨勬柟娉曞熀鏈竴鏍鳳紝璇峰弬鑰冨涓嬩緥瀛愶細
COleVariant v3 = "瀛楃涓?, v4 = (long)1999;
CString str =(BSTR)v3.pbstrVal;
long i = v4.lVal;


鍏佸叾瀹冧竴浜汣OM鏁版嵁綾誨瀷

鏍規嵁ProgID寰楀埌CLSID
HRESULT CLSIDFromProgID( LPCOLESTR lpszProgID,LPCLSID pclsid);
CLSID clsid;
CLSIDFromProgID( L"MAPI.Folder",&clsid);

鏍規嵁CLSID寰楀埌ProgID
WINOLEAPI ProgIDFromCLSID( REFCLSID clsid,LPOLESTR * lplpszProgID);
渚嬪鎴戜滑宸茬粡瀹氫箟浜?CLSID_IApplication,涓嬮潰鐨勪唬鐮佸緱鍒癙rogID
LPOLESTR pProgID = 0;
ProgIDFromCLSID( CLSID_IApplication,&pProgID);
...///鍙互浣跨敤pProgID
CoTaskMemFree(pProgID);//涓嶈蹇樿閲婃斁

涓冦丄NSI涓嶶nicode
Unicode縐頒負瀹藉瓧絎﹀瀷瀛椾覆,COM閲屼嬌鐢ㄧ殑閮芥槸Unicode瀛楃涓層?

灝咥NSI杞崲鍒癠nicode
(1)閫氳繃L榪欎釜瀹忔潵瀹炵幇錛屼緥濡? CLSIDFromProgID( L"MAPI.Folder",&clsid);
(2)閫氳繃MultiByteToWideChar鍑芥暟瀹炵幇杞崲,渚嬪:
char *szProgID = "MAPI.Folder";
WCHAR szWideProgID[128];
CLSID clsid;
long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));
szWideProgID[lLen] = '\0';
(3)閫氳繃A2W瀹忔潵瀹炵幇,渚嬪:
USES_CONVERSION;
CLSIDFromProgID( A2W(szProgID),&clsid);
灝哢nicode杞崲鍒癆NSI
(1)浣跨敤WideCharToMultiByte,渚嬪:
// 鍋囪宸茬粡鏈変簡涓涓猆nicode 涓?wszSomeString...
char szANSIString [MAX_PATH];
WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL );
(2)浣跨敤W2A瀹忔潵瀹炵幇,渚嬪:
USES_CONVERSION;
pTemp=W2A(wszSomeString);
鍏佸叾瀹?

瀵規秷鎭殑澶勭悊涓垜浠粡甯擱渶瑕佸皢WPARAM鎴朙PARAM絳?2浣嶆暟鎹紙DWORD)鍒嗚В鎴愪袱涓?6浣嶆暟鎹紙WORD),渚嬪錛?
LPARAM lParam;
WORD loValue = LOWORD(lParam);///鍙栦綆16浣?
WORD hiValue = HIWORD(lParam);///鍙栭珮16浣?


瀵逛簬16浣嶇殑鏁版嵁(WORD)鎴戜滑鍙互鐢ㄥ悓鏍風殑鏂規硶鍒嗚В鎴愰珮浣庝袱涓?浣嶆暟鎹?BYTE),渚嬪:
WORD wValue;
BYTE loValue = LOBYTE(wValue);///鍙栦綆8浣?
BYTE hiValue = HIBYTE(wValue);///鍙栭珮8浣?


涓や釜16浣嶆暟鎹紙WORD錛夊悎鎴?2浣嶆暟鎹?DWORD,LRESULT,LPARAM,鎴朩PARAM)
LONG MAKELONG( WORD wLow, WORD wHigh );
WPARAM MAKEWPARAM( WORD wLow, WORD wHigh );
LPARAM MAKELPARAM( WORD wLow, WORD wHigh );
LRESULT MAKELRESULT( WORD wLow, WORD wHigh );


涓や釜8浣嶇殑鏁版嵁(BYTE)鍚堟垚16浣嶇殑鏁版嵁(WORD)
WORD MAKEWORD( BYTE bLow, BYTE bHigh );


浠嶳(red),G(green),B(blue)涓夎壊寰楀埌COLORREF綾誨瀷鐨勯鑹插?
COLORREF RGB( BYTE byRed,BYTE byGreen,BYTE byBlue );
渚嬪COLORREF bkcolor = RGB(0x22,0x98,0x34);


浠嶤OLORREF綾誨瀷鐨勯鑹插煎緱鍒癛GB涓変釜棰滆壊鍊?
BYTE Red = GetRValue(bkcolor); ///寰楀埌綰㈤鑹?
BYTE Green = GetGValue(bkcolor); ///寰楀埌緇塊鑹?
BYTE Blue = GetBValue(bkcolor); ///寰楀埌鍏伴鑹?


涔濄佹敞鎰忎簨欏?
鍋囧闇瑕佷嬌鐢ㄥ埌ConvertBSTRToString姝ょ被鍑芥暟,闇瑕佸姞涓婂ご鏂囦歡comutil.h,騫跺湪setting涓姞鍏omsupp.lib鎴栬呯洿鎺ュ姞涓?pragma comment( lib, "comsupp.lib" ) 銆?br />



]]>
杞創錛氭繁搴﹁В鏋怴C涓殑娑堟伅錛堜笅錛?/title><link>http://m.shnenglu.com/cppblog/archive/2006/07/20/10246.html</link><dc:creator>娼滈緳灞?/dc:creator><author>娼滈緳灞?/author><pubDate>Thu, 20 Jul 2006 03:23:00 GMT</pubDate><guid>http://m.shnenglu.com/cppblog/archive/2006/07/20/10246.html</guid><wfw:comment>http://m.shnenglu.com/cppblog/comments/10246.html</wfw:comment><comments>http://m.shnenglu.com/cppblog/archive/2006/07/20/10246.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/cppblog/comments/commentRss/10246.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/cppblog/services/trackbacks/10246.html</trackback:ping><description><![CDATA[娑堟伅鐨勬帴鏀?<br /><br />銆銆 娑堟伅鐨勬帴鏀朵富瑕佹湁錛撲釜鍑芥暟錛欸etMessage銆丳eekMessage銆乄aitMessage銆?<br /><br />銆銆銆 GetMessage鍘熷瀷濡備笅錛欱OOL GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax); <br /><br />銆銆 璇ュ嚱鏁扮敤鏉ヨ幏鍙栦笌hWnd鍙傛暟鎵鎸囧畾鐨勭獥鍙g浉鍏崇殑涓攚MsgFilterMin鍜寃MsgFilterMax鍙傛暟鎵緇欏嚭鐨勬秷鎭艱寖鍥村唴鐨勬秷鎭傞渶瑕佹敞鎰忕殑鏄紝濡傛灉hWnd涓篘ULL錛屽垯GetMessage鑾峰彇灞炰簬璋冪敤璇ュ嚱鏁板簲鐢ㄧ▼搴忕殑浠諱竴紿楀彛鐨勬秷鎭紝濡傛灉wMsgFilterMin鍜寃MsgFilterMax閮芥槸錛愶紝鍒橤etMessage灝辮繑鍥炴墍鏈夊彲寰楀埌鐨勬秷鎭傚嚱鏁拌幏鍙栦箣鍚庡皢鍒犻櫎娑堟伅闃熷垪涓殑闄M_PAINT娑堟伅涔嬪鐨勫叾浠栨秷鎭紝鑷充簬WM_PAINT鍒欏彧鏈夊湪鍏跺鐞嗕箣鍚庢墠琚垹闄ゃ?<br /><br />銆銆 PeekMessage鍘熷瀷濡備笅錛欱OOL PeekMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg錛夛紱 <br /><br />銆銆 璇ュ嚱鏁扮敤浜庢煡鐪嬪簲鐢ㄧ▼搴忕殑娑堟伅闃熷垪錛屽鏋滃叾涓湁娑堟伅灝卞皢鍏舵斁鍏pMsg鎵鎸囩殑緇撴瀯涓紝涓嶈繃錛屼笌GetMessage涓嶅悓鐨勬槸錛孭eekMessage鍑芥暟涓嶄細絳夊埌鏈夋秷鎭斁鍏ラ槦鍒楁椂鎵嶈繑鍥炪傚悓鏍鳳紝濡傛灉hWnd涓篘ULL錛屽垯PeekMessage鑾峰彇灞炰簬璋冪敤璇ュ嚱鏁板簲鐢ㄧ▼搴忕殑浠諱竴紿楀彛鐨勬秷鎭紝濡傛灉hWnd=-1錛岄偅涔堝嚱鏁板彧榪斿洖鎶奾Wnd鍙傛暟涓篘ULL鐨凱ostAppMessage鍑芥暟閫佸幓鐨勬秷鎭傚鏋渨MsgFilterMin鍜寃MsgFilterMax閮芥槸錛愶紝鍒橮eekMessage灝辮繑鍥炴墍鏈夊彲寰楀埌鐨勬秷鎭傚嚱鏁拌幏鍙栦箣鍚庡皢鍒犻櫎娑堟伅闃熷垪涓殑闄M_PAINT娑堟伅涔嬪鐨勫叾浠栨秷鎭紝鑷充簬WM_PAINT鍒欏彧鏈夊湪鍏跺鐞嗕箣鍚庢墠琚垹闄ゃ?<br /><br />銆銆 WaitMessage鍘熷瀷濡備笅錛欱OOL VaitMessage();褰撲竴涓簲鐢ㄧ▼搴忔棤浜嬪彲鍋氭椂錛岃鍑芥暟灝卞皢鎺у埗鏉冧氦緇欏彟澶栫殑搴旂敤紼嬪簭錛屽悓鏃跺皢璇ュ簲鐢ㄧ▼搴忔寕璧鳳紝鐩村埌涓涓柊鐨勬秷鎭鏀懼叆搴旂敤紼嬪簭鐨勯槦鍒椾箣涓墠榪斿洖銆?<br /><br />銆銆 娑堟伅鐨勫鐞?<br /><br />銆銆 鎺ヤ笅鏉ユ垜浠皥涓涓嬫秷鎭殑澶勭悊錛岄鍏堟垜浠潵鐪嬩竴涓媀C涓殑娑堟伅娉碉細 <br /><br />銆銆 while(GetMessage(&msg, NULL, 0, 0)) <br />{ <br />if(!TranslateAccelerator(msg.hWnd, hAccelTable, &msg)) <br />{ <br />TranslateMessage(&msg); <br />DispatchMessage(&msg); <br />} <br />} <br /><br />銆銆 棣栧厛錛孏etMessage浠庤繘紼嬬殑涓葷嚎紼嬬殑娑堟伅闃熷垪涓幏鍙栦竴涓秷鎭茍灝嗗畠澶嶅埗鍒癕SG緇撴瀯錛屽鏋滈槦鍒椾腑娌℃湁娑堟伅錛屽垯GetMessage鍑芥暟灝嗙瓑寰呬竴涓秷鎭殑鍒版潵浠ュ悗鎵嶈繑鍥炪?濡傛灉浣犲皢涓涓獥鍙e彞鏌勪綔涓虹浜屼釜鍙傛暟浼犲叆GetMessage錛岄偅涔堝彧鏈夋寚瀹氱獥鍙g殑鐨勬秷鎭彲浠ヤ粠闃熷垪涓幏寰椼侴etMessage涔熷彲浠ヤ粠娑堟伅闃熷垪涓繃婊ゆ秷鎭彧鎺ュ彈娑堟伅闃熷垪涓惤鍦ㄨ寖鍥村唴鐨勬秷鎭傝繖鏃跺欏氨瑕佸埄鐢℅etMessage錛廝eekMessage鎸囧畾涓涓秷鎭繃婊ゅ櫒銆傝繖涓繃婊ゅ櫒鏄竴涓秷鎭爣璇嗙鐨勮寖鍥存垨鑰呮槸涓涓獥浣撳彞鏌勶紝鎴栬呬袱鑰呭悓鏃舵寚瀹氥傚綋搴旂敤紼嬪簭瑕佹煡鎵句竴涓悗鍏ユ秷鎭槦鍒楃殑娑堟伅鏄緢鏈夌敤銆俉M_KEYFIRST 鍜?WM_KEYLAST 甯擱噺鐢ㄤ簬鎺ュ彈鎵鏈夌殑閿洏娑堟伅銆?WM_MOUSEFIRST 鍜?WM_MOUSELAST 甯擱噺鐢ㄤ簬鎺ュ彈鎵鏈夌殑榧犳爣娑堟伅銆?<br /><br />銆銆 鐒跺悗TranslateAccelerator鍒ゆ柇璇ユ秷鎭槸涓嶆槸涓涓寜閿秷鎭茍涓旀槸涓涓姞閫熼敭娑堟伅錛屽鏋滄槸錛屽垯璇ュ嚱鏁板皢鎶婂嚑涓寜閿秷鎭漿鎹㈡垚涓涓姞閫熼敭娑堟伅浼犻掔粰紿楀彛鐨勫洖璋冨嚱鏁般傚鐞嗕簡鍔犻熼敭涔嬪悗錛屽嚱鏁癟ranslateMessage灝嗘妸涓や釜鎸夐敭娑堟伅WM_KEYDOWN鍜學M_KEYUP杞崲鎴愪竴涓猈M_CHAR錛屼笉榪囬渶瑕佹敞鎰忕殑鏄紝娑堟伅WM_KEYDOWN,WM_KEYUP浠嶇劧灝嗕紶閫掔粰紿楀彛鐨勫洖璋冨嚱鏁般?<br /><br />銆銆 澶勭悊瀹屼箣鍚庯紝DispatchMessage鍑芥暟灝嗘妸姝ゆ秷鎭彂閫佺粰璇ユ秷鎭寚瀹氱殑紿楀彛涓凡璁懼畾鐨勫洖璋冨嚱鏁般傚鏋滄秷鎭槸WM_QUIT錛屽垯GetMessage榪斿洖錛愶紝浠庤岄鍑哄驚鐜綋銆傚簲鐢ㄧ▼搴忓彲浠ヤ嬌鐢≒ostQuitMessage鏉ョ粨鏉熻嚜宸辯殑娑堟伅寰幆銆傞氬父鍦ㄤ富紿楀彛鐨刉M_DESTROY娑堟伅涓皟鐢ㄣ?<br /><br />銆銆 涓嬮潰鎴戜滑涓句竴涓父瑙佺殑灝忎緥瀛愭潵璇存槑榪欎釜娑堟伅娉電殑榪愮敤錛?<br /><br />銆銆 if (::PeekMessage(&msg, m_hWnd, WM_KEYFIRST,WM_KEYLAST, PM_REMOVE)) <br />{ <br />if (msg.message == WM_KEYDOWN && msg.wParam == VK_ESCAPE)錛庯紟錛?<br />} <br /><br />銆銆 榪欓噷鎴戜滑鎺ュ彈鎵鏈夌殑閿洏娑堟伅錛屾墍浠ュ氨鐢╓M_KEYFIRST 鍜?WM_KEYLAST浣滀負鍙傛暟銆傛渶鍚庝竴涓弬鏁板彲浠ユ槸PM_NOREMOVE 鎴栬?PM_REMOVE錛岃〃紺烘秷鎭俊鎭槸鍚﹀簲璇ヤ粠娑堟伅闃熷垪涓垹闄ゃ?<br /><br />銆銆 鎵浠ヨ繖孌靛皬浠g爜灝辨槸鍒ゆ柇鏄惁鎸変笅浜咵sc閿紝濡傛灉鏄氨榪涜澶勭悊銆?<br /><br />紿楀彛榪囩▼ <br /><br />銆銆 紿楀彛榪囩▼鏄竴涓敤浜庡鐞嗘墍鏈夊彂閫佸埌榪欎釜紿楀彛鐨勬秷鎭殑鍑芥暟銆備換浣曚竴涓獥鍙g被閮芥湁涓涓獥鍙h繃紼嬨傚悓涓涓被鐨勭獥鍙d嬌鐢ㄥ悓鏍風殑紿楀彛榪囩▼鏉ュ搷搴旀秷鎭?緋葷粺鍙戦佹秷鎭粰紿楀彛榪囩▼灝嗘秷鎭暟鎹綔涓哄弬鏁頒紶閫掔粰浠栵紝娑堟伅鍒版潵涔嬪悗錛屾寜鐓ф秷鎭被鍨嬫帓搴忚繘琛屽鐞嗭紝鍏朵腑鐨勫弬鏁板垯鐢ㄦ潵鍖哄垎涓嶅悓鐨勬秷鎭紝紿楀彛榪囩▼浣跨敤鍙傛暟浜х敓鍚堥傝涓恒?<br /><br />銆銆 涓涓獥鍙h繃紼嬩笉緇忓父蹇界暐娑堟伅錛屽鏋滀粬涓嶅鐞嗭紝瀹冧細灝嗘秷鎭紶鍥炲埌鎵ц榛樿鐨勫鐞嗐傜獥鍙h繃紼嬮氳繃璋冪敤DefWindowProc鏉ュ仛榪欎釜澶勭悊銆傜獥鍙h繃紼嬪繀欏籸eturn涓涓間綔涓哄畠鐨勬秷鎭鐞嗙粨鏋溿傚ぇ澶氭暟紿楀彛鍙鐞嗗皬閮ㄥ垎娑堟伅鍜屽皢鍏朵粬鐨勯氳繃DefWindowProc浼犻掔粰緋葷粺鍋氶粯璁ょ殑澶勭悊銆傜獥鍙h繃紼嬭鎵鏈夊睘浜庡悓涓涓被鐨勭獥鍙e叡浜紝鑳戒負涓嶅悓鐨勭獥鍙e鐞嗘秷鎭備笅闈㈡垜浠潵鐪嬩竴涓嬪叿浣撶殑瀹炰緥錛?<br /><br />銆銆銆 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) <br />銆銆銆 { <br />int wmId, wmEvent; <br />PAINTSTRUCT ps; <br />HDC hdc; <br />TCHAR szHello[MAX_LOADSTRING]; <br />LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING); <br /><br />switch (message) <br />{ <br />case WM_COMMAND: <br />wmId = LOWORD(wParam); <br />wmEvent = HIWORD(wParam); <br />// Parse the menu selections: <br />switch (wmId) <br />{ <br />case IDM_ABOUT: <br />DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); <br />break; <br />case IDM_EXIT: <br />DestroyWindow(hWnd); <br />break; <br />default: <br />return DefWindowProc(hWnd, message, wParam, lParam); <br />} <br />break; <br />case WM_PAINT: <br />hdc = BeginPaint(hWnd, &ps); <br />// TODO: Add any drawing code here... <br />RECT rt; <br />GetClientRect(hWnd, &rt); <br />DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER); <br />EndPaint(hWnd, &ps); <br />break; <br />case WM_DESTROY: <br />PostQuitMessage(0); <br />break; <br />default: <br />return DefWindowProc(hWnd, message, wParam, lParam); <br />銆銆銆 } <br />銆銆 return 0; <br />銆銆銆 } <br /><br />銆銆 娑堟伅鍒嗘祦鍣?<br /><br />銆銆 閫氬父鐨勭獥鍙h繃紼嬫槸閫氳繃涓涓猻witch璇彞鏉ュ疄鐜扮殑錛岃繖涓簨鎯呭緢鐑︼紝鏈夋病鏈夋洿綆渚跨殑鏂規硶鍛紵鏈夛紝閭e氨鏄秷鎭垎嫻佸櫒錛屽埄鐢ㄦ秷鎭垎嫻佸櫒錛屾垜浠彲浠ユ妸switch璇彞鍒嗘垚鏇村皬鐨勫嚱鏁幫紝姣忎竴涓秷鎭兘瀵瑰簲涓涓皬鍑芥暟錛岃繖鏍峰仛鐨勫ソ澶勫氨鏄娑堟伅鏇村鏄撶鐞嗐?br /><br />聽聽聽聽聽聽聽聽聽 涔嬫墍浠ヨ縐頒負娑堟伅鍒嗘祦鍣紝灝辨槸鍥犱負瀹冨彲浠ュ浠諱綍娑堟伅榪涜鍒嗘祦銆備笅闈㈡垜浠仛涓涓嚱鏁板氨寰堟竻妤氫簡錛?<br /><br />銆銆 void MsgCracker(HWND hWnd,int id,HWND hWndCtl,UINT codeNotify) <br />{ <br />switch(id) <br />{ <br />case ID_A: <br />if(codeNotify==EN_CHANGE)... <br />break; <br />case ID_B: <br />if(codeNotify==BN_CLICKED)... <br />break; <br />.... <br />} <br />} <br /><br />銆銆 鐒跺悗鎴戜滑淇敼涓涓嬬獥鍙h繃紼嬶細 <br /><br />銆銆 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) <br />{ <br />switch(message) <br />{ <br />HANDLE_MSG(hWnd,WM_COMMAND,MsgCracker); <br />HANDLE_MSG(hWnd,WM_DESTROY,MsgCracker); <br />default: <br />return DefWindowProc(hWnd, message, wParam, lParam); <br />銆銆銆 } <br />銆銆 return 0; <br />銆銆銆 } <br /><br />銆銆 鍦╓indowsX.h涓畾涔変簡濡備笅鐨凥ANDLE_MSG瀹忥細 <br /><br />銆銆銆 #define HANDLE_MSG(hwnd,msg,fn) \ <br />switch(msg): return HANDLE_##msg((hwnd),(wParam),(lParam),(fn)); <br /><br />銆銆 瀹為檯涓婏紝HANDLE_WM_XXXX閮芥槸瀹忥紝渚嬪錛欻ANDLE_MSG(hWnd,WM_COMMAND,MsgCracker);灝嗚杞崲鎴愬涓嬪畾涔夛細 <br /><br />銆銆銆 #define HANDLE_WM_COMMAND(hwnd,wParam,lParam,fn)\ <br />((fn)((hwnd),(int)(LOWORD(wParam)),(HWND)(lParam),(UINT)HIWORD(wParam)),0L); <br /><br />銆銆 濂戒簡錛屼簨鎯呭埌浜嗚繖涓姝ワ紝搴旇涓鍒囬兘鏄庢湕浜嗐?<br /><br />銆銆 涓嶈繃錛屾垜浠彂鐜板湪windowsx.h閲岄潰榪樻湁涓涓畯錛欶ORWARD_WM_XXXX錛屾垜浠繕鏄偅WM_COMMAND涓轟緥錛岃繘琛屽垎鏋愶細 <br /><br />銆銆銆 #define FORWARD_WM_COMMAND(hwnd, id, hwndCtl, codeNotify, fn) \ <br />(void)(fn)((hwnd), WM_COMMAND, MAKEWPARAM((UINT)(id),(UINT)(codeNotify)), (LPARAM)(HWND)(hwndCtl)) <br /><br />銆銆 鎵浠ュ疄闄呬笂錛孎ORWARD_WM_XXXX灝嗘秷鎭弬鏁拌繘琛屼簡閲嶆柊鏋勯狅紝鐢熸垚浜唚Param && lParam錛岀劧鍚庤皟鐢ㄤ簡鎴戜滑瀹氫箟鐨勫嚱鏁般?<br /><br />MFC娑堟伅鐨勫鐞嗗疄鐜版柟寮?<br /><br />銆銆 鍒濈湅MFC涓殑鍚勭娑堟伅錛屼互鍙婂湪澶磋剳涓牴娣辮拏鍥虹殑C++鐨勫獎鍝嶏紝鎴戜滑鍙兘寰堣嚜鐒剁殑灝變細鎯沖埌鍒╃敤C++鐨勪笁澶х壒鎬т箣涓錛氳櫄鎷熸満鍒舵潵瀹炵幇娑堟伅鐨勪紶閫掞紝浣嗘槸緇忚繃鍒嗘瀽錛屾垜浠湅鍒頒簨鎯呭茍涓嶆槸鎯蟲垜浠兂璞$殑閭f牱錛屽湪MFC涓秷鎭槸閫氳繃涓縐嶆墍璋撶殑娑堟伅鏄犲皠鏈哄埗鏉ュ鐞嗙殑銆?<br /><br />銆銆 涓轟粈涔堝憿錛熷湪娼樼埍姘戣佸笀緲昏瘧鐨勩奦isual C++鎶鏈唴騫曘嬶紙絎?鐗堬級涓粰鍑轟簡璇︾粏鐨勫師鍥犺鏄庯紝鎴戝啀綆瑕佺殑璇翠竴閬嶃傚湪CWnd綾諱腑澶х害鏈?10涓秷鎭紝榪樻湁鍏跺畠鐨凪FC鐨勭被鍛紝綆楄搗鏉ユ秷鎭お澶氫簡錛屽湪C++涓紼嬪簭涓敤鍒扮殑姣忎竴涓淳鐢熺被閮借鏈変竴涓獀table錛屾瘡涓涓櫄鍑芥暟鍦╲table涓兘瑕佸崰鐢ㄤ竴涓?瀛楄妭澶у皬鐨勫叆鍙e湴鍧錛岃繖鏍蜂竴鏉ワ紝瀵逛簬姣忎釜鐗瑰畾綾誨瀷鐨勭獥鍙f垨鎺т歡錛屽簲鐢ㄧ▼搴忛兘闇瑕佷竴涓?40KB澶у皬鐨勮〃鏉ユ敮鎸佽櫄鎷熸秷鎭帶浠跺嚱鏁般?<br /><br />銆銆 濡傛灉璇翠笂闈㈢殑紿楀彛鎴栨帶浠跺彲浠ュ媺寮哄疄鐜扮殑璇濓紝閭d箞瀵逛簬鑿滃崟鍛戒護娑堟伅鍙婃寜閽懡浠ゆ秷鎭憿錛熷洜涓轟笉鍚岀殑搴旂敤紼嬪簭鏈変笉鍚岀殑鑿滃崟鍜屾寜閽紝鎴戜滑鎬庝箞澶勭悊鍛紵鍦∕FC搴撶殑榪欑娑堟伅鏄犲皠緋葷粺灝遍伩鍏嶄簡浣跨敤澶х殑vtable錛屽茍涓旇兘澶熷湪澶勭悊甯歌Windows娑堟伅鐨勫悓鏃跺鐞嗗悇縐嶅悇鏍風殑搴旂敤紼嬪簭鐨勫懡浠ゆ秷鎭?<br /><br />銆銆 璇寸櫧浜嗭紝MFC涓殑娑堟伅鏈哄埗鍏跺疄璐ㄦ槸涓寮犲法澶х殑娑堟伅鍙婂叾澶勭悊鍑芥暟鐨勪竴涓瀵瑰簲琛紝鐒跺悗鍔犱笂鍒嗘瀽澶勭悊榪欏紶琛ㄧ殑搴旂敤妗嗘灦鍐呴儴鐨勪竴浜涚▼搴忎唬鐮?榪欐牱灝卞彲浠ラ伩鍏嶅湪SDK緙栫▼涓敤鍒扮殑綣佺悙鐨凜ASE璇彞銆?<br /><br />銆銆 MFC鐨勬秷鎭槧灝勭殑鍩虹被CCmdTarget <br /><br />銆銆 濡傛灉浣犳兂璁╀綘鐨勬帶浠惰兘澶熻繘琛屾秷鎭槧灝勶紝灝卞繀欏諱粠CCmdTarget綾諱腑媧劇敓銆侰CmdTarget綾繪槸MFC澶勭悊鍛戒護娑堟伅鐨勫熀紜銆佹牳蹇冦侻FC涓鴻綾昏璁′簡璁稿鎴愬憳鍑芥暟鍜屼竴浜涙垚鍛樻暟鎹紝鍩烘湰涓婃槸涓轟簡瑙e喅娑堟伅鏄犲皠闂鐨勶紝鎵鏈夊搷搴旀秷鎭垨浜嬩歡鐨勭被閮戒粠瀹冩淳鐢燂紝渚嬪錛氬簲鐢ㄧ▼搴忕被銆佹鏋剁被銆佹枃妗g被銆佽鍥劇被鍜屽悇縐嶅悇鏍風殑鎺т歡綾葷瓑絳夛紝榪樻湁寰堝銆?<br /><br />銆銆 涓嶈繃榪欎釜綾婚噷闈㈡湁錛掍釜鍑芥暟瀵規秷鎭槧灝勯潪甯擱噸瑕侊紝涓涓槸闈欐佹垚鍛樺嚱鏁癉ispatchCmdMsg錛屽彟涓涓槸铏氬嚱鏁癘nCmdMsg銆?<br /><br />銆銆 DispatchCmdMsg涓撻棬渚汳FC鍐呴儴浣跨敤錛岀敤鏉ュ垎鍙慦indows娑堟伅銆侽nCmdMsg鐢ㄦ潵浼犻掑拰鍙戦佹秷鎭佹洿鏂扮敤鎴風晫闈㈠璞$殑鐘舵併?<br /><br />銆銆 CCmdTarget瀵筄nCmdMsg鐨勯粯璁ゅ疄鐜幫細鍦ㄥ綋鍓嶅懡浠ょ洰鏍?this鎵鎸?鐨勭被鍜屽熀綾葷殑娑堟伅鏄犲皠鏁扮粍閲屾悳绱㈡寚瀹氬懡浠ゆ秷鎭殑娑堟伅澶勭悊鍑芥暟銆?<br /><br />銆銆 榪欓噷浣跨敤铏氭嫙鍑芥暟GetMessageMap寰楀埌鍛戒護鐩爣綾葷殑娑堟伅鏄犲皠鍏ュ彛鏁扮粍_messageEntries錛岀劧鍚庡湪鏁扮粍閲屽尮閰嶅懡浠ゆ秷鎭疘D鐩稿悓銆佹帶鍒墮氱煡浠g爜涔熺浉鍚岀殑娑堟伅鏄犲皠鏉$洰銆傚叾涓璆etMessageMap鏄櫄鎷熷嚱鏁幫紝鎵浠ュ彲浠ョ‘璁ゅ綋鍓嶅懡浠ょ洰鏍囩殑紜垏綾匯?<br /><br />銆銆 濡傛灉鎵懼埌浜嗕竴涓尮閰嶇殑娑堟伅鏄犲皠鏉$洰錛屽垯浣跨敤DispachCmdMsg璋冪敤榪欎釜澶勭悊鍑芥暟錛?<br /><br />銆銆 濡傛灉娌℃湁鎵懼埌錛屽垯浣跨敤_GetBaseMessageMap寰楀埌鍩虹被鐨勬秷鎭槧灝勬暟緇勶紝鏌ユ壘錛岀洿鍒版壘鍒版垨鎼滃浜嗘墍鏈夌殑鍩虹被錛堝埌CCmdTarget錛変負姝紱 <br /><br />銆銆 濡傛灉鏈鍚庢病鏈夋壘鍒幫紝鍒欒繑鍥濬ASLE銆?<br /><br />銆銆 姣忎釜浠嶤CmdTarget媧劇敓鐨勫懡浠ょ洰鏍囩被閮藉彲浠ヨ鐩朞nCmdMsg錛屽埄鐢ㄥ畠鏉ョ‘瀹氭槸鍚﹀彲浠ュ鐞嗘煇鏉″懡浠わ紝濡傛灉涓嶈兘錛屽氨閫氳繃璋冪敤涓嬩竴鍛戒護鐩爣鐨凮nCmdMsg錛屾妸璇ュ懡浠ら佺粰涓嬩竴涓懡浠ょ洰鏍囧鐞嗐傞氬父錛屾淳鐢熺被瑕嗙洊OnCmdMsg鏃?錛岃璋冪敤鍩虹被鐨勮瑕嗙洊鐨凮nCmdMsg銆?<br /><br />銆銆 鍦∕FC妗嗘灦涓紝涓浜汳FC鍛戒護鐩爣綾昏鐩栦簡OnCmdMsg錛屽妗嗘灦紿楀彛綾昏鐩栦簡璇ュ嚱鏁幫紝瀹炵幇浜哅FC鐨勬爣鍑嗗懡浠ゆ秷鎭彂閫佽礬寰勩傚繀瑕佺殑璇濓紝搴旂敤紼嬪簭涔熷彲浠ヨ鐩朞nCmdMsg錛屾敼鍙樹竴涓垨澶氫釜綾諱腑鐨勫彂閫佽瀹氾紝瀹炵幇涓庢爣鍑嗘鏋跺彂閫佽瀹氫笉鍚岀殑鍙戦佽礬寰勩備緥濡傦紝鍦ㄤ互涓嬫儏鍐靛彲浠ヤ綔榪欐牱鐨勫鐞嗭細鍦ㄨ鎵撴柇鍙戦侀『搴忕殑綾諱腑鎶婂懡浠や紶緇欎竴涓潪MFC榛樿瀵硅薄錛涘湪鏂扮殑闈為粯璁ゅ璞′腑鎴栧湪鍙兘瑕佷紶鍑哄懡浠ょ殑鍛戒護鐩爣涓?<br /><br />銆銆 娑堟伅鏄犲皠鐨勫唴瀹?<br /><br />銆銆 閫氳繃ClassWizard涓烘垜浠敓鎴愮殑浠g爜錛屾垜浠彲浠ョ湅鍒幫紝娑堟伅鏄犲皠鍩烘湰涓婂垎涓?澶ч儴鍒嗭細 <br /><br />銆銆 鍦ㄥご鏂囦歡(.h)涓湁涓涓畯DECLARE_MESSAGE_MAP()錛屼粬琚斁鍦ㄤ簡綾葷殑鏈熬錛屾槸涓涓猵ublic灞炴х殑錛涗笌涔嬪搴旂殑鏄湪瀹炵幇閮ㄥ垎錛?cpp)澧炲姞浜嗕竴绔犳秷鎭槧灝勮〃錛屽唴瀹瑰涓嬶細 <br /><br />BEGIN_MESSAGE_MAP(褰撳墠綾? 褰撳墠綾葷殑鍩虹被) <br />file://{{AFX_MSG_MAP(CMainFrame) <br /><br />銆 娑堟伅鐨勫叆鍙i」 <br /><br />file://}}AFX_MSG_MAP <br />END_MESSAGE_MAP() <br /><br />銆銆 浣嗘槸浠呮槸榪欎袱欏硅繕榪滀笉瓚充互瀹屾垚涓鏉℃秷鎭紝瑕佹槸涓涓秷鎭伐浣滐紝蹇呴』鏈変互涓?涓儴鍒嗗幓鍗忎綔錛?<br />1.鍦ㄧ被鐨勫畾涔変腑鍔犲叆鐩稿簲鐨勫嚱鏁板0鏄庯紱 <br /><br />銆 2.鍦ㄧ被鐨勬秷鎭槧灝勮〃涓姞鍏ョ浉搴旂殑娑堟伅鏄犲皠鍏ュ彛欏癸紱 <br /><br />銆 3.鍦ㄧ被鐨勫疄鐜頒腑鍔犲叆鐩稿簲鐨勫嚱鏁頒綋錛?<br /><br />銆銆 娑堟伅鐨勬坊鍔?<br /><br />銆銆 鏈変簡涓婇潰鐨勮繖浜涘彧鏄綔涓哄熀紜錛屾垜浠帴涓嬫潵灝卞仛鎴戜滑鏈鐔熸倝銆佹渶甯哥敤鐨勫伐浣滐細娣誨姞娑堟伅銆侻FC娑堟伅鐨勬坊鍔犱富瑕佹湁2縐嶆柟娉曪細鑷姩/鎵嬪姩錛屾垜浠氨浠ヨ繖2縐嶆柟娉曚負渚嬶紝璇翠竴涓嬪浣曟坊鍔犳秷鎭?<br /><br />銆銆 1銆佸埄鐢–lass Wizard瀹炵幇鑷姩娣誨姞<br />銆銆 鍦ㄨ彍鍗曚腑閫夋嫨View-->Class Wizard錛屼篃鍙互鐢ㄥ崟鍑婚紶鏍囧彸閿紝閫夋嫨Class Wizard錛屽悓鏍峰彲浠ユ縺媧籆lass Wizard銆傞夋嫨Message Map鏍囩錛屼粠Class name緇勫悎妗嗕腑閫夊彇鎴戜滑鎯寵娣誨姞娑堟伅鐨勭被銆傚湪Object IDs鍒楄〃妗嗕腑錛岄夊彇綾葷殑鍚嶇О銆傛鏃訛紝 Messages鍒楄〃妗嗘樉紺鴻綾葷殑澶у鏁?鑻ヤ笉鏄叏閮ㄧ殑璇?鍙噸杞芥垚鍛樺嚱鏁板拰紿楀彛娑堟伅銆傜被閲嶈澆鏄劇ず鍦ㄥ垪琛ㄧ殑涓婇儴錛屼互瀹為檯铏氭瀯鎴愬憳鍑芥暟鐨勫ぇ灝忓啓瀛楁瘝鏉ヨ〃紺恒傚叾浠栦負紿楀彛娑堟伅錛屼互澶у啓瀛楁瘝鍑虹幇錛屾弿榪頒簡瀹為檯紿楀彛鎵鑳藉搷搴旂殑娑堟伅ID銆傞変腑鎴戜滑鍚戞坊鍔犵殑娑堟伅錛屽崟鍑籄dd Function鎸夐挳錛孋lass Wizard鑷姩灝嗚娑堟伅娣誨姞榪涙潵銆?<br /><br />銆銆 鏈夋椂鍊欙紝鎴戜滑鎯寵娣誨姞鐨勬秷鎭湰搴旇鍑虹幇鍦∕essage鍒楄〃涓紝鍙槸灝辨槸鎵句笉鍒幫紝鎬庝箞鍔烇紵涓嶈鐫鎬ワ紝鎴戜滑鍙互鍒╃敤Class Wizard涓奀lass Info鏍囩浠ユ墿灞曟秷鎭垪琛ㄣ傚湪璇ラ〉涓紝鎵懼埌Message Filter緇勫悎妗嗭紝閫氳繃瀹冨彲浠ユ敼鍙橀欏典腑Messages鍒楄〃妗嗕腑鐨勯夐」銆傝繖閲岋紝鎴戜滑閫夋嫨Window錛屼粠鑰屾樉紺烘墍鏈夌殑紿楀彛娑堟伅錛屼竴鎶婃儏鍐典笅錛屼綘鎯寵娣誨姞鐨勬秷鎭氨鍙互鍦∕essage鍒楄〃妗嗕腑鍑虹幇浜嗭紝濡傛灉榪樻病鏈夛紝閭e氨鎺ョ潃寰涓嬬湅錛氾級 <br /><br />銆銆 2銆佹墜鍔ㄥ湴娣誨姞娑堟伅澶勭悊鍑芥暟 <br /><br />銆銆 濡傛灉鍦∕essages鍒楄〃妗嗕腑浠嶇劧鐪嬩笉鍒版垜浠兂瑕佺殑娑堟伅錛岄偅涔堣娑堟伅鍙兘鏄緋葷粺蹇界暐鎺夋垨鑰呮槸浣犺嚜宸卞垱寤虹殑錛屽湪榪欑鎯呭喌涓嬶紝灝卞繀欏昏嚜宸辨墜宸ユ坊鍔犮傛牴鎹垜浠墠闈㈡墍璇寸殑娑堟伅宸ヤ綔鐨?涓儴浠訛紝鎴戜滑涓涓榪涜澶勭悊錛?<br /><br />銆銆 1) 鍦ㄧ被鐨? h鏂囦歡涓坊鍔犲鐞嗗嚱鏁扮殑澹版槑錛岀揣鎺ュ湪//}}AFX_MSG琛屼箣鍚庡姞鍏ュ0鏄庯紝娉ㄦ剰錛氫竴瀹氳浠fx_msg寮澶淬?<br /><br />銆銆 閫氬父錛屾坊鍔犲鐞嗗嚱鏁板0鏄庣殑鏈濂界殑鍦版柟鏄簮浠g爜涓瑿lass Wizard緇存姢鐨勮〃涓嬮潰錛屼絾鏄湪瀹冩爣璁板叾棰嗗煙鐨勶經锝涳綕锝濇嫭寮у闈€傝繖浜涙嫭寮т腑鐨勪換浣曚笢瑗塊兘灝嗕細琚獵lass Wizard閿姣併?<br /><br />銆銆 2) 鎺ョ潃錛屽湪鐢ㄦ埛綾葷殑.cpp鏂囦歡涓壘鍒?/}}AFX_MSG_MAP琛岋紝绱ф帴鍦ㄥ畠涔嬪悗鍔犲叆娑堟伅鍏ュ彛欏廣傚悓鏍鳳紝涔熸槸鏀懼湪{ {} }鐨勫闈?<br /><br />銆銆 3) 鏈鍚庯紝鍦ㄨ鏂囦歡涓坊鍔犳秷鎭鐞嗗嚱鏁扮殑瀹炰綋<img src ="http://m.shnenglu.com/cppblog/aggbug/10246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/cppblog/" target="_blank">娼滈緳灞?/a> 2006-07-20 11:23 <a href="http://m.shnenglu.com/cppblog/archive/2006/07/20/10246.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>杞創錛氭繁搴﹁В鏋怴C涓殑娑堟伅(涓?http://m.shnenglu.com/cppblog/archive/2006/07/20/10245.html娼滈緳灞?/dc:creator>娼滈緳灞?/author>Thu, 20 Jul 2006 03:20:00 GMThttp://m.shnenglu.com/cppblog/archive/2006/07/20/10245.htmlhttp://m.shnenglu.com/cppblog/comments/10245.htmlhttp://m.shnenglu.com/cppblog/archive/2006/07/20/10245.html#Feedback0http://m.shnenglu.com/cppblog/comments/commentRss/10245.htmlhttp://m.shnenglu.com/cppblog/services/trackbacks/10245.html 闃熷垪娑堟伅鍜岄潪闃熷垪娑堟伅
聽聽聽浠庢秷鎭殑鍙戦侀斿緞鏉ョ湅錛屾秷鎭彲浠ュ垎鎴?縐嶏細闃熷垪娑堟伅鍜岄潪闃熷垪娑堟伅銆傛秷鎭槦鍒楃敱鍙互鍒嗘垚緋葷粺娑堟伅闃熷垪鍜岀嚎紼嬫秷鎭槦鍒椼傜郴緇熸秷鎭槦鍒楃敱Windows緇存姢錛岀嚎紼嬫秷鎭槦鍒楀垯鐢辨瘡涓狦UI綰跨▼鑷繁榪涜緇存姢錛屼負閬垮厤緇檔on-GUI鐜版垚鍒涘緩娑堟伅闃熷垪錛屾墍鏈夌嚎紼嬩駭鐢熸椂騫舵病鏈夋秷鎭槦鍒楋紝浠呭綋綰跨▼絎竴嬈¤皟鐢℅DI鍑芥暟鏁扮郴緇熺粰綰跨▼鍒涘緩涓涓秷鎭槦鍒椼傞槦鍒楁秷鎭佸埌緋葷粺娑堟伅闃熷垪錛岀劧鍚庡埌綰跨▼娑堟伅闃熷垪錛涢潪闃熷垪娑堟伅鐩存帴閫佺粰鐩殑紿楀彛榪囩▼銆?br />聽聽聽聽 瀵逛簬闃熷垪娑堟伅錛屾渶甯歌鐨勬槸榧犳爣鍜岄敭鐩樿Е鍙戠殑娑堟伅錛屼緥濡俉M_MOUSERMOVE,WM_CHAR絳夋秷鎭紝榪樻湁涓浜涘叾瀹冪殑娑堟伅錛屼緥濡傦細WM_PAINT銆乄M_TIMER鍜學M_QUIT銆傚綋榧犳爣銆侀敭鐩樹簨浠惰瑙﹀彂鍚庯紝鐩稿簲鐨勯紶鏍囨垨閿洏椹卞姩紼嬪簭灝變細鎶婅繖浜涗簨浠惰漿鎹㈡垚鐩稿簲鐨勬秷鎭紝鐒跺悗杈撻佸埌緋葷粺娑堟伅闃熷垪錛岀敱Windows緋葷粺鍘昏繘琛屽鐞嗐俉indows緋葷粺鍒欏湪閫傚綋鐨勬椂鏈猴紝浠庣郴緇熸秷鎭槦鍒椾腑鍙栧嚭涓涓秷鎭紝鏍規嵁鍓嶉潰鎴戜滑鎵璇寸殑MSG娑堟伅緇撴瀯紜畾娑堟伅鏄琚佸線閭d釜紿楀彛錛岀劧鍚庢妸鍙栧嚭鐨勬秷鎭佸線鍒涘緩紿楀彛鐨勭嚎紼嬬殑鐩稿簲闃熷垪錛屼笅闈㈢殑浜嬫儏灝辮鐢辯嚎紼嬫秷鎭槦鍒楁搷蹇冧簡錛學indows寮濮嬪繖鑷繁鐨勪簨鎯呭幓浜嗐傜嚎紼嬬湅鍒拌嚜宸辯殑娑堟伅闃熷垪涓湁娑堟伅錛屽氨浠庨槦鍒椾腑鍙栧嚭鏉ワ紝閫氳繃鎿嶄綔緋葷粺鍙戦佸埌鍚堥傜殑紿楀彛榪囩▼鍘誨鐞嗐?br />聽聽聽聽 涓鑸潵璁詫紝緋葷粺鎬繪槸灝嗘秷鎭疨ost鍦ㄦ秷鎭槦鍒楃殑鏈熬銆傝繖鏍蜂繚璇佺獥鍙d互鍏堣繘鍏堝嚭鐨勯『搴忔帴鍙楁秷鎭傜劧鑰?WM_PAINT鏄竴涓緥澶栵紝鍚屼竴涓獥鍙g殑澶氫釜 WM_PAINT琚悎騫舵垚涓涓?WM_PAINT 娑堟伅, 鍚堝茍鎵鏈夌殑鏃犳晥鍖哄煙鍒頒竴涓棤鏁堝尯鍩熴傚悎騫禬M_PAIN鐨勭洰鐨勬槸涓轟簡鍑忓皯鍒鋒柊紿楀彛鐨勬鏁般?br />聽聽聽 闈為槦鍒楁秷鎭皢浼氱粫榪囩郴緇熼槦鍒楀拰娑堟伅闃熷垪錛岀洿鎺ュ皢娑堟伅鍙戦佸埌紿楀彛榪囩▼錛屻傜郴緇熷彂閫侀潪闃熷垪娑堟伅閫氱煡紿楀彛錛岀郴緇熷彂閫佹秷鎭氱煡紿楀彛銆?渚嬪,褰撶敤鎴鋒縺媧諱竴涓獥鍙g郴緇熷彂閫乄M_ACTIVATE, WM_SETFOCUS, and WM_SETCURSOR銆傝繖浜涙秷鎭氱煡紿楀彛瀹冭嬋媧諱簡銆傞潪闃熷垪娑堟伅涔熷彲浠ョ敱褰撳簲鐢ㄧ▼搴忚皟鐢ㄧ郴緇熷嚱鏁頒駭鐢熴備緥濡?褰撶▼搴忚皟鐢⊿etWindowPos緋葷粺鍙戦乄M_WINDOWPOSCHANGED娑堟伅銆備竴浜涘嚱鏁頒篃鍙戦侀潪闃熷垪娑堟伅錛屼緥濡備笅闈㈡垜浠璋堝埌鐨勫嚱鏁般?br />聽聽聽聽
聽聽聽聽 娑堟伅鐨勫彂閫?/font>
聽聽聽聽 浜嗚В浜嗕笂闈㈢殑榪欎簺鍩虹鐞嗚涔嬪悗錛屾垜浠氨鍙互榪涜涓涓嬬畝鍗曠殑娑堟伅鍙戦佷笌鎺ユ敹銆?br />聽聽聽聽 鎶婁竴涓秷鎭彂閫佸埌紿楀彛鏈?縐嶆柟寮忥細鍙戦併佸瘎閫佸拰騫挎挱銆?br />聽聽聽聽 鍙戦佹秷鎭殑鍑芥暟鏈塖endMessage銆丼endMessageCallback銆丼endNotifyMessage銆丼endMessageTimeout錛涘瘎閫佹秷鎭殑鍑芥暟涓昏鏈塒ostMessage銆丳ostThreadMessage銆丳ostQuitMessage錛涘箍鎾秷鎭殑鍑芥暟鎴戠煡閬撶殑鍙湁BroadcastSystemMessage銆丅roadcastSystemMessageEx銆?br />聽聽聽聽 SendMessage鐨勫師鍨嬪涓嬶細LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)錛岃繖涓嚱鏁頒富瑕佹槸鍚戜竴涓垨澶氫釜紿楀彛鍙戦佷竴鏉℃秷鎭紝涓鐩寸瓑鍒版秷鎭澶勭悊涔嬪悗鎵嶄細榪斿洖銆備笉榪囬渶瑕佹敞鎰忕殑鏄紝濡傛灉鎺ユ敹娑堟伅鐨勭獥鍙f槸鍚屼竴涓簲鐢ㄧ▼搴忕殑涓閮ㄥ垎錛岄偅涔堣繖涓獥鍙g殑紿楀彛鍑芥暟灝辮浣滀負涓涓瓙紼嬪簭椹笂琚皟鐢紱濡傛灉鎺ユ敹娑堟伅鐨勭獥鍙f槸琚彟澶栫殑綰跨▼鎵鍒涘緩鐨勶紝閭d箞紿楀彛緋葷粺灝卞垏鎹㈠埌鐩稿簲鐨勭嚎紼嬪茍涓旇皟鐢ㄧ浉搴旂殑紿楀彛鍑芥暟錛岃繖鏉℃秷鎭笉浼氳鏀捐繘鐩爣搴旂敤紼嬪簭闃熷垪涓傚嚱鏁扮殑榪斿洖鍊兼槸鐢辨帴鏀舵秷鎭殑紿楀彛鐨勭獥鍙e嚱鏁拌繑鍥烇紝榪斿洖鐨勫煎彇鍐充簬琚彂閫佺殑娑堟伅銆?br />聽聽聽聽 PostMessage鐨勫師鍨嬪涓嬶細BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)錛岃鍑芥暟鎶婁竴鏉℃秷鎭斁緗埌鍒涘緩hWnd紿楀彛鐨勭嚎紼嬬殑娑堟伅闃熷垪涓紝璇ュ嚱鏁頒笉絳夋秷鎭澶勭悊灝遍┈涓婂皢鎺у埗榪斿洖銆傞渶瑕佹敞鎰忕殑鏄紝濡傛灉hWnd鍙傛暟涓篐WND_BROADCAST錛岄偅涔堬紝娑堟伅灝嗚瀵勯佺粰緋葷粺涓殑鎵鏈夌殑閲嶅彔紿楀彛鍜屽脊鍑虹獥鍙o紝浣嗘槸瀛愮獥鍙d笉浼氭敹鍒拌娑堟伅錛涘鏋渉Wnd鍙傛暟涓篘ULL錛屽垯璇ュ嚱鏁扮被浼間簬灝哾wThreadID鍙傛暟璁劇疆鎴愬綋鍓嶇嚎紼嬬殑鏍囧織鏉ヨ皟鐢≒ostThreadMEssage鍑芥暟銆?br />銆銆銆浠庝笂闈㈢殑榪欙紥涓叿鏈変唬琛ㄦх殑鍑芥暟錛屾垜浠彲浠ョ湅鍑烘秷鎭殑鍙戦佹柟寮忓拰瀵勯佹柟寮忕殑鍖哄埆鎵鍦細琚彂閫佺殑娑堟伅鏄惁浼氳绔嬪嵆澶勭悊錛屽嚱鏁版槸鍚︾珛鍗寵繑鍥炪傝鍙戦佺殑娑堟伅浼氳绔嬪嵆澶勭悊錛屽鐞嗗畬姣曞悗鍑芥暟鎵嶄細榪斿洖錛涜瀵勯佺殑娑堟伅涓嶄細琚珛鍗沖鐞嗭紝浠栬鏀懼埌涓涓厛榪涘厛鍑虹殑闃熷垪涓紝涓鐩寸瓑鍒板簲鐢ㄧ▼搴忕┖綰跨殑鏃跺欐墠浼氳澶勭悊錛屼笉榪囧嚱鏁版斁緗秷鎭悗绔嬪嵆榪斿洖銆?br />銆銆銆瀹為檯涓婏紝鍙戦佹秷鎭埌涓涓獥鍙e鐞嗚繃紼嬪拰鐩存帴璋冪敤紿楀彛澶勭悊榪囩▼涔嬮棿騫舵病鏈夊お澶х殑鍖哄埆錛屼粬浠洿鎺ョ殑鍞竴鍖哄埆灝卞湪浜庝綘鍙互瑕佹眰鎿嶄綔緋葷粺鎴幏鎵鏈夎鍙戦佺殑娑堟伅錛屼絾鏄笉鑳藉鎴幏瀵圭獥鍙e鐞嗚繃紼嬬殑鐩存帴璋冪敤銆?br />銆銆銆浠ュ瘎閫佹柟寮忓彂閫佺殑娑堟伅閫氬父鏄笌鐢ㄦ埛杈撳叆浜嬩歡鐩稿搴旂殑錛屽洜涓鴻繖浜涗簨浠朵笉鏄崄鍒嗙揣榪紝鍙互榪涜緙撴參鐨勭紦鍐插鐞嗭紝渚嬪榧犳爣銆侀敭鐩樻秷鎭細琚瘎閫侊紝鑰屾寜閽瓑娑堟伅鍒欎細琚彂閫併?br />銆銆銆騫挎挱娑堟伅鐢ㄥ緱姣旇緝灝戯紝BroadcastSystemMessage鍑芥暟鍘熷瀷濡備笅錛?br />聽聽聽聽聽 long BroadcastSystemMessage(DWORD dwFlags,LPDWORD lpdwRecipients,UINT uiMessage,WPARAM wParam,LPARAM lParam);璇ュ嚱鏁板彲浠ュ悜鎸囧畾鐨勬帴鏀惰呭彂閫佷竴鏉℃秷鎭紝榪欎簺鎺ユ敹鑰呭彲浠ユ槸搴旂敤紼嬪簭銆佸彲瀹夎鐨勯┍鍔ㄧ▼搴忋佺綉緇滈┍鍔ㄧ▼搴忋佺郴緇熺駭鍒殑璁懼椹卞姩娑堟伅鍜屼粬浠殑浠繪剰緇勫悎銆傞渶瑕佹敞鎰忕殑鏄紝濡傛灉dwFlags鍙傛暟鏄疊SF_QUERY騫朵笖鑷沖皯涓涓帴鏀惰呰繑鍥炰簡BROADCAST_QUERY_DENY錛屽垯榪斿洖鍊間負錛愶紝濡傛灉娌℃湁鎸囧畾BSF_QUERY錛屽垯鍑芥暟灝嗘秷鎭彂閫佺粰鎵鏈夋帴鏀惰咃紝騫朵笖蹇界暐鍏惰繑鍥炲箋?

銆銆銆娑堟伅鐨勬帴鏀?/font>
銆銆
娑堟伅鐨勬帴鏀朵富瑕佹湁錛撲釜鍑芥暟錛欸etMessage銆丳eekMessage銆乄aitMessage銆?br />銆銆銆GetMessage鍘熷瀷濡備笅錛欱OOL GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax);璇ュ嚱鏁扮敤鏉ヨ幏鍙栦笌hWnd鍙傛暟鎵鎸囧畾鐨勭獥鍙g浉鍏崇殑涓攚MsgFilterMin鍜寃MsgFilterMax鍙傛暟鎵緇欏嚭鐨勬秷鎭艱寖鍥村唴鐨勬秷鎭傞渶瑕佹敞鎰忕殑鏄紝濡傛灉hWnd涓篘ULL錛屽垯GetMessage鑾峰彇灞炰簬璋冪敤璇ュ嚱鏁板簲鐢ㄧ▼搴忕殑浠諱竴紿楀彛鐨勬秷鎭紝濡傛灉wMsgFilterMin鍜寃MsgFilterMax閮芥槸錛愶紝鍒橤etMessage灝辮繑鍥炴墍鏈夊彲寰楀埌鐨勬秷鎭傚嚱鏁拌幏鍙栦箣鍚庡皢鍒犻櫎娑堟伅闃熷垪涓殑闄M_PAINT娑堟伅涔嬪鐨勫叾浠栨秷鎭紝鑷充簬WM_PAINT鍒欏彧鏈夊湪鍏跺鐞嗕箣鍚庢墠琚垹闄ゃ?br />銆銆銆PeekMessage鍘熷瀷濡備笅錛欱OOL PeekMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg錛夛紱璇ュ嚱鏁扮敤浜庢煡鐪嬪簲鐢ㄧ▼搴忕殑娑堟伅闃熷垪錛屽鏋滃叾涓湁娑堟伅灝卞皢鍏舵斁鍏pMsg鎵鎸囩殑緇撴瀯涓紝涓嶈繃錛屼笌GetMessage涓嶅悓鐨勬槸錛孭eekMessage鍑芥暟涓嶄細絳夊埌鏈夋秷鎭斁鍏ラ槦鍒楁椂鎵嶈繑鍥炪傚悓鏍鳳紝濡傛灉hWnd涓篘ULL錛屽垯PeekMessage鑾峰彇灞炰簬璋冪敤璇ュ嚱鏁板簲鐢ㄧ▼搴忕殑浠諱竴紿楀彛鐨勬秷鎭紝濡傛灉hWnd=-1錛岄偅涔堝嚱鏁板彧榪斿洖鎶奾Wnd鍙傛暟涓篘ULL鐨凱ostAppMessage鍑芥暟閫佸幓鐨勬秷鎭傚鏋渨MsgFilterMin鍜寃MsgFilterMax閮芥槸錛愶紝鍒橮eekMessage灝辮繑鍥炴墍鏈夊彲寰楀埌鐨勬秷鎭傚嚱鏁拌幏鍙栦箣鍚庡皢鍒犻櫎娑堟伅闃熷垪涓殑闄M_PAINT娑堟伅涔嬪鐨勫叾浠栨秷鎭紝鑷充簬WM_PAINT鍒欏彧鏈夊湪鍏跺鐞嗕箣鍚庢墠琚垹闄ゃ?br />銆銆銆WaitMessage鍘熷瀷濡備笅錛欱OOL VaitMessage();褰撲竴涓簲鐢ㄧ▼搴忔棤浜嬪彲鍋氭椂錛岃鍑芥暟灝卞皢鎺у埗鏉冧氦緇欏彟澶栫殑搴旂敤紼嬪簭錛屽悓鏃跺皢璇ュ簲鐢ㄧ▼搴忔寕璧鳳紝鐩村埌涓涓柊鐨勬秷鎭鏀懼叆搴旂敤紼嬪簭鐨勯槦鍒椾箣涓墠榪斿洖銆?/p>

聽聽聽聽聽 娑堟伅鐨勫鐞?/font>
銆銆銆鎺ヤ笅鏉ユ垜浠皥涓涓嬫秷鎭殑澶勭悊錛岄鍏堟垜浠潵鐪嬩竴涓媀C涓殑娑堟伅娉碉細
銆銆銆while(GetMessage(&msg, NULL, 0, 0))
聽聽聽聽聽 {
聽if(!TranslateAccelerator(msg.hWnd, hAccelTable, &msg))
聽聽聽聽聽聽聽聽 {
聽聽聽 TranslateMessage(&msg);
聽聽聽 DispatchMessage(&msg);
聽聽聽聽聽聽聽聽 }
聽聽聽聽聽 }

聽聽聽聽聽 棣栧厛錛孏etMessage浠庤繘紼嬬殑涓葷嚎紼嬬殑娑堟伅闃熷垪涓幏鍙栦竴涓秷鎭茍灝嗗畠澶嶅埗鍒癕SG緇撴瀯錛屽鏋滈槦鍒椾腑娌℃湁娑堟伅錛屽垯GetMessage鍑芥暟灝嗙瓑寰呬竴涓秷鎭殑鍒版潵浠ュ悗鎵嶈繑鍥炪?濡傛灉浣犲皢涓涓獥鍙e彞鏌勪綔涓虹浜屼釜鍙傛暟浼犲叆GetMessage錛岄偅涔堝彧鏈夋寚瀹氱獥鍙g殑鐨勬秷鎭彲浠ヤ粠闃熷垪涓幏寰椼侴etMessage涔熷彲浠ヤ粠娑堟伅闃熷垪涓繃婊ゆ秷鎭彧鎺ュ彈娑堟伅闃熷垪涓惤鍦ㄨ寖鍥村唴鐨勬秷鎭傝繖鏃跺欏氨瑕佸埄鐢℅etMessage錛廝eekMessage鎸囧畾涓涓秷鎭繃婊ゅ櫒銆傝繖涓繃婊ゅ櫒鏄竴涓秷鎭爣璇嗙鐨勮寖鍥存垨鑰呮槸涓涓獥浣撳彞鏌勶紝鎴栬呬袱鑰呭悓鏃舵寚瀹氥傚綋搴旂敤紼嬪簭瑕佹煡鎵句竴涓悗鍏ユ秷鎭槦鍒楃殑娑堟伅鏄緢鏈夌敤銆俉M_KEYFIRST 鍜?WM_KEYLAST 甯擱噺鐢ㄤ簬鎺ュ彈鎵鏈夌殑閿洏娑堟伅銆?WM_MOUSEFIRST 鍜?WM_MOUSELAST 甯擱噺鐢ㄤ簬鎺ュ彈鎵鏈夌殑榧犳爣娑堟伅銆?
銆銆銆鐒跺悗TranslateAccelerator鍒ゆ柇璇ユ秷鎭槸涓嶆槸涓涓寜閿秷鎭茍涓旀槸涓涓姞閫熼敭娑堟伅錛屽鏋滄槸錛屽垯璇ュ嚱鏁板皢鎶婂嚑涓寜閿秷鎭漿鎹㈡垚涓涓姞閫熼敭娑堟伅浼犻掔粰紿楀彛鐨勫洖璋冨嚱鏁般傚鐞嗕簡鍔犻熼敭涔嬪悗錛屽嚱鏁癟ranslateMessage灝嗘妸涓や釜鎸夐敭娑堟伅WM_KEYDOWN鍜學M_KEYUP杞崲鎴愪竴涓猈M_CHAR錛屼笉榪囬渶瑕佹敞鎰忕殑鏄紝娑堟伅WM_KEYDOWN,WM_KEYUP浠嶇劧灝嗕紶閫掔粰紿楀彛鐨勫洖璋冨嚱鏁般偮犅犅犅?
銆銆銆澶勭悊瀹屼箣鍚庯紝DispatchMessage鍑芥暟灝嗘妸姝ゆ秷鎭彂閫佺粰璇ユ秷鎭寚瀹氱殑紿楀彛涓凡璁懼畾鐨勫洖璋冨嚱鏁般傚鏋滄秷鎭槸WM_QUIT錛屽垯GetMessage榪斿洖錛愶紝浠庤岄鍑哄驚鐜綋銆傚簲鐢ㄧ▼搴忓彲浠ヤ嬌鐢≒ostQuitMessage鏉ョ粨鏉熻嚜宸辯殑娑堟伅寰幆銆傞氬父鍦ㄤ富紿楀彛鐨刉M_DESTROY娑堟伅涓皟鐢ㄣ?br />銆銆銆涓嬮潰鎴戜滑涓句竴涓父瑙佺殑灝忎緥瀛愭潵璇存槑榪欎釜娑堟伅娉電殑榪愮敤錛?br />銆銆銆if (::PeekMessage(&msg, m_hWnd, WM_KEYFIRST,WM_KEYLAST, PM_REMOVE))
聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽 if (msg.message == WM_KEYDOWN && msg.wParam == VK_ESCAPE)錛庯紟錛?br />聽聽聽聽聽 }
聽 銆銆榪欓噷鎴戜滑鎺ュ彈鎵鏈夌殑閿洏娑堟伅錛屾墍浠ュ氨鐢╓M_KEYFIRST 鍜?WM_KEYLAST浣滀負鍙傛暟銆傛渶鍚庝竴涓弬鏁板彲浠ユ槸PM_NOREMOVE 鎴栬?PM_REMOVE錛岃〃紺烘秷鎭俊鎭槸鍚﹀簲璇ヤ粠娑堟伅闃熷垪涓垹闄ゃ偮犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅?
聽聽聽 銆鎵浠ヨ繖孌靛皬浠g爜灝辨槸鍒ゆ柇鏄惁鎸変笅浜咵sc閿紝濡傛灉鏄氨榪涜澶勭悊銆?/p>

銆銆銆紿楀彛榪囩▼
銆銆銆紿楀彛榪囩▼鏄竴涓敤浜庡鐞嗘墍鏈夊彂閫佸埌榪欎釜紿楀彛鐨勬秷鎭殑鍑芥暟銆備換浣曚竴涓獥鍙g被閮芥湁涓涓獥鍙h繃紼嬨傚悓涓涓被鐨勭獥鍙d嬌鐢ㄥ悓鏍風殑紿楀彛榪囩▼鏉ュ搷搴旀秷鎭?緋葷粺鍙戦佹秷鎭粰紿楀彛榪囩▼灝嗘秷鎭暟鎹綔涓哄弬鏁頒紶閫掔粰浠栵紝娑堟伅鍒版潵涔嬪悗錛屾寜鐓ф秷鎭被鍨嬫帓搴忚繘琛屽鐞嗭紝鍏朵腑鐨勫弬鏁板垯鐢ㄦ潵鍖哄垎涓嶅悓鐨勬秷鎭紝紿楀彛榪囩▼浣跨敤鍙傛暟浜х敓鍚堥傝涓恒?br />銆銆銆涓涓獥鍙h繃紼嬩笉緇忓父蹇界暐娑堟伅錛屽鏋滀粬涓嶅鐞嗭紝瀹冧細灝嗘秷鎭紶鍥炲埌鎵ц榛樿鐨勫鐞嗐傜獥鍙h繃紼嬮氳繃璋冪敤DefWindowProc鏉ュ仛榪欎釜澶勭悊銆傜獥鍙h繃紼嬪繀欏籸eturn涓涓間綔涓哄畠鐨勬秷鎭鐞嗙粨鏋溿傚ぇ澶氭暟紿楀彛鍙鐞嗗皬閮ㄥ垎娑堟伅鍜屽皢鍏朵粬鐨勯氳繃DefWindowProc浼犻掔粰緋葷粺鍋氶粯璁ょ殑澶勭悊銆傜獥鍙h繃紼嬭鎵鏈夊睘浜庡悓涓涓被鐨勭獥鍙e叡浜紝鑳戒負涓嶅悓鐨勭獥鍙e鐞嗘秷鎭備笅闈㈡垜浠潵鐪嬩竴涓嬪叿浣撶殑瀹炰緥錛?br />銆銆銆LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
銆銆銆{
聽int wmId, wmEvent;
聽PAINTSTRUCT ps;
聽HDC hdc;
聽TCHAR szHello[MAX_LOADSTRING];
聽LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

聽switch (message)
聽{
聽聽case WM_COMMAND:
聽聽聽wmId聽聽聽 = LOWORD(wParam);
聽聽聽wmEvent = HIWORD(wParam);
聽聽聽// Parse the menu selections:
聽聽聽switch (wmId)
聽聽聽{
聽聽聽聽case IDM_ABOUT:
聽聽聽聽聽聽 DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
聽聽聽聽聽聽 break;
聽聽聽聽case IDM_EXIT:
聽聽聽聽聽聽 DestroyWindow(hWnd);
聽聽聽聽聽聽 break;
聽聽聽聽default:
聽聽聽聽聽聽 return DefWindowProc(hWnd, message, wParam, lParam);
聽聽聽}
聽聽聽break;
聽聽case WM_PAINT:
聽聽聽hdc = BeginPaint(hWnd, &ps);
聽聽聽// TODO: Add any drawing code here...
聽聽聽RECT rt;
聽聽聽GetClientRect(hWnd, &rt);
聽聽聽DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
聽聽聽EndPaint(hWnd, &ps);
聽聽聽break;
聽聽case WM_DESTROY:
聽聽聽PostQuitMessage(0);
聽聽聽break;
聽聽default:
聽聽聽return DefWindowProc(hWnd, message, wParam, lParam);
聽 銆銆銆 }
聽 銆銆 return 0;
銆銆銆}

銆銆銆娑堟伅鍒嗘祦鍣?/font>
銆銆銆閫氬父鐨勭獥鍙h繃紼嬫槸閫氳繃涓涓猻witch璇彞鏉ュ疄鐜扮殑錛岃繖涓簨鎯呭緢鐑︼紝鏈夋病鏈夋洿綆渚跨殑鏂規硶鍛紵鏈夛紝閭e氨鏄秷鎭垎嫻佸櫒錛屽埄鐢ㄦ秷鎭垎嫻佸櫒錛屾垜浠彲浠ユ妸switch璇彞鍒嗘垚鏇村皬鐨勫嚱鏁幫紝姣忎竴涓秷鎭兘瀵瑰簲涓涓皬鍑芥暟錛岃繖鏍峰仛鐨勫ソ澶勫氨鏄娑堟伅鏇村鏄撶鐞嗐?br />銆銆銆涔嬫墍浠ヨ縐頒負娑堟伅鍒嗘祦鍣紝灝辨槸鍥犱負瀹冨彲浠ュ浠諱綍娑堟伅榪涜鍒嗘祦銆備笅闈㈡垜浠仛涓涓嚱鏁板氨寰堟竻妤氫簡錛?br />銆銆銆void MsgCracker(HWND hWnd,int id,HWND hWndCtl,UINT codeNotify)
聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽 switch(id)
聽聽聽聽聽聽聽聽聽 {
聽聽聽聽 case ID_A:
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(codeNotify==EN_CHANGE)...
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 break;
聽聽聽聽聽聽聽聽聽聽聽聽 case ID_B:
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if(codeNotify==BN_CLICKED)...
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 break;
聽聽聽聽聽聽聽聽聽聽聽聽 ....
聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽 }
聽聽聽聽聽 鐒跺悗鎴戜滑淇敼涓涓嬬獥鍙h繃紼嬶細
銆銆銆LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
聽聽聽聽聽 {
聽switch(message)
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 HANDLE_MSG(hWnd,WM_COMMAND,MsgCracker);
聽聽聽聽聽聽聽聽聽聽聽聽 HANDLE_MSG(hWnd,WM_DESTROY,MsgCracker);
聽聽聽聽 default:
聽聽return DefWindowProc(hWnd, message, wParam, lParam);
聽 銆銆銆 }
聽 銆銆聽聽 return 0;
銆銆銆}
聽聽聽聽聽 鍦╓indowsX.h涓畾涔変簡濡備笅鐨凥ANDLE_MSG瀹忥細
銆銆銆#define HANDLE_MSG(hwnd,msg,fn) \
聽聽聽聽聽聽聽聽聽聽聽聽 switch(msg): return HANDLE_##msg((hwnd),(wParam),(lParam),(fn));
聽聽聽聽聽 瀹為檯涓婏紝HANDLE_WM_XXXX閮芥槸瀹忥紝渚嬪錛欻ANDLE_MSG(hWnd,WM_COMMAND,MsgCracker);灝嗚杞崲鎴愬涓嬪畾涔夛細
銆銆銆#define HANDLE_WM_COMMAND(hwnd,wParam,lParam,fn)\
聽聽聽聽聽聽聽聽聽聽聽聽 ((fn)((hwnd),(int)(LOWORD(wParam)),(HWND)(lParam),(UINT)HIWORD(wParam)),0L);
聽聽聽聽聽 濂戒簡錛屼簨鎯呭埌浜嗚繖涓姝ワ紝搴旇涓鍒囬兘鏄庢湕浜嗐?br />銆銆銆涓嶈繃錛屾垜浠彂鐜板湪windowsx.h閲岄潰榪樻湁涓涓畯錛欶ORWARD_WM_XXXX錛屾垜浠繕鏄偅WM_COMMAND涓轟緥錛岃繘琛屽垎鏋愶細
銆銆銆#define FORWARD_WM_COMMAND(hwnd, id, hwndCtl, codeNotify, fn) \
聽聽聽聽 (void)(fn)((hwnd), WM_COMMAND, MAKEWPARAM((UINT)(id),(UINT)(codeNotify)), (LPARAM)(HWND)(hwndCtl))
銆銆銆鎵浠ュ疄闄呬笂錛孎ORWARD_WM_XXXX灝嗘秷鎭弬鏁拌繘琛屼簡閲嶆柊鏋勯狅紝鐢熸垚浜唚Param && lParam錛岀劧鍚庤皟鐢ㄤ簡鎴戜滑瀹氫箟鐨勫嚱鏁般?br />銆銆銆濂戒簡錛屼簨鎯呭埌榪欓噷涔熺畻鏄篃孌佃惤浜嗭紝鏄庡ぉ鎴戜滑鍐嶅垎鏋愭秷鎭湪MFC涓殑澶勭悊銆?/p>

]]>
杞創:娣卞害瑙f瀽VC涓殑娑堟伅(涓?http://m.shnenglu.com/cppblog/archive/2006/07/20/10244.html娼滈緳灞?/dc:creator>娼滈緳灞?/author>Thu, 20 Jul 2006 03:19:00 GMThttp://m.shnenglu.com/cppblog/archive/2006/07/20/10244.htmlhttp://m.shnenglu.com/cppblog/comments/10244.htmlhttp://m.shnenglu.com/cppblog/archive/2006/07/20/10244.html#Feedback0http://m.shnenglu.com/cppblog/comments/commentRss/10244.htmlhttp://m.shnenglu.com/cppblog/services/trackbacks/10244.html
娑堟伅鏄寚浠涔堬紵
娑堟伅緋葷粺瀵逛簬涓涓獁in32紼嬪簭鏉ヨ鍗佸垎閲嶈錛屽畠鏄竴涓▼搴忚繍琛岀殑鍔ㄥ姏婧愭硥銆備竴涓秷鎭紝鏄郴緇熷畾涔夌殑涓涓?2浣嶇殑鍊鹼紝浠栧敮涓鐨勫畾涔変簡涓涓簨浠訛紝鍚慦indows鍙戝嚭涓涓氱煡錛屽憡璇夊簲鐢ㄧ▼搴忔煇涓簨鎯呭彂鐢熶簡銆備緥濡傦紝鍗曞嚮榧犳爣銆佹敼鍙樼獥鍙e昂瀵搞佹寜涓嬮敭鐩樹笂鐨勪竴涓敭閮戒細浣縒indows鍙戦佷竴涓秷鎭粰搴旂敤紼嬪簭銆?br />娑堟伅鏈韓鏄綔涓轟竴涓褰曚紶閫掔粰搴旂敤紼嬪簭鐨勶紝榪欎釜璁板綍涓寘鍚簡娑堟伅鐨勭被鍨嬩互鍙婂叾浠栦俊鎭備緥濡傦紝瀵逛簬鍗曞嚮榧犳爣鎵浜х敓鐨勬秷鎭潵璇達紝榪欎釜璁板綍涓寘鍚簡鍗曞嚮榧犳爣鏃剁殑鍧愭爣銆傝繖涓褰曠被鍨嬪彨鍋歁SG錛孧SG鍚湁鏉ヨ嚜windows搴旂敤紼嬪簭娑堟伅闃熷垪鐨勬秷鎭俊鎭紝瀹冨湪Windows涓0鏄庡涓嬶細
typedef struct tagMsg
{
HWND hwnd; 鎺ュ彈璇ユ秷鎭殑紿楀彛鍙ユ焺
UINT message; 娑堟伅甯擱噺鏍囪瘑絎︼紝涔熷氨鏄垜浠氬父鎵璇寸殑娑堟伅鍙?br />WPARAM wParam; 32浣嶆秷鎭殑鐗瑰畾闄勫姞淇℃伅錛岀‘鍒囧惈涔変緷璧栦簬娑堟伅鍊?br />LPARAM lParam; 32浣嶆秷鎭殑鐗瑰畾闄勫姞淇℃伅錛岀‘鍒囧惈涔変緷璧栦簬娑堟伅鍊?br />DWORD time; 娑堟伅鍒涘緩鏃剁殑鏃墮棿
POINT pt; 娑堟伅鍒涘緩鏃剁殑榧犳爣/鍏夋爣鍦ㄥ睆騫曞潗鏍囩郴涓殑浣嶇疆
}MSG;
娑堟伅鍙互鐢辯郴緇熸垨鑰呭簲鐢ㄧ▼搴忎駭鐢熴傜郴緇熷湪鍙戠敓杈撳叆浜嬩歡鏃朵駭鐢熸秷鎭備婦涓緥瀛? 褰撶敤鎴鋒暡閿? 縐誨姩榧犳爣鎴栬呭崟鍑繪帶浠躲傜郴緇熶篃浜х敓娑堟伅浠ュ搷搴旂敱搴旂敤紼嬪簭甯︽潵鐨勫彉鍖? 姣斿搴旂敤紼嬪簭鏀瑰彉緋葷粺瀛椾綋鏀瑰彉紿椾綋澶у皬銆傚簲鐢ㄧ▼搴忓彲浠ヤ駭鐢熸秷鎭嬌紿椾綋鎵ц浠誨姟錛屾垨鑰呬笌鍏朵粬搴旂敤紼嬪簭涓殑紿楀彛閫氳銆?

娑堟伅涓湁浠涔堬紵
鎴戜滑緇欏嚭浜嗕笂闈㈢殑娉ㄩ噴錛屾槸涓嶆槸浼氬娑堟伅緇撴瀯鏈変簡涓涓瘮杈冩竻妤氱殑璁よ瘑錛熷鏋滆繕娌℃湁錛岄偅涔堟垜浠啀璇曠潃緇欏嚭涓嬮潰鐨勮В閲婏細
hwnd 32浣嶇殑紿楀彛鍙ユ焺銆傜獥鍙e彲浠ユ槸浠諱綍綾誨瀷鐨勫睆騫曞璞★紝鍥犱負Win32鑳藉緇存姢澶у鏁板彲瑙嗗璞$殑鍙ユ焺(紿楀彛銆佸璇濇銆佹寜閽佺紪杈戞絳?銆?br />message鐢ㄤ簬鍖哄埆鍏朵粬娑堟伅鐨勫父閲忓鹼紝榪欎簺甯擱噺鍙互鏄疻indows鍗曞厓涓瀹氫箟鐨勫父閲忥紝涔熷彲浠ユ槸鑷畾涔夌殑甯擱噺銆傛秷鎭爣璇嗙浠ュ父閲忓懡鍚嶇殑鏂瑰紡鎸囧嚭娑堟伅鐨勫惈涔夈傚綋紿楀彛榪囩▼鎺ユ敹鍒版秷鎭箣鍚庯紝浠栧氨浼氫嬌鐢ㄦ秷鎭爣璇嗙鏉ュ喅瀹氬浣曞鐞嗘秷鎭備緥濡傘乄M_PAINT鍛婅瘔紿楀彛榪囩▼紿椾綋瀹㈡埛鍖鴻鏀瑰彉浜嗛渶瑕侀噸緇樸傜鍙峰父閲忔寚瀹氱郴緇熸秷鎭睘浜庣殑綾誨埆錛屽叾鍓嶇紑鎸囨槑浜嗗鐞嗚В閲婃秷鎭殑紿椾綋鐨勭被鍨嬨?br />wParam 閫氬父鏄竴涓笌娑堟伅鏈夊叧鐨勫父閲忓鹼紝涔熷彲鑳芥槸紿楀彛鎴栨帶浠剁殑鍙ユ焺銆?br />lParam 閫氬父鏄竴涓寚鍚戝唴瀛樹腑鏁版嵁鐨勬寚閽堛傜敱浜嶹Param銆乴Param鍜孭ointer閮芥槸32浣嶇殑錛屽洜姝わ紝瀹冧滑涔嬮棿鍙互鐩鎬簰杞崲銆?br />
娑堟伅鏍囪瘑絎︾殑鍊?br />緋葷粺淇濈暀娑堟伅鏍囪瘑絎︾殑鍊煎湪0x0000鍦?x03ff(WM_USER-1)鑼冨洿銆傝繖浜涘艱緋葷粺瀹氫箟娑堟伅浣跨敤銆?搴旂敤紼嬪簭涓嶈兘浣跨敤榪欎簺鍊肩粰鑷繁鐨勬秷鎭傛垜浠『渚胯涓涓嬪叿鏈夋爣蹇楁х殑娑堟伅鍊鹼細
WM_NULL---0x0000 絀烘秷鎭?br />0x0001----0x0087 涓昏鏄獥鍙f秷鎭?br />0x00A0----0x00A9 闈炲鎴峰尯娑堟伅
0x0100----0x0108 閿洏娑堟伅
0x0111----0x0126 鑿滃崟娑堟伅
0x0132----0x0138 棰滆壊鎺у埗娑堟伅
0x0200----0x020A 榧犳爣娑堟伅
0x0211----0x0213 鑿滃崟寰幆娑堟伅
0x0220----0x0230 澶氭枃妗f秷鎭?br />0x03E0----0x03E8 DDE娑堟伅
0x0400 WM_USER
0x8000 WM_APP
0x0400----0x7FFF 搴旂敤紼嬪簭鑷畾涔夌鏈夋秷鎭?br />
娑堟伅鏈夊摢鍑犵錛?br />鍏跺疄錛寃indows涓殑娑堟伅铏界劧寰堝錛屼絾鏄綾誨茍涓嶇箒鏉傦紝澶т綋涓婃湁3縐嶏細紿楀彛娑堟伅銆佸懡浠ゆ秷鎭拰鎺т歡閫氱煡娑堟伅銆?br />紿楀彛娑堟伅澶ф鏄郴緇熶腑鏈涓哄父瑙佺殑娑堟伅錛屽畠鏄寚鐢辨搷浣滅郴緇熷拰鎺у埗鍏朵粬紿楀彛鐨勭獥鍙f墍浣跨敤鐨勬秷鎭備緥濡侰reateWindow銆丏estroyWindow鍜孧oveWindow絳夐兘浼氭縺鍙戠獥鍙f秷鎭紝榪樻湁鎴戜滑鍦ㄤ笂闈㈣皥鍒扮殑鍗曞嚮榧犳爣鎵浜х敓鐨勬秷鎭篃鏄竴縐嶇獥鍙f秷鎭?br />鍛戒護娑堟伅錛岃繖鏄竴縐嶇壒孌婄殑紿楀彛娑堟伅錛屼粬鐢ㄦ潵澶勭悊浠庝竴涓獥鍙e彂閫佸埌鍙︿竴涓獥鍙g殑鐢ㄦ埛璇鋒眰錛屼緥濡傛寜涓嬩竴涓寜閽紝浠栧氨浼氬悜涓葷獥鍙e彂閫佷竴涓懡浠ゆ秷鎭?br />鎺т歡閫氱煡娑堟伅錛屾槸鎸囪繖鏍蜂竴縐嶆秷鎭紝涓涓獥鍙e唴鐨勫瓙鎺т歡鍙戠敓浜嗕竴浜涗簨鎯咃紝闇瑕侀氱煡鐖剁獥鍙c傞氱煡娑堟伅鍙傜敤浜庢爣鍑嗙殑紿楀彛鎺т歡濡傛寜閽佸垪琛ㄦ銆佺粍鍚堟銆佺紪杈戞錛屼互鍙奧indows鍏叡鎺т歡濡傛爲鐘惰鍥俱佸垪琛ㄨ鍥劇瓑銆備緥濡傦紝鍗曞嚮鎴栧弻鍑諱竴涓帶浠躲佸湪鎺т歡涓夋嫨閮ㄥ垎鏂囨湰銆佹搷浣滄帶浠剁殑婊氬姩鏉¢兘浼氫駭鐢熼氱煡娑堟伅銆?濂圭被浼間簬鍛戒護娑堟伅錛屽綋鐢ㄦ埛涓庢帶浠剁獥鍙d氦浜掓椂錛岄偅涔堟帶浠墮氱煡娑堟伅灝變細浠庢帶浠剁獥鍙e彂閫佸埌瀹冪殑涓葷獥鍙c備絾鏄繖縐嶆秷鎭殑瀛樺湪騫朵笉鏄負浜嗗鐞嗙敤鎴峰懡浠わ紝鑰屾槸涓轟簡璁╀富紿楀彛鑳藉鏀瑰彉鎺т歡錛屼緥濡傚姞杞姐佹樉紺烘暟鎹備緥濡傛寜涓嬩竴涓寜閽紝浠栧悜鐖剁獥鍙e彂閫佺殑娑堟伅涔熷彲浠ョ湅浣滄槸涓涓帶浠墮氱煡娑堟伅錛涘崟鍑婚紶鏍囨墍浜х敓鐨勬秷鎭彲浠ョ敱涓葷獥鍙g洿鎺ュ鐞嗭紝鐒跺悗浜ょ粰鎺т歡紿楀彛澶勭悊銆?br />鍏朵腑紿楀彛娑堟伅鍙婃帶浠墮氱煡娑堟伅涓昏鐢辯獥鍙g被鍗崇洿鎺ユ垨闂存帴鐢盋WND綾繪淳鐢熺被澶勭悊銆傜浉瀵圭獥鍙f秷鎭強鎺т歡閫氱煡娑堟伅鑰岃█錛屽懡浠ゆ秷鎭殑澶勭悊瀵硅薄鑼冨洿灝卞箍寰楀錛屽畠涓嶄粎鍙互鐢辯獥鍙g被澶勭悊錛岃繕鍙互鐢辨枃妗g被錛屾枃妗fā鏉跨被鍙婂簲鐢ㄧ被鎵澶勭悊銆?br />鐢變簬鎺т歡閫氱煡娑堟伅寰堥噸瑕佺殑錛屼漢浠敤鐨勪篃姣旇緝澶氾紝浣嗘槸鍏蜂綋鐨勫惈涔夊線寰浠ゅ垵瀛﹁呮檿澶磋漿鍚戯紝鎵浠ユ垜鍐沖畾鎶婂父瑙佺殑鍑犱釜鍒楀嚭鏉ヤ緵澶у鍙傝冿細
鎸夋壄鎺т歡
BN_CLICKED 鐢ㄦ埛鍗曞嚮浜嗘寜閽?br />BN_DISABLE 鎸夐挳琚姝?br />BN_DOUBLECLICKED 鐢ㄦ埛鍙屽嚮浜嗘寜閽?br />BN_HILITE 鐢?鎴峰姞浜簡鎸夐挳
BN_PAINT 鎸夐挳搴斿綋閲嶇敾
BN_UNHILITE 鍔犱寒搴斿綋鍘繪帀
緇勫悎妗嗘帶浠?br />CBN_CLOSEUP 緇勫悎妗嗙殑鍒楄〃妗嗚鍏抽棴
CBN_DBLCLK 鐢ㄦ埛鍙屽嚮浜嗕竴涓瓧絎︿覆
CBN_DROPDOWN 緇勫悎妗嗙殑鍒楄〃妗嗚鎷夊嚭
CBN_EDITCHANGE 鐢ㄦ埛淇敼浜嗙紪杈戞涓殑鏂囨湰
CBN_EDITUPDATE 緙栬緫妗嗗唴鐨勬枃鏈嵆灝嗘洿鏂?br />CBN_ERRSPACE 緇勫悎妗嗗唴瀛樹笉瓚?br />CBN_KILLFOCUS 緇勫悎妗嗗け鍘昏緭鍏ョ劍鐐?br />CBN_SELCHANGE 鍦ㄧ粍鍚堟涓夋嫨浜嗕竴欏?br />CBN_SELENDCANCEL 鐢ㄦ埛鐨勯夋嫨搴斿綋琚彇娑?br />CBN_SELENDOK 鐢ㄦ埛鐨勯夋嫨鏄悎娉曠殑
CBN_SETFOCUS 緇勫悎妗嗚幏寰楄緭鍏ョ劍鐐?br />緙栬緫妗嗘帶浠?br />EN_CHANGE 緙栬緫妗嗕腑鐨勬枃鏈繁鏇存柊
EN_ERRSPACE 緙栬緫妗嗗唴瀛樹笉瓚?br />EN_HSCROLL 鐢ㄦ埛鐐瑰嚮浜嗘按騫蟲粴鍔ㄦ潯
EN_KILLFOCUS 緙栬緫妗嗘鍦ㄥけ鍘昏緭鍏ョ劍鐐?br />EN_MAXTEXT 鎻掑叆鐨勫唴瀹硅鎴柇
EN_SETFOCUS 緙栬緫妗嗚幏寰楄緭鍏ョ劍鐐?br />EN_UPDATE 緙栬緫妗嗕腑鐨勬枃鏈皢瑕佹洿鏂?br />EN_VSCROLL 鐢ㄦ埛鐐瑰嚮浜嗗瀭鐩存粴鍔ㄦ潯娑堟伅鍚箟
鍒楄〃妗嗘帶浠?br />LBN_DBLCLK 鐢ㄦ埛鍙屽嚮浜嗕竴欏?br />LBN_ERRSPACE 鍒楄〃妗嗗唴瀛樹笉澶?br />LBN_KILLFOCUS 鍒楄〃妗嗘鍦ㄥけ鍘昏緭鍏ョ劍鐐?br />LBN_SELCANCEL 閫夋嫨琚彇娑?br />LBN_SELCHANGE 閫夋嫨浜嗗彟涓欏?br />LBN_SETFOCUS 鍒楄〃妗嗚幏寰楄緭鍏ョ劍鐐?br />

]]>
CWnd涓嬪嚑涓浉浼肩殑WindowMessage Functions鐨勮璁?/title><link>http://m.shnenglu.com/cppblog/archive/2006/07/20/10242.html</link><dc:creator>娼滈緳灞?/dc:creator><author>娼滈緳灞?/author><pubDate>Thu, 20 Jul 2006 00:40:00 GMT</pubDate><guid>http://m.shnenglu.com/cppblog/archive/2006/07/20/10242.html</guid><wfw:comment>http://m.shnenglu.com/cppblog/comments/10242.html</wfw:comment><comments>http://m.shnenglu.com/cppblog/archive/2006/07/20/10242.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/cppblog/comments/commentRss/10242.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/cppblog/services/trackbacks/10242.html</trackback:ping><description><![CDATA[ <strong>棣栧厛姒傝鐨勮<br /></strong>SendMessage<br />鍚慍Wnd瀵硅薄鍙戦佷竴涓秷鎭紝<strong>鐩村埌榪欐潯娑堟伅琚鐞嗕箣鍚庢墠榪斿洖<br /></strong>PostMessage<br />灝嗕竴鏉℃秷鎭斁鍏ュ簲鐢ㄧ▼搴忕殑娑堟伅闃熷垪錛?strong>鐒跺悗涓嶇瓑紿楀彛澶勭悊榪欐潯娑堟伅鐩存帴榪斿洖<br /></strong>SendNotifyMessage<br />灝嗕竴鏉℃秷鎭彂閫佸埌紿楀彛騫跺敖蹇繑鍥烇紝<strong>榪斿洖鐨勯熷害鍙栧喅浜庤紿楀彛鏄惁鏄敱璋冪敤綰跨▼鎵鍒涘緩<br />涓嬮潰鎴戦愭潯緇嗙粏璇存槑<br /></strong>CWnd::SendMessage<br />LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAMlParam = 0 );<br />榪斿洖鍊?: <strong>娑堟伅澶勭悊鐨勭粨鏋滐紱瀹冪殑鍊間緷璧栦簬鍙戦佺殑娑堟伅銆?/strong><br />鍙傛暟 : message聽聽聽 鎸囧畾浜嗚鍙戦佺殑娑堟伅銆?br />聽聽聽聽聽聽聽聽聽聽聽 wParam聽聽聽 鎸囧畾浜嗕笌娑堟伅鏈夊叧鐨勯檮鍔犱俊鎭?br />聽聽聽聽聽聽聽聽聽聽聽 lParam聽聽聽聽聽 鎸囧畾浜嗕笌娑堟伅鏈夊叧鐨勯檮鍔犱俊鎭?br />璇存槑 :聽 榪欎釜鍑芥暟鍚戠獥鍙e彂閫佹寚瀹氱殑娑堟伅 銆?br />聽聽聽聽聽聽聽聽聽聽聽聽 SendMessage鎴愬憳鍑芥暟鐩存帴璋冪敤紿楀彛榪囩▼騫跺湪紿楀彛榪囩▼澶勭悊浜嗘秷鎭互鍚庢墠榪斿洖銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽 榪欎笌PostMessage鎴愬憳鍑芥暟褰㈡垚瀵規瘮錛岃鍑芥暟灝嗘秷鎭斁鍏ョ獥鍙g殑娑堟伅闃熷垪騫剁珛鍗寵繑鍥炪?br /><br /><br />CWnd::PostMessage<br />BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam =0 );<br />榪斿洖鍊?: <strong>濡傛灉鍏竷浜嗘秷鎭紝鍒欒繑鍥為潪闆跺鹼紱鍚﹀垯榪斿洖0銆?/strong><br />鍙傛暟 :聽聽聽 message聽聽聽 鎸囧畾浜嗚鍏竷鐨勬秷鎭?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽 wParam聽聽聽 鎸囧畾浜嗛檮鍔犵殑娑堟伅淇℃伅銆傝繖涓弬鏁扮殑鍐呭渚濊禆浜庤鍏竷鐨勬秷鎭?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽lParam聽聽聽聽聽鎸囧畾浜嗛檮鍔犵殑娑堟伅淇℃伅銆傝繖涓弬鏁扮殑鍐呭渚濊禆浜庤鍏竷鐨勬秷鎭?br />璇存槑 : 榪欎釜鍑芥暟灝嗕竴涓秷鎭斁鍏ョ獥鍙g殑娑堟伅闃熷垪錛岀劧鍚庣洿鎺ヨ繑鍥烇紝騫朵笉絳夊緟瀵瑰簲鐨勭獥鍙e鐞嗘秷鎭?br />聽聽聽聽聽聽聽聽聽聽 娑堟伅闃熷垪涓殑娑堟伅鏄氳繃璋冪敤Windows鐨凣etMessage鎴朠eekMessage鍑芥暟鏉ヨ幏寰楃殑銆傚彲浠ラ氳繃Windows鐨凱ostMessage鍑芥暟鏉ヨ闂叾瀹冨簲鐢ㄧ▼搴忋?br /><br /><br />CWnd::SendNotifyMessage<br />BOOL SendNotifyMessage( UINT message, WPARAM wParam, LPARAMlParam );<br />榪斿洖鍊悸?: <strong>濡傛灉鍑芥暟鎴愬姛錛屽垯榪斿洖闈為浂鍊鹼紱鍚﹀垯榪斿洖0銆?br /></strong>鍙傛暟 :聽聽聽聽 message聽聽聽 鎸囧畾浜嗚鍙戦佺殑娑堟伅銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 wParam聽聽聽 鎸囧畾浜嗕笌娑堟伅鏈夊叧鐨勯檮鍔犱俊鎭?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 lParam聽聽聽聽聽 鎸囧畾浜嗕笌娑堟伅鏈夊叧鐨勯檮鍔犱俊鎭?br />璇存槑 : 榪欎釜鍑芥暟鍚戠獥鍙e彂閫佹寚瀹氱殑娑堟伅銆?br />聽聽聽聽聽聽聽聽聽聽聽 濡傛灉紿楀彛鏄敱璋冪敤綰跨▼鍒涘緩鐨勶紝鍒橲endNotifyMessage璋冪敤紿楀彛鐨勭獥鍙h繃紼嬶紝騫跺湪紿楀彛澶勭悊浜嗘秷鎭箣鍚庤繑鍥炪傚鏋滅獥鍙f槸鐢卞叾瀹冪嚎紼嬪垱寤虹殑錛屽垯SendNotifyMessage灝嗘秷鎭紶閫掔粰紿楀彛榪囩▼騫剁珛鍗寵繑鍥烇紱瀹冨茍涓嶇瓑寰呯獥鍙h繃紼嬬粨鏉熷鐞嗘秷鎭?br /><br /><br />綆鍗曟葷粨涓涓嬶紝<br />聽聽聽<strong>PostMessage鍙礋璐e皢娑堟伅鏀懼埌娑堟伅闃熷垪涓紝涓嶇‘瀹氫綍鏃跺強鏄惁澶勭悊<br />聽聽聽聽SendMessage瑕佺瓑鍒板彈鍒版秷鎭鐞嗙殑榪斿洖鐮侊紙DWord綾誨瀷錛夊悗鎵嶇戶緇?br />聽聽聽聽PostMessage鎵ц鍚庨┈涓婅繑鍥?br />聽聽聽聽SendMessage蹇呴』絳夊埌娑堟伅琚鐞嗗悗鎵嶄細榪斿洖銆?br /></strong>聽聽聽<strong>SendMessage娑堟伅鍙戝嚭鍚庯紝濡備笉鑳藉敖蹇緱鍒拌В鍐沖搷搴旓紝鍒欎細瀵艱嚧紼嬪簭鐨勫仠婊烇紝鎵浠ユ鍑芥暟鎱庣敤銆侾ostMessage鍒欐棤姝ゅ悗鏋滐紝涓嶈繃浣犺鏄嬌鐢≒ostMessage錛岄偅浣犵殑娑堟伅涓嶇煡閬撹絳夊埌鐚村勾椹湀鎵嶈兘琚鐞嗐係endMessage鍙互淇濊瘉浣犵殑娑堟伅鍦ㄥ緱涓嶅埌澶勭悊鐨勬儏鍐典笅璋佷篃鍒兂鍔ㄤ綘鐨勭獥鍙c?br />聽聽聽聽 鏃犺鏄疨ostMessage榪樻槸SendMessage鍧囩敱涓葷嚎紼嬪鐞嗐?br />Windows鐨勭嚎紼嬫湁UI(鐢ㄦ埛鎺ュ彛)綰跨▼鍜屽伐浣滅嚎紼嬶紝涓鑸伐浣滅嚎紼嬫病鏈夎嚜宸辯殑娑堟伅寰幆錛岃孶I(鐢ㄦ埛鎺ュ彛)綰跨▼鏈夎嚜宸辯殑娑堟伅寰幆銆?br />聽聽聽 鎵浠ヤ竴鑸富綰跨▼搴旇鏄疷I(鐢ㄦ埛鎺ュ彛)綰跨▼錛屽叾浣欑殑澶勭悊鐗瑰畾浠誨姟鐨勭嚎紼嬮兘鏄伐浣滅嚎紼嬶紝瀹冧滑鎶婃秷鎭彂緇欎富綰跨▼錛岀敱涓葷嚎紼嬬殑娑堟伅澶勭悊鍑芥暟澶勭悊銆?br />SendMessage鏄樆濉炵殑錛屽畠瑕佺瓑鍒頒富綰跨▼澶勭悊瀹屾秷鎭悗鎵嶈繑鍥炵殑銆?br />鑰孭ostMessage鏄潪闃誨鐨勶紝璋冪敤涔嬪悗錛岀珛鍗寵繑鍥烇紝鑰屾病鏈夊幓鍏沖績涓葷嚎紼嬪張娌℃湁澶勭悊榪欎釜娑堟伅銆?br /></strong><img src ="http://m.shnenglu.com/cppblog/aggbug/10242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/cppblog/" target="_blank">娼滈緳灞?/a> 2006-07-20 08:40 <a href="http://m.shnenglu.com/cppblog/archive/2006/07/20/10242.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>綆榪癡C/MFC涓嬬獥鍙g殑鎷栨斁http://m.shnenglu.com/cppblog/archive/2006/07/18/10200.html娼滈緳灞?/dc:creator>娼滈緳灞?/author>Tue, 18 Jul 2006 09:40:00 GMThttp://m.shnenglu.com/cppblog/archive/2006/07/18/10200.htmlhttp://m.shnenglu.com/cppblog/comments/10200.htmlhttp://m.shnenglu.com/cppblog/archive/2006/07/18/10200.html#Feedback4http://m.shnenglu.com/cppblog/comments/commentRss/10200.htmlhttp://m.shnenglu.com/cppblog/services/trackbacks/10200.html紿楀彛鍦ㄦ帴鏀跺鎴峰尯鎴栭潪瀹㈡埛鍖虹殑榧犳爣娑堟伅涔嬪墠錛屽畠閮戒竴瀹氶鍏堟帴鏀跺埌鍏夋爣鐨勫睆騫曞潗鏍囧拰WM_NCHITTEST娑堟伅銆傚ぇ澶氭暟搴旂敤紼嬪簭騫朵笉澶勭悊WM_NCHITTEST娑堟伅錛岃屾槸璁¦indows鑷澶勭悊WM_NCHITTEST娑堟伅銆?br />渚嬬▼1[宸ョ▼鍚峢t]聽聽聽聽聽 鏈緥紼嬮樆姝㈠湪涓涓爣棰樻爮涓婄殑鍙屽嚮褰卞搷紿楀彛
澶存枃浠秇tView.h涓坊鍔燼fx_msg void OnNcLButtonDblClk(UINT nHitTest,CPoint point);
涓繪枃浠秇tView.cpp涓坊鍔燨N_WM_NCLBUTTONDBLCLK()鍜?br />void CHtView::OnNcLButtonDblClk(UINT nHitTest,CPoint point);
{
聽聽聽 if( nHitTest != HTCAPTION)
聽聽聽聽聽聽 CView::OnNcLButtonDblClk(nHitTest,point);
}



渚嬬▼2聽[宸ョ▼鍚峢it]聽聽聽聽 鏈緥紼嬪疄鐜頒簡瀹㈡埛鍖虹殑紿楀彛鎷栧姩
澶存枃浠秇itView.h涓坊鍔燼fx_msg UINT OnNcHitTest(CPoint point);
涓繪枃浠秇itView.cpp涓坊鍔燨N_WM_NCHITTEST()鍜?br />UINT CHitView::OnNcHitTest(CPoint point)
{
聽聽聽 UINT nHitTest = CView::OnNcHitTest(point);
聽聽聽 if(nHitTest == HTCLIENT)
聽聽聽 nHitTest = HTCAPTION;
聽聽 聽return nHitTest;
}

闇瑕佹簮浠g爜渚嬬▼鐨勫彲浠ョ粰鎴戠暀璦銆?img src ="http://m.shnenglu.com/cppblog/aggbug/10200.html" width = "1" height = "1" />

]]>
杞澆鑷ぉ铦庝箣宸?Windows緙栫▼涓璖etViewportOrg涓嶴etWindowOrg鐨勭悊瑙?http://m.shnenglu.com/cppblog/archive/2006/07/12/9716.html娼滈緳灞?/dc:creator>娼滈緳灞?/author>Wed, 12 Jul 2006 02:08:00 GMThttp://m.shnenglu.com/cppblog/archive/2006/07/12/9716.htmlhttp://m.shnenglu.com/cppblog/comments/9716.htmlhttp://m.shnenglu.com/cppblog/archive/2006/07/12/9716.html#Feedback2http://m.shnenglu.com/cppblog/comments/commentRss/9716.htmlhttp://m.shnenglu.com/cppblog/services/trackbacks/9716.htmlWindows緙栫▼涓璖etViewportOrg涓嶴etWindowOrg鐨勭悊瑙?/div>
鍏抽敭璇?/b>錛?MFC, 聽聽 SetWindowOrg, 聽聽 SetViewportOrg, 聽聽 娣卞叆嫻呭嚭MFC 聽聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽

鏈榪戠獊鐒跺張寰堟湁嬋鎯呯殑寮濮嬬湅Jeff Prosise鐨勯偅鏈?Programming Windows with MFC, 2 ed."銆傚敖綆℃槸鑻辨枃鐗堢殑錛屼絾鏄劅瑙夎繖鏈功涓婃墜姣斿枆緇撶殑閭f湰鎵璋撶殑 娣卞叆嫻呭嚭MFC 瑕佸鏄撶悊瑙g殑澶氥傚欏悓瀛︾粰浜轟竴縐嶆晠寮勭巹铏氭晠浣滄繁娌夌殑鎰熻錛岃孞eff Prosise鐨勮繖鏈功鎵嶇湡姝g殑縐板緱涓婃槸娣卞叆嫻呭嚭銆?/p>

灝界濡傛錛屽叾涓湁鍏矴DI緇樺浘涓殑鍧愭爣鏄犲皠閮ㄥ垎榪樻槸鏈変竴涓棶棰樻病鏈夋悶娓呮錛岄偅灝辨槸SetWindowOrg鍜孲etViewportOrg榪欎袱涓嚱鏁板埌搴曞簲璇ュ浣曠悊瑙c傛綐鐖辨皯緲昏瘧鐨勯偅鏈琕C鍐呭箷娌℃湁璁叉竻妤氾紱Jeff Prosise鐨勮繖鏈功娌℃湁璁叉竻妤氾紱MSDN涓婄殑涓滆タ鐪嬬殑涔熸槸涓澶撮浘姘達紱Charles Petzold鐨勯偅鏈功榪樻病鏈夋潵寰楀強鐪嬨傚洜涓鴻繖涓棶棰橈紝鏄ㄥぉ鏅氫笂鏄甫鐫閬楁喚鐨勫洶鎯戝叆鐫$殑銆?/p>

鎬葷殑鏉ヨ錛屾垜瀵硅繖涓や釜鍑芥暟鐨勭悊瑙e鑷寸殑緇撴灉鏄笌瀹為檯紼嬪簭榪愯鐨勭粨鏋滄埅鐒剁浉鍙嶃備緷鎹甅SDN涓婄殑瑙i噴錛屾湁涓涓緢涓ラ噸鐨勯棶棰樻病鏈夐槓榪版竻妤氾紝閭e氨鏄細鎵璋撶殑SetWindowOrg(x, y)鍑芥暟錛屽埌搴曟槸琛ㄧずset window origin to (x, y)榪樻槸set window origin as (x, y)錛泃o鍜宎s鍦ㄦ墽琛岀殑鏃跺欙紝鍏舵搷浣滅殑鏁堟灉鏄埅鐒剁浉鍙嶇殑銆?/p>

set window origin to (x, y)琛ㄧず灝嗗潗鏍囧師鐐硅緗埌(x, y)錛涘嵆浠?x, y)浣滀負鍧愭爣鍘熺偣錛屾鏃跺師鐐瑰潗鏍囦笉鍐嶄負(0, 0)錛?br />set window origin as (x, y)琛ㄧず灝嗗師鏉ョ殑鍘熺偣(0, 0)鐨勫潗鏍囨敼涓?x, y)錛涘嵆灝嗘墍鏈夌偣鐨勫潗鏍囧鍔?+x, +y)錛?/p>

鐜板湪鎴戠殑鐞嗚В鏄細搴旇鏄?set window origin to (x, y)銆傝繖縐嶇悊瑙e熀浜庝互涓嬪嚑涓墠鎻愶細
1. 鎵鏈夌粯鍥捐鍙ヤ腑緇欏嚭鐨勫潗鏍囷紝鍏ㄩ儴鏄昏緫鍧愭爣錛屽嵆鍦?window 涓殑鍧愭爣(鐩稿浜巚iewport鎵琛ㄧず鐨勮澶囧潗鏍囪岃█);
2. 鎵鏈夌敤鎴瘋兘鐪嬪埌鐨勭偣錛屽叾璁懼鍧愭爣涓瀹氭槸浣嶄簬(0, 0)鍜?1024, 768)鑼冨洿鍐咃紱(鍋囪鏄劇ず鍣ㄤ負杈撳嚭璁懼錛岄噰鐢∕M_TEXT鏄犲皠鏂瑰紡錛屼笖灞忓箷鍒嗚鯨鐜囦負1024*768);
3. 鎵璋撯?0,0)灝卞師鐐癸紝鍘熺偣鐨勫潗鏍囦竴瀹氬氨鏄?0,0)鈥濊繖縐嶇悊瑙o紝鏄敊璇殑錛?br />4. Viewport涓殑鍧愭爣琛ㄧず璁懼鍧愭爣錛沇indow涓殑鍧愭爣琛ㄧず閫昏緫鍧愭爣錛?br />5. 褰撳湪閫昏緫鍧愭爣涓寚瀹氭柊鐨勫師鐐瑰悗錛屽湪鎵ц鏄犲皠鏃訛紝璁懼鍧愭爣鐨勫師鐐逛竴瀹氳涓庨昏緫鍧愭爣鐨勬柊鍘熺偣閲嶅悎錛涘弽榪囨潵涔熸槸涓鏍鳳紝鍗充袱涓潗鏍囩郴鐨勫師鐐逛竴瀹氳閲嶅悎銆?/p>

涓嬮潰涓句緥璇存槑錛?MM_TEXT鏄犲皠妯″紡)


(1)
CRect rect(0, 0, 200, 200);
dc.rectangle(rect);
涓婇潰鐨勮鍙ュ湪灞忓箷鐨勬渶宸︿笂瑙掔粯鍒朵竴涓鏂瑰艦;(鍥犱負姝ゆ椂閫昏緫鍧愭爣涓庤澶囧潗鏍囨病鏈夊亸縐?

(2)
dc.SetViewportOrg(100, 100);
CRect rect(0, 0, 200, 200);
dc.rectangle(rect);
灝嗚澶囧潗鏍囩殑鍘熺偣璁劇疆鍒?100, 100)錛涘嵆璁懼鍧愭爣鐨勫師鐐逛笉鍦?0, 0)澶勶紝鑰屾槸鍦?100, 100)澶勶紱姝ゆ椂鑻ユ墽琛屾槧灝勭殑璇濓紝閫昏緫鍧愭爣鐨勫師鐐?0, 0)闇瑕佷笌璁懼鍧愭爣鐨勫師鐐?100, 100)閲嶅悎(鍙傝冨墠鎻?)錛涢偅涔堟鏃剁粯鍒剁殑鐭╁艦(0, 0, 200, 200)鐨勫潗鏍?涓洪昏緫鍧愭爣錛屽弬鑰冨墠鎻?)鍦ㄨ澶囧潗鏍囦腑灝變細鏄犲皠涓?100, 100, 300, 300)錛屾渶緇堟垜浠湪鏄劇ず鍣ㄤ笂鐪嬪埌鐨勪細鏄竴涓悜鍙充笅鏂瑰亸縐?100, 100)鐨勪竴涓竟闀夸負200鐨勬鏂瑰艦(鐢ㄦ埛鐪嬪埌鐨勭偣鏄湪璁懼鍧愭爣涓殑錛屽弬鑰冨墠鎻?)

(3)
dc.SetWindowOrg(100, 100);
CRect rect(0, 0, 200, 200);
dc.rectangle(rect);
灝嗛昏緫鍧愭爣鐨勫師鐐硅緗埌(100, 100)錛涘嵆閫昏緫鍧愭爣鐨勫師鐐逛笉鍦?0, 0)澶勶紝鑰屾槸鍦?100, 100)澶勶紱姝ゆ椂鑻ユ墽琛屾槧灝勭殑璇濓紝璁懼鍧愭爣鐨勫師鐐?0, 0)闇瑕佷笌閫昏緫鍧愭爣鐨勫師鐐?100, 100)閲嶅悎(鍙傝冨墠鎻?)錛涢偅涔堟鏃剁粯鍒剁殑鐭╁艦(0, 0, 200, 200)鐨勫潗鏍?涓洪昏緫鍧愭爣錛屽弬鑰冨墠鎻?)鍦ㄨ澶囧潗鏍囦腑灝變細鏄犲皠涓?-100, -100, 100, 100)錛屾渶緇堟垜浠湪鏄劇ず鍣ㄤ笂鐪嬪埌鐨勪細鏄竴涓彧鏈?/4涓ぇ灝忕殑鐭╁艦鐨勪竴閮ㄥ垎(浜嬪疄涓婄浉褰撲簬鍚戝乏涓婃柟鍋忕Щ(100, 100)鐨勪竴涓竟闀夸負200鐨勬鏂瑰艦銆傛敞鎰忥細鐢ㄦ埛鐪嬪埌鐨勭偣鏄湪璁懼鍧愭爣涓殑錛屽弬鑰冨墠鎻?)

銆愪綔鑰? xqscorpion銆?



]]>
杞澆錛氱悊瑙etWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExthttp://m.shnenglu.com/cppblog/archive/2006/07/12/9715.html娼滈緳灞?/dc:creator>娼滈緳灞?/author>Wed, 12 Jul 2006 02:07:00 GMThttp://m.shnenglu.com/cppblog/archive/2006/07/12/9715.htmlhttp://m.shnenglu.com/cppblog/comments/9715.htmlhttp://m.shnenglu.com/cppblog/archive/2006/07/12/9715.html#Feedback3http://m.shnenglu.com/cppblog/comments/commentRss/9715.htmlhttp://m.shnenglu.com/cppblog/services/trackbacks/9715.html 鐞嗚ВSetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt
鎸変範鎯紝(0,0)灝卞師鐐癸紝鍘熺偣灝辨槸(0,0)錛屼絾鏄鏋滅敤姝ゆ潵鐞嗚Вwindows鐨刴ap mode錛屽氨浼氳蛋寮礬銆傚叾瀹烇紝紼嶅井鏀瑰彉涓涓嬭蹇碉紝windows鐨刴ap mode灝辨瘮杈冨ソ鐞嗚В浜嗐備婦渚嬭鏄庯細

page space---->device space
pDC->SetMapMode(MM_LOMETRIC);
pDC->SetWindowOrg(40,0);銆銆//榪欏彞鈥滆瀹氣漰age space鐨勫師鐐逛負(40,0)錛屾敞鎰忥紝
//榪欐椂(40,0)灝辨槸鍘熺偣錛屽師鐐瑰氨鏄?40,0)榪欎釜鐐癸紝鍏跺疄錛?0,0)涓庡師鐐規病鏈夊繀鐒惰仈緋匯傝繖
//涓鍙ュ涓嬮潰鐨勭敾鍥懼嚱鏁板湪page space涓墍浣滅殑鍥句笉浼氭湁浠諱綍褰卞搷銆備竴鍙ヨ瘽錛歋etWindowOrg
//灝辨槸鎸囧畾涓涓嬶紝page space涓摢涓偣涓哄師鐐廣?br />pDC->Rectangle(0,0,100,-100);
pDC->Rectangle(0,-100,50,-200);

鍚岀悊錛孲etViewportOrg涔熸槸鎸囧畾涓涓嬶紝device space涓摢涓偣涓哄師鐐癸紝涓や釜鍧愭爣緋繪槧灝勬椂錛屼袱涓師鐐歸噸鍚堛?br />
SetWindowExt璁懼畾page space鐨勫ぇ灝忥紝SetViewportOrg璁懼畾device space鐨勫ぇ灝忥紝鍏跺疄錛岀湡姝f湁鎰忎箟鐨勫彧鏄袱鑰呯殑姣斾緥鍏崇郴錛屼緥濡傦紝鍦ㄤ竴涓?024*768鐨勬樉紺哄睆涓婏細

pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(10240,7680);
pDC->SetViewportExt(1024,768);
pDC->Rectangle(0,0,100,100);

銆銆灝變細鐢諱竴涓?0 pixels*10 pixels鐨勭煩褰€傚叾鏈川灝辨槸錛孹鏂瑰悜錛屾瘡涓昏緫鍗曚綅鏈?024/10240涓薄绱狅紝Y鏂瑰悜姣忎釜閫昏緫鍗曚綅鏈?68/7680涓薄绱犮傚洜姝わ紝涓嬮潰鐨勪唬鐮佹湁鐩稿悓鐨勪綔鐢細

pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(102400,76800);
pDC->SetViewportExt(10240,7680);
pDC->Rectangle(0,0,100,100);

涓よ呮湰璐ㄤ竴鏍鳳紝鍓嶈呮洿鏄撲簬鐞嗚В銆?br />浣滆? johnson 聽聽 鏉ユ簮: 涔濅節鏄熶釜浜轟富欏?-- 紼嬪簭璁捐 -- C++紼嬪簭璁捐

]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              美女尤物久久精品| 久久午夜视频| 亚洲第一精品福利| 亚洲欧美自拍偷拍| 久久精品一区中文字幕| 性8sex亚洲区入口| 国语对白精品一区二区| 欧美xart系列高清| 99精品视频网| 亚洲私人影吧| 在线免费观看成人网| 久久夜精品va视频免费观看| 欧美一区=区| 亚洲日本黄色| 国产精品日韩精品欧美在线| 欧美一区二区免费视频| 欧美好骚综合网| 亚洲性感美女99在线| 欧美性色aⅴ视频一区日韩精品| 亚洲小说欧美另类社区| 亚洲欧洲日产国产综合网| 亚洲人午夜精品免费| 亚洲激情一区二区| 国产精品永久免费在线| 欧美成人精品在线观看| 午夜精品久久久久影视| 最新国产成人av网站网址麻豆| 国产精品福利在线| 欧美激情一区二区三区全黄| 亚洲欧美在线另类| 免费91麻豆精品国产自产在线观看| 久久一区视频| 亚洲成色最大综合在线| 久久天天综合| 亚洲高清视频在线| 免费成人黄色片| 麻豆国产精品777777在线| 国产欧美日本在线| 国产一区二区三区精品欧美日韩一区二区三区 | 久久久人成影片一区二区三区观看 | av成人免费在线| av成人福利| 欧美+亚洲+精品+三区| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲国产婷婷综合在线精品| 欧美精品在线视频| 亚洲激情中文1区| 亚洲图片在区色| 久久亚洲精品欧美| 一区二区高清视频| 性做久久久久久久免费看| 亚洲日本va在线观看| 久久久久国产免费免费| 国产亚洲欧美日韩日本| 亚洲综合色婷婷| 亚洲精品国产系列| 久热国产精品| 亚洲精品美女在线观看| 美女视频一区免费观看| 久久亚洲一区二区三区四区| 一区二区免费在线观看| 亚洲性夜色噜噜噜7777| 欧美香蕉视频| 国产一区二区三区久久| 亚洲欧美日韩精品久久亚洲区| 亚洲精品三级| 国产精品羞羞答答| 久久综合九色综合欧美就去吻| 老司机免费视频一区二区三区 | 亚洲午夜久久久久久久久电影院| 亚洲私人影院| 黄色成人免费观看| 亚洲国产精品精华液网站| 欧美日韩国产影片| 久久久久久久久久久久久9999 | 亚洲国产精品激情在线观看| 亚洲大胆av| 国产一区二区三区久久精品| 亚洲高清视频中文字幕| 久久视频在线免费观看| 日韩午夜电影在线观看| 亚洲欧美日韩另类| 136国产福利精品导航| 亚洲网站视频| 日韩视频一区二区三区在线播放| 亚洲男女自偷自拍| 91久久久久| 午夜精品区一区二区三| 亚洲欧美日韩中文视频| 久久久久国产精品www | 国产精品久久国产三级国电话系列| 国产精品99久久久久久有的能看 | 老司机午夜精品视频在线观看| 久久福利电影| 伊人成人在线视频| 欧美精品v日韩精品v韩国精品v| 亚洲精品女人| 亚洲三级毛片| 国产精品美女午夜av| 欧美在线日韩精品| 亚洲黄一区二区三区| 性色一区二区| 亚洲免费高清视频| 国产综合18久久久久久| 国产一区二区三区四区| 欧美一级片一区| 国产三级欧美三级日产三级99| 亚洲影院在线观看| 亚洲午夜一二三区视频| 在线看无码的免费网站| 午夜精品久久久久久久99黑人| 精品999久久久| 午夜精品剧场| 亚洲第一级黄色片| 欧美亚洲在线观看| 在线看片成人| 欧美日韩中文另类| 欧美国产精品日韩| 欧美乱在线观看| 欧美精品在线看| 香港成人在线视频| 欧美国产视频日韩| 欧美激情视频一区二区三区在线播放| 欧美一区1区三区3区公司| 欧美一区二区三区免费观看视频| 一区二区三区高清| 午夜在线精品| 欧美肥婆bbw| av成人老司机| 久久久久久久高潮| 亚洲综合色噜噜狠狠| 亚洲欧美区自拍先锋| 午夜精品久久久久久久99黑人| 欧美一二三视频| 91久久综合亚洲鲁鲁五月天| 亚洲欧美激情在线视频| 激情综合电影网| 伊人久久久大香线蕉综合直播| 亚洲国产99| 亚洲电影在线免费观看| 一本久久青青| 久久久久女教师免费一区| 美女成人午夜| 亚洲看片网站| 香蕉久久夜色精品| 欧美精品一区三区在线观看| 国产精品高潮呻吟久久| 国产日韩在线不卡| 一区二区三区成人精品| 欧美国产日韩亚洲一区| 亚洲一品av免费观看| 亚洲制服丝袜在线| 免费在线看成人av| 亚洲第一黄色网| 久久久999| 一本一本a久久| 久久久久一区二区| 国产一区二区黄| 亚洲天堂av在线免费| 老司机精品视频网站| 欧美高清视频免费观看| 欧美一区二区在线免费观看| 国产精品视频久久一区| 久久综合久久88| 一区二区三区视频在线观看| 欧美福利电影网| 亚洲精品孕妇| 午夜在线成人av| 欧美视频一二三区| 香蕉久久夜色精品国产| 亚洲欧美日韩国产精品| 亚洲第一精品夜夜躁人人爽| 久久偷看各类wc女厕嘘嘘偷窃| 一区在线观看| 亚洲精品国产精品国产自| 欧美天堂亚洲电影院在线观看| 亚洲精品乱码久久久久久蜜桃91| 亚洲七七久久综合桃花剧情介绍| 欧美女同在线视频| 久久久久久免费| 久久亚洲欧美| 亚洲欧美国产不卡| 欧美国产综合视频| 久久免费少妇高潮久久精品99| 久久成人精品无人区| 99视频国产精品免费观看| 在线综合亚洲欧美在线视频| 欧美精品一级| 久久黄金**| 欧美精品在线极品| 欧美成人一区二区三区在线观看| 久久久国产精品一区二区中文| 亚洲成在人线av| 久久一区二区三区四区五区| 欧美亚洲免费高清在线观看| 欧美影院久久久| 久久激情视频免费观看| 国产精品va在线播放我和闺蜜| 亚洲片在线资源| 狠狠久久亚洲欧美|