;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
WTL for MFC Programming瀹炶返绡 --- 涓涓嚜瀹氫箟ComboBox鐨勭Щ妞嶈繃绋(涓) - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> VC >> CC++MFC >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

WTL for MFC Programming瀹炶返绡 --- 涓涓嚜瀹氫箟ComboBox鐨勭Щ妞嶈繃绋(涓)

鍙戝竷: 2008-6-26 11:25 |  浣滆: admin |   鏌ョ湅: 37娆

WTL for MFC Programming瀹炶返绡

--- 涓涓嚜瀹氫箟ComboBox鐨勭Щ妞嶈繃绋

鐜板湪鏈変竴涓狹FC鍐欑殑鑷畾涔塁omboBox鎵撶畻绉绘鍒癢TL涓婏紝浜庢槸鏍规嵁WTL鐨勪功鍐欐柟娉曚慨鏀逛簡绋嬪簭锛屽氨寰楀埌涓嬮潰鐨勪唬鐮侊細

Class CComboBoxEx : public CComboBox

{

protected:

void OnDrawItem(UINT wParam, LPDRAWITEMSTRUCT lpDrawItemStruct);

public:

BEGIN_MSG_MAP_EX(CComboBoxEx)

MSG_OCM_DRAWITEM(OnDrawItem)

END_MSG_MAP()

}

Class CMainDlg : public CDialogImpl< CMainDlg >

{

Protected:

CComboBoxEx m_cmbEx;

Public:

BEGIN_DDX_MAP(CPageConfigFont)

DDX_CONTROL_HANDLE(IDC_COMBOBOXEX, m_cmbEx);

END_DDX_MAP()

BEGIN_MSG_MAP_EX(CPageConfigFont)

MSG_WM_INITDIALOG(OnInitDialog)

REFLECT_NOTIFICATIONS()

END_MSG_MAP()

}

濡備綍鐢熸垚浠ヤ笂浠g爜鍙婁唬鐮佺殑鍚箟锛屽師涔﹂兘鏈変粙缁嶏紝鐢变簬涓嶆槸鏈枃鐨勯噸鐐癸紝涓嶅啀涓涓瑙i噴銆

瑕佽鐨勬槸锛屽湪WTL 7.1涓坊鍔犱簡DDX_CONTROL_HANDLE瀹忥紝鍙互鐢ㄦ潵璁剧疆鎺т欢锛屼笌DDX_CONTROL涓嶅悓鐨勬槸锛屽畠涓嶈姹傛帶浠剁被鐢盋WindowImpl娲剧敓锛屽嵆涓嶉渶瑕佸寘鍚玈ubclassWindow()鍑芥暟锛岃繖鏍锋垜浠墠鍙互浣跨敤DDX鏉ヨ缃垜浠粠CComboBox娲剧敓鐨勭被锛堝惉涓婂幓寰堟湁閬撶悊锛屽叾瀹炲嵈鏄湪MFC缂栫▼涔犳儻甯﹀姩涓嬮敊璇濈淮锛夈

褰撶劧锛岃瀹炵幇杩樻湁涓涓皬灏忕殑闂锛孌DX_CONTROL_HANDLE瀹忛渶瑕佹垜浠殑绫诲寘鍚竴涓搷浣滅鈥=鈥濓紝鎬庝箞鍐欒繖涓嚱鏁板憿锛熷弬鐪嬩簡涓涓嬪熀绫荤殑瀹炵幇鏂规硶锛

CComboBoxExT< TBase >& operator =(HWND hWnd)

{

m_hWnd = hWnd;

return *this;

}

鍙傜湅WTL鏂囦欢

鍘熸潵鍙槸灏唌_hWnd璧嬪硷紝浜庢槸鎴戜滑鍦ㄦ垜浠殑绫讳腑娣诲姞濡備笅鐨勪唬鐮侊細

CComboBoxEx& operator=(HWND hWnd)

{

m_hWnd = hWnd;

return *this;

}

浜庢槸缂栬瘧閫氳繃浜嗐傦紙娈婁笉鐭ユ綔鍦ㄧ殑閿欒灏辫繖鏍疯娣辨繁鐨勫煁璧锋潵浜嗭級

鍙槸涓轰粈涔圖DX_CONTROL_HANDLE瀹忛渶瑕佹垜浠殑绫诲寘鍚搷浣滅鈥=鈥濆憿锛熸垜浠潵鐪嬬湅DDX_CONTROL_HANDLE瀹忔槸鎬庝箞瀹炵幇鐨勶細

鏁翠釜DDX_MAP鍏跺疄鏄畾涔変簡涓涓狣oDataExchange鍑芥暟锛孊EGIN_DDX_MAP瀹忓畾涔変簡鍑芥暟澶达紝鑰孍ND_DDX_MAP瀹氫箟浜嗗嚱鏁板熬锛屼腑闂翠竴椤归」鐨凞DX瀹氫箟鍑芥暟鐨勫叿浣撳唴瀹癸紝鑰屽綋浣犲湪浠g爜涓畾涔塂DX_MAP鐨勬椂鍊欏氨绛変簬閲嶈浇浜咰WinDataExchange::DoDataExchange()鍑芥暟锛屽叿浣撲唬鐮佸涓嬶細

#define BEGIN_DDX_MAP(thisClass) \

BOOL DoDataExchange(BOOL bSaveAndValidate = FALSE, UINT nCtlID = (UINT)-1) \

{ \

bSaveAndValidate; \

nCtlID;

#define END_DDX_MAP() \

return TRUE; \

}

鍙傜湅WTL鏂囦欢

瀵逛簬DDX_CONTROL_HANDLE瀹忥紝瀹冨叾瀹炴槸璋冪敤浜咰WinDataExchange:: DDX_Control_Handle鍑芥暟锛屽叿浣撲唬鐮佸涓嬶細

// Simple control attaching (for HWND wrapper controls)

template

void DDX_Control_Handle(UINT nID, TControl& ctrl, BOOL bSave)

{

if(!bSave && ctrl.m_hWnd == NULL

鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆