幾個控制項的學習筆記

2021-08-30 01:09:35 字數 3592 閱讀 1478

按鈕的使能與禁止

用classwizard的member variables為按鈕定義變數,如:m_button1;

m_button1.enablewindow(true);

使按鈕處於允許狀態

m_button1.enablewindow(false); 使按鈕被禁止,並變灰顯示

控制項的隱藏與顯示

用cwnd類的函式bool showwindow(int ncmdshow)可以隱藏或顯示乙個控制項。

例1:cwnd *pwnd;

pwnd = getdlgitem( idc_edit1 );    //獲取控制項指標,idc_edit為控制項id號

pwnd->showwindow( sw_hide );    //隱藏控制項

例2:cwnd *pwnd;

pwnd = getdlgitem( idc_edit1 );    //獲取控制項指標,idc_edit為控制項id號

pwnd->showwindow( sw_show );    //顯示控制項

改變控制項的大小和位置

用cwnd類的函式movewindow()或setwindowpos()可以改變控制項的大小和位置。

void movewindow(int x,int y,int nwidth,int nheight);

void movewindow(lpcrect lprect);

第一種用法需給出控制項新的座標和寬度、高度;

第二種用法給出存放位置的crect物件;

例:cwnd *pwnd;

pwnd = getdlgitem( idc_edit1 );    //

獲取控制項指標,idc_edit1為控制項id號

pwnd->movewindow( crect(0,0,100,100) );    //在視窗左上角顯示乙個寬100、高100的編輯控制項

setwindowpos()函式使用更靈活,多用於只修改控制項位置而大小不變或只修改大小而位置不變的情況:

bool setwindowpos(const cwnd* pwndinsertafter,int x,int y,int cx,int cy,uint nflags);

第乙個引數我不會用,一般設為null;

x、y控制項位置;cx、cy控制項寬度和高度;

nflags常用取值:

swp_nozorder:忽略第乙個引數;

swp_nomove:忽略x、y,維持位置不變;

swp_nosize:忽略cx、cy,維持大小不變;

例:cwnd *pwnd;

pwnd = getdlgitem( idc_button1 );    //獲取控制項指標,idc_button1為控制項id號

pwnd->setwindowpos( null,50,80,0,0,swp_nozorder | swp_nosize );    //把按鈕移到視窗的(50,80)處

pwnd = getdlgitem( idc_edit1 );

pwnd->setwindowpos( null,0,0,100,80,swp_nozorder | swp_nomove );    //把編輯控制項的大小設為(100,80),位置不變

pwnd = getdlgitem( idc_edit1 );

pwnd->setwindowpos( null,0,0,100,80,swp_nozorder );    //編輯控制項的大小和位置都改變

什麼時候設定視中控制項的初始尺寸?

我在cformview的視中加入了乙個編輯控制項,在執行時使它充滿客戶區,當視窗改變大小時它也跟著改變。

改變控制項尺寸可以放在ondraw()函式中,也可放在calcwindowrect()函式中,當視窗尺寸發生變化時,它們都將被執行,且calcwindowrect()函式先於ondraw()函式,下例是在calcwindowrect()函式中修改控制項尺寸。

過載view類的calcwindowrect函式,把設定控制項的尺寸的語句加入這個函式中。

例:void cmyeditview::calcwindowrect(lprect lpclientrect, uint nadjusttype)

單選按鈕控制項(ridio button)的使用

1、對單選按鈕進行分組:

每組的第乙個單選按鈕設定屬性:group,tabstop,auto;其餘按鈕設定屬性tabstop,auto。

如:ridio1、ridio2、ridio3為一組,ridio4、ridio5為一組

設定ridio1屬性:group,tabstop,auto

設定ridio2屬性:tabstop,auto

設定ridio3屬性:tabstop,auto

設定ridio4屬性:group,tabstop,auto

設定ridio5屬性:tabstop,auto

2、用classwizard為單選控制項定義變數,每組只能定義乙個。如:m_ridio1、m_ridio4。

3、用classwizard生成各單選按鈕的單擊訊息函式,並加入內容:

void cweditview::onradio1()

void cweditview::onradio2()

void cweditview::onradio3()

void cweditview::onradio4()

void cweditview::onradio5()

4、設定預設按鈕:

在定義控制項變數時,classwizard在建構函式中會把變數初值設為-1,只需把它改為其它值即可。

如://}afx_data_init

旋轉控制項(spin)的使用

當單擊旋轉控制項上的按鈕時,相應的編輯控制項值會增大或減小。其設定的一般步驟為:

1、在對話方塊中放入乙個spin控制項和乙個編輯控制項作為spin控制項的夥伴視窗,

設定spin控制項屬性:auto buddy、set buddy integer、arrow keys

設定文字控制項屬性:number

2、用classwizard為spin控制項定義變數m_spin,為編輯控制項定義變數m_edit,定義時注意要把m_edit設定為int型。

3、在對話方塊的oninitdialog()函式中加入語句:

bool cmydlg::oninitdialog()

4、用classwizard為編輯控制項新增en_change訊息處理函式,再加入語句:

void cmydlg::onchangeedit1()

5、將spin控制項的「set bueey integer」設定為true。

程式結束時儲存檔案問題

C 控制項學習筆記

基礎知識 object型別是其他型別的基型別 decimal適用於財務與貨幣型別計算128位,要在數字後加m或者m,使用這個型別會消耗記憶體 float型別要在數字後加f或者f is運算子動態檢測物件執行時是否與給定型別相符 表示式 is 型別 例如 b is bool char類常用的方法要記住 ...

ListCtrl控制項學習筆記

1 怎樣讓在listctrl控制項中每次單擊都是選中一行?答 這是list control的乙個擴充套件樣式,在初始化時進行設定即可。新增如下 m listctrl.setextendedstyle m listctrl.getextendedstyle lvs ex fullrowselect 2...

DNN面板的幾個常用控制項

dnn 頁面功能的實現,依靠 控制項來完成,控制項的 位置在dnn admin skins 下。所以你只要在 html檔案中新增相應的 控制項佔位標誌 上傳之後就可以生成 ascx的 文 件。下面把 控制項名稱作用和在 html中的佔位標誌,以及生成 ascx之後的結果作個列表 控制項 html 頁...