VC控制項控制技巧

2021-06-06 05:12:45 字數 3292 閱讀 1552

如何隱藏和顯示控制項

用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 );      //顯示控制項

按鈕的使能與禁止

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

則m_button1.enablewindow(true);     使按鈕處於允許狀態

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

改變控制項的大小和位置

用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 );   //編輯控制項的大小和位置都改變

以上方法也適用於各種視窗。

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

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

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

如:radio1、radio2、radio3為一組,radio4、radio5為一組

設定radio1屬性:group,tabstop,auto

設定radio2屬性:tabstop,auto

設定radio3屬性:tabstop,auto

設定radio4屬性:group,tabstop,auto

設定radio5屬性:tabstop,auto

二、用classwizard為單選控制項定義變數

,每組只能定義乙個。如:m_radio1、m_radio4。

三、用classwizard生成各單選按鈕的單擊訊息函式

,並加入內容:

void cweditview::onradio1()

void cweditview::onradio2()

void cweditview::onradio3()

void cweditview::onradio4()

void cweditview::onradio5()

當控制項變數值為0時,它對應組的第乙個單選按鈕處於選中狀態。

四、設定預設按鈕:

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

如://}afx_data_init

旋轉控制項(spin)的使用

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

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

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

設定文字控制項屬性:number

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

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

bool cmydlg::oninitdialog()

void cmydlg::onchangeedit1()

updatedata()

對於可以接收資料的控制項,如編輯控制項來說,updatedata()函式至關重要。當控制項內容發生變化時,對應的控制項變數的值並沒有跟著變化,同樣,當控制項變數值變化時,控制項內容也不會跟著變。

updatedata()函式就是解決這個問題的。

updatedata(true);

把控制項內容裝入控制項變數

updatedata(false);

用控制項變數的值更新控制項

1、修改變數值並顯示在控制項中:

m_edit1 = _t("結果為50");

updatedata(false);

2、讀取控制項的值到變數中:

用classwizard為idc_edit1新增en_change訊息處理函式,這個函式在編輯控制項內容發生變化時執行。

void ceditview::onchangeedit1()

VC學習 IP位址控制項小技巧

一 如何響應en change事件 在控制項中提供了ipn fieldchanged的通知訊息,該訊息在控制項的輸入域發生變化的時候發生,一般來說可以滿足需求。但是,有的時候,我們希望每當改變乙個值的時候就希望知道當前輸入的位址,這樣能夠及時的對輸入的情況進行判斷,而ipn fieldchanged...

VC控制項TAB切換順序 的控制

vc控制項tab切換順序的控制 在開發乙個小工具的時候,遇到這樣乙個問題 由於控制項新增順序不同,導致最終想要的控制項tab切換順序與想要的順序不符合。經過蒐集資料,發現了控制控制項tab切換順序的方法。如下 1 在自己的工程檔案中,有乙個與工程名相同的資源檔案 rc 該檔案包含了本工程所有使用到的...

VC中一些控制項的小技巧

1.讓list control有check box 用setextendedstyle方法可以設定,看 clistctrl m listctrl dword dwstyle m listctrl.getstyle dwstyle lvs ex checkboxes m listctrl.setext...