動態插入窗口控件 句柄到cwnd轉換


一、動態創建一個list控件

1、在頭文件中聲明一個對象

CWnd  m_list;

2、在函數體中創建控件

m_list.CreateEx(WS_EX_CLIENTEDGE,"SysListViEW32",NULL,WS_VISIBLE|WS_CHILD,

CRect(10,35,300,300),this,8921);

二、句柄轉換爲CWnd

HWND hWnd=::GetDlgItem(m_hWnd,IDOK);//臨時變量

CWnd *p==CWnd ::FromHandle(hWnd);//只是臨時變量

p->SetWindowText("臨時對象");


三、attach 函數

1、在頭文件中聲明一個對象

CWnd  m_edit;

2、在窗口初始化函數中:

HWND hWnd =::GetDlgItem(m_hWnd,IDC_EDIT1);

m_edit.Attach(hWnd);

3、在函數體中即可長期使用,控件與對象綁定

m_edit.SetWindowText("長期使用");

4、在窗體銷燬時要使用

m_edit.Detach();//是對象和句柄分離


四 子類化與反子類化(與attach 函數用法類似

1、在頭文件中聲明一個對象

CWnd  m_dest;

2、在窗口初始化函數中:

HWND hWnd =::GetDlgItem(m_hWnd,IDC_BUTTON1);

m_dest.SubclassWindow(hWnd);

3、在函數體中即可長期使用,控件與對象綁定

m_dest.SetWindowText("長期使用");

4、在窗體銷燬時要使用

m_dest.UnsubclassWindow();//是對象和句柄分離


也可以派生一個子類,定義對象  CMyButton   ccc;

然後和要綁定的控件鏈接,和attach函數不同的是,派生的子類還可以接受綁定窗口的消息。











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章