Posted on 2013-04-07 14:33
盛勝 閱讀(373)
評(píng)論(0) 編輯 收藏 引用
vc 如何建動(dòng)態(tài)按鈕
在類的定義中,定義如下變量
那么在類的成員函數(shù)中就可以使用了如下來創(chuàng)建按鈕。
- m_btn.Create("動(dòng)態(tài)創(chuàng)建的按鈕",BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,CRect(0,0,100,100),this,123);
注,創(chuàng)建第二次的時(shí)候會(huì)出錯(cuò)。所以要用。
來釋放再進(jìn)行創(chuàng)建。
借由這個(gè)動(dòng)態(tài)創(chuàng)建,弄清了一些MFC的構(gòu)架,MFC是基于所有的類而得出的成果,一個(gè)類派生與另一個(gè)基類,從CWnd到CDialog就是一個(gè)很好的例子。CDialog派生與CWnd。
如果我要?jiǎng)?chuàng)建一個(gè)按鈕,就必須用CDialog定義一個(gè)新的變量,這個(gè)變量就成了一個(gè)按鈕,我就可以利用這個(gè)按鈕類進(jìn)行 各類操作,例如定義其的大小,風(fēng)格。
皆由此可見,所有的窗口都是一個(gè)類定義來的。無論是按鈕,標(biāo)簽,ComBox,List等等,都可以使用這個(gè)方法進(jìn)行創(chuàng)建。
在編輯代碼方面,VC與VB就有了,對(duì)于用戶來說,就有了本質(zhì)上的差別,VB的或許更加方便,而VC需要處理的細(xì)節(jié)太多了。
//創(chuàng)建按鈕
CButton *m_pBt1 = new CButton();
ASSERT_VALID(m_pBt1);
m_pBt1-> Create(_T("進(jìn)入[A]"), WS_GROUP ¦WS_CHILD ¦WS_VISIBLE ¦BS_PUSHBUTTON, CRect(10,10,20,20), this, IDC_AUTOCUT_POSTEACH );
m_pBt1-> MoveWindow(0, 152, 100, 100);
//修改風(fēng)格
HWND hwnd=m_pBt1-> GetSafeHwnd();
long lStyle=GetWindowLong(hwnd,GWL_EXSTYLE);
SetWindowLong(hwnd,GWL_EXSTYLE,lStyle ¦WS_EX_DLGMODALFRAME);
::SetWindowPos(hwnd,0, 12, 55, 55, 111, SWP_NOREPOSITION ¦SWP_NOACTIVATE ¦SWP_NOMOVE ¦SWP_FRAMECHANGED);