MFC學習筆記之五 對話方塊程式設計及控制項的操作

2021-06-28 00:36:04 字數 1683 閱讀 8439

通過乙個簡單的嚮導程式demo的設計,初步了解了mfc中一些基本對話方塊程式設計函式的程式設計以及一些基本控制項的使用。

首先來了解一些重要的函式:

獲取對話方塊上的專案指標:getdlgitem(),注意此函式的返回值,一般都需要進行強制型別轉換。

獲取視窗資訊:getwindowtext(),而與之對應的是更改視窗資訊:setwindowtext()

直接取得對指定話框上專案的資訊:getdlgitemtext() 想當於getdlgitem()和getwindowtext()合用,當然,有setdlgitemtext() 相當於getdlgitem()和setitemtext() 合用。

getdlgitemint(),setdlgitemint()等等,s/getdlgitemint()可以處理有符號的整數。

atoi() 轉換乙個型別到指定型別時,用 型別的第乙個字母 to 指定型別的乙個字母。

在doexchange函式裡,放置以ddx_為字首的函式,來關聯乙個控制項和變數,ddv_為字首的函式,用來校驗乙個控制項內容。

ddx_(對話方塊資料交換) ddv_(對話方塊資料校驗)

注意,在用資料變數關聯控制項的方式時,千萬注意要使用updatedata()!

這裡比較重要的一點是控制項與乙個變數的關聯以及如何關聯(這裡有個經歷,自定義的型別如果著下面的型別選項中如果沒有,先選上能選擇的,之後在**中將選擇的變數型別更改過來,這樣也能實現自定義型別變數與控制項的關聯,當然,此自定義型別是此控制項型別的子類而已)!其中可以是control型別的,也可以是value的。updatedate()函式函式預設的引數(true),true表示從控制項將資料關聯到變數,false則是從變數的資料關聯到控制項!

當關聯乙個control型別的控制項時,可以用它的成員函式,來對控制項進行操作,例如:cedit.getwindowtext()

sendmessage()的用法,比較好用,注意,傳送訊息,是控制項向系統傳送,直接傳送給訊息響應函式,詳細響應函式執行完成後,直接返回,由系統處理!函式完整形式:

1

lresult sendmessage( uint message, wparam wparam =0

, lparam lparam =0

);23static

lresult sendmessage( hwnd hwnd, uint message, wparam wparam, lparam lparam )

與之對應的postmessage()函式,將訊息放到訊息佇列中,當處理後,返回,遵循佇列順序。當我們需要處理我們自定義的一些訊息時,可以使用此函式,一般自定義的訊息需要大於wm_user,可以使用wm_user + num形式。

senddlgitemmessage(),詳細msdn。

改變視窗的大小wnd::setwindowpos()對話方塊從父類繼承來的函式。

訊息:wm_initdialog,在乙個對話方塊和其上的控制項建立完成之後,由對話方塊傳送,當時,對話方塊還沒顯示。

判斷乙個矩形是否為空:分別為isrectempty(),isrectnull()兩個函式。前者是判斷矩形面積是否為空,後者是判斷矩形的四個座標值是否為0,並不關心是否能做為乙個矩形。

在cpropertypage中設定setwizardbuttons可更改顯示屬性(顯示的button),如下

MFC學習 3 對話方塊

因為我看的是別人的文件寫的,所以不好意思直接複製貼上人家的到我的部落格上,我也就是標記下哪些地方有那些東西方便自己以後檢視而言,如果想自己操作推薦看一下雞啄公尺的文件,裡面真的說的很詳細,基本上都可以做出來 屬性頁對話方塊及相關類的介紹 屬性頁對話方塊 屬性頁對話方塊就是包含一般屬性頁對話方塊和嚮導...

MFC程式設計入門之七(對話方塊 為對話方塊新增控制項)

建立對話方塊資源需要建立對話方塊模板 修改對話方塊屬性 為對話方塊新增各種控制項等步驟,前面一講中已經講了建立對話方塊模板和修改對話方塊屬性,本節繼續講如何為對話方塊新增控制項。上一節中建立了乙個名為 addition 的工程,目的是生成乙個實現加法運算的應用程式。實現加法計算有幾個必要的因素 被加...

MFC學習筆記之對話方塊呼叫

這是我的第一篇部落格,語言組織的不太好,以後繼續努力!自己是一名本科生,為了做創新訓練專案接觸的vc mfc。做專案過程中遇到了各種問題,而且許多細節再次用到的時候會忘記,在這裡做乙個筆記,一是供遇到相同問題的小夥伴參考,二則是為了自己日後回憶。void cmfcfirstnewdlg onbncl...