MFC裡面的響應對話方塊裡的Edit控制項的幾種方法

2021-06-08 15:45:27 字數 3359 閱讀 2838

第一種:利用組合的getdlgitem()和getwindowtext()函式獲得控制項資訊,利用getdlgitem()->setwindowtext()設定資訊

int num1,num2,num3;

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

getdlgitem(idc_edit1)->getwindowtext(ch1,10);//獲得eidt1控制項的內容

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

//getdlgitem(idc_edit3)->getwindowtext(ch3,10);

num1=atoi(ch1);

num2=atoi(ch2);

//num3=atoi(ch3);

num3=num1*num2;

itoa(num3,ch3,10);

getdlgitem(idc_edit3)->setwindowtext(ch3);

第二種:利用getdlgitemtext()函式,其本質上等價於getdlgitem()->getwindowtext()setdlgitemtext()函式
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);

第三種:利用getdlgitemint()和setdlgitemint()獲取整形數

num1=getdlgitemint(idc_edit1);

num2=getdlgitemint(idc_edit2);

num3=num1*num2;

setdlgitemint(idc_edit3,num3);

第四種:新增控制項的成員變數;利用classwizard;注意此處是value變數;直接在edit控制項上輸入可以儲存到成員變數 m_edit1和m_edit2裡面;此時需要利用update()函式來更新資料內容; true:寫入,false 寫出;

updatedata(true);

m_num3=m_num1*m_num2;

updatedata(false);

第五種:新增控制項的控制變數,cedit型別,利用classwizard;此時利用cedit的函式來維護資料操作;

int num1,num2,num3;

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

m_edit.getwindowtext(ch1,10);

m_edit2.getwindowtext(ch2,10);

num1=atoi(ch1);

num2=atoi(ch2);

num3=num1*num2;

itoa(num3,ch3,10);

m_edit3.setwindowtext(ch3)

第六種:利用win32api函式sendmessage(),注意此函式的引數格式;第乙個引數是該控制項的控制代碼,根據其的獲得方式,又可以更詳細劃分幾種方式:

int num1,num2,num3;

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

::sendmessage(getdlgitem(idc_edit1)->m_hwnd,wm_gettext,10,(lparam)ch1);//此處加上::表示呼叫的是win32api函式,而不是類的成員函式,//第乙個引數是控制項控制代碼,兩種方法獲得,此處利用函式獲得;傳送系統訊息wm_gettext;

::sendmessage(m_edit2.m_hwnd,wm_gettext,10,(lparam)ch2);//利用控制項的cedit成員變數獲得此控制項的控制代碼,其餘相同

//getdlgitem(idc_edit1)->sendmessage(wm_gettext,10,(lparam)ch1);//此處先利用getdlgitem()獲得控制項控制代碼,然後傳送訊息

//m_edit.sendmessage(wm_gettext,10,(lparam)ch1);//直接利用成員cedit變數來獲得控制項控制代碼

num1=atoi(ch1);

num2=atoi(ch2);

num3=num1*num2;

itoa(num3,ch3,10);

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

第七種:利用senddlgitemmessage()函式,其本質也是講sendmessage和getdlgitemm合併起來,傳送get和set訊息;

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);

總結:對話方塊控制項訪問的其中方式

1getdlgitem()->get(set)windowtext()

2getdlgitemtext()/setdlgitemtext()

3getdlgitemint() /  setdlgitemint()

4將控制項和整形變數關聯;

5講控制項和控制項變數關聯;

6sendmessage()

7senddlgitemmessge();

補充:wm_gettext和wm_settext是標準獲得edit控制項裡面的所有訊息;

另外一種獲得選取部分內容的訊息時:em_getsel;

em_setsel是設定選取部分的大小的訊息;

senddlgitemmessage(idc_edit3,em_setsel,0,-1);//設定核取方塊1到3的內容,不含1,含3;

//如果此時起始設為0,終止設為-1,則複選edit控制項所有內容;

m_edit3.setfocus();//設定焦點為當前控制項;即為m_edit3指示的;

MFC對話方塊之鍵盤響應

在mfc對話方塊上新增鍵盤響應,在對話方塊屬性 訊息 wm keydown新增訊息函式新增 程式根本就執行不到鍵盤響應函式中去,重新編寫。1.dlg h檔案中宣告函式virtual bool pretranslatemessage msg pmsg 2.新增實現函式 bool pretranslat...

mfc中的對話方塊

mfc的對話方塊.分類 模式 非模式相關類 cdialog類 父類是cwnd類.提供了對話方塊的基本操作.ccommondialog類 父類是cdialog類,稱為通用對話方塊類,包括以下6個子類 分別是檔案對話方塊,顏色對話方塊,字型對話方塊,查詢替換對話方塊 頁面設定對話方塊和列印對話方塊.cp...

對話方塊間的訊息響應

解決的問題 當子對話方塊中獲得一些值或者一些操作後,主對話方塊需要根據對應的值或操作進行改變,可利用訊息傳送的機制完成。用到的函式 1,findwindow函式功能 該函式獲得乙個頂層視窗的控制代碼,該視窗的類名和視窗名與給定的字串相匹配。這個函式不查詢子視窗。在查詢時不區分大小寫。2,getsaf...