對話方塊中控制項的幾種訪問方法

2021-07-01 20:38:07 字數 4194 閱讀 7281

1、通過相關函式進行訪問

cwnd::getdlgitem通常通過控制項的id來獲取指向控制項的指標,以便進一步對控制項的操作

cwnd::getwindowtext獲取乙個窗體的caption或者控制項上的文字

cwnd::setwindowtextsets thewindow』s title to the specified text. if the window is a control, the textwithin the control is set

**如下:  

int num1,num2,num3;

char ch1[10],ch2[10],ch3[10];

getdlgitem(idc_edit1)->getwindowtext(ch1,10);

getdlgitem(idc_edit2)->getwindowtext(ch2,10);

num1=atoi(ch1);

num2=atoi(ch2);

num3=num1+num2;

itoa(num3,ch3,10);

getdlgitem(idc_edit3)->setwindowtext(ch3);

cwnd::getdlgitemtext其功能相當於cwnd::getdlgitem和cwnd::getwindowtext的總功能

cwnd::setdlgitemtext其功能相當於cwnd::setdlgitem和cwnd::setwindowtext的總功能

**如下:

int num1,num2,num3;

char ch1[10],ch2[10],ch3[10];

getdlgitemtext(idc_edit1,ch1,10);

getdlgitemtext(idc_edit2,ch2,10);

num1=atoi(ch1);

num2=atoi(ch2);

num3=num1+num2;

itoa(num3,ch3,10);

setdlgitemtext(idc_edit3,ch3);

對靜態文字框進行操作的**如下:

voidctestdlg::onnumber1()

else

}

remarks:

因為靜態文字框主要是用來顯示文字的,一般不對其進行事操作,所以微軟預設的將所有的靜態文字框的id統一設定成idc_static,如果非要對靜態文字框進行操作,首先需要更改其id,其次需要將其styles屬性中的notify(通告)勾上,勾上之後才能產生通告訊息(訊息非為標準訊息,命令訊息和通告訊息)

對於逗號表示式,形如x1,x2,x3…….xn其執行的順序是從左到右的順序依次執行,整個逗號表示式的值是最後乙個表示式xn的值。

cwnd::getdlgitemint根據控制項的id來獲取控制項上的數值型文字

cwnd::setdlgitemint將乙個整型數設定到控制項上

**如下:

int num1,num2,num3;

num1=getdlgitemint(idc_edit1);

num2=getdlgitemint(idc_edit2);

num3=num1+num2;

setdlgitemint(idc_edit3,num3);

2、通過將乙個變數與控制項相關聯對控制項進行操作,該變數可以是一般型別的變數,也可以是控制項型別的變數。具體方法是按快捷鍵ctrl+w鍵喚出classwizard,選中membervariables選項卡,通過控制項id來新增與控制項相關聯的變數,當我們將變數與控制項相關聯之後你會發現**

voidctestdlg::dodataexchange(cdataexchange* pdx)

}afx_data_map

}

其中的注釋巨集中的dx_text()函式的作用就是將變數與指定控制項相關聯,像以的ddx_(dialog data enxchange)和以ddv_(dialog data valid)開頭的函式有很多,他倆乙個是對話方塊資料交換乙個是對話方塊資料校驗,作用都是將變數與各種型別的相關的控制項關聯,這裡就不贅述了,詳情請看msdn,

你還會發現在對話方塊類中的建構函式中將變數進行初始化了(看注釋巨集之間的**)

ctestdlg::ctestdlg(cwnd*pparent /*=null*/)

: cdialog(ctestdlg::idd, pparent)

}afx_data_init

m_biscreated=false;

}

注意:要想使從控制項上輸入的數字賦值到相關聯的變數上,必須呼叫cwnd::updatedata函式,並且設定引數為true,也可以不設定,因為其預設值是true,當對數值操作結束後還需要在呼叫一次,這一次需要將引數設定成   false如下**

voidctestdlg::onbtnadd()

else

*/updatedata();

m_num3=m_num1+m_num2;

updatedata(false);

}

3、通過sendmessage函式傳送乙個wm_gettext和wm_settext訊息來獲取和設定對話方塊文字,其中::sendmessage函式可以是win32api函式,也可以是cwnd::sendmessage

**如下:

int num1,num2,num3;

char ch1[10],ch2[10],ch3[10];

//::sendmessage(getdlgitem(idc_edit1)->m_hwnd,wm_gettext,10,(lparam)ch1);

//::sendmessage(m_edit1.m_hwnd,wm_gettext,10,(lparam)ch1);

//getdlgitem(idc_edit1)->sendmessage(wm_gettext,10,(lparam)ch1);

m_edit1.sendmessage(wm_gettext,10,(lparam)ch1);

m_edit2.sendmessage(wm_gettext,10,(lparam)ch2);

num1=atoi(ch1);

num2=atoi(ch2);

num3=num1+num2;

itoa(num3,ch3,10);

m_edit3.sendmessage(wm_settext,0,(lparam)ch3);

4、通過cwnd::senddlgitemmessage函式傳送乙個wm_gettext和wm_settext訊息來獲取和設定對話方塊文字,該函式相當於上述的cwnd::sendmessagecwnd::getdlgitem功能的集合

**如下:

int num1,num2,num3;

char ch1[10],ch2[10],ch3[10];

senddlgitemmessage(idc_edit1,wm_gettext,10,(lparam)ch1);

senddlgitemmessage(idc_edit2,wm_gettext,10,(lparam)ch2);

num1=atoi(ch1);

num2=atoi(ch2);

num3=num1+num2;

itoa(num3,ch3,10);

senddlgitemmessage(idc_edit3,wm_settext,0,(lparam)ch3);

//下面兩行**是用來設定複選內容的,詳情查em_setsel和em_getsel

senddlgitemmessage(idc_edit3,em_setsel,0,-1);

m_edit3.setfocus();

對話方塊控制項

單選對話方塊 newalertdialog.builder this settitle 請做出你的選擇 seticon r.mipmap.ic launcher setpositivebutton 確認 null setnegativebutton 取消 null setsinglechoiceit...

對話方塊中顯示對話方塊

一 對話方塊中顯示對話方塊的方法 1 首先建立要在對話方塊裡顯示的那個對話方塊,命名為 idd inner 設定這個對話方塊的屬性 1 style 選擇 child 中文版 樣式 選擇 下層 2 border 為 none 中文版 邊框 選擇 無 2 為了顯示時能夠準確定位,我們可以在右邊要顯示對話...

Android控制項 對話方塊

android控制項 對話方塊 分為 關鍵字 alertdialog.builder builder.show 標題欄 資訊欄 注意點 1.記得show 出來 2.alertdialog.builder 採用自定義的子布局 alertdialog.builder builder new alertd...