Win32API學習筆記第七章(一)

這次記錄的是Dialog這個在VS的資源管理器裏面也可以直接託,拖完了只需要對每一個窗口控制改下ID(或者不改也可以)然後就可以用了。

使用方法:

總括對話框

創建方法已經知道了,來說下這麼用,這個對話框和一般的子窗口有點不一樣,這個對話框一共分爲兩個類型,一個是模態的,一個是非模態的,意思就是說一個是不允許用戶在同一程序的窗口之間切換的,一個是允許的,要切換,必須顯示的把這個窗口關了。但是這種不允許切換也就只是正對這一個程序,程序與程序之間的切換還是被允許的。但是還有一個對話框是系統模態的,這個對話框就必須等待他顯式的被關閉之後纔可以繼續進行其他的工作。

對話框

對話框也有一個類似域窗口過程的用戶定義的對話框過程,但是與一般的窗口過程不同,對話框一般只在創建時初始化子窗口控制然後處理一下子窗口控制的消息以及結束時

消息如下:

WM_INITDIALOG,這個消息就是類似於WM_CREAT消息(對話框不接收WM_CREAT),同樣的這個消息是對話框接收到的第一個消息
之後就是WM_COMMAND消息了,這個消息用法和之前的資源菜單的用法一致。

激活對話框:

激活一個對話框只需要在調用到相關消息(一般實在菜單消息時)調用DialogBox這個函數,這個函數的內容:DialogBox(HINSTANCE,LPTCHAR,HWND,一個和窗口過程參數相同的一個函數指針)
同樣,我們可以直接由對話框發送消息到父窗口:
SendMessage(GetParent(hDlg(這個是Dialog窗口的窗口句柄)),…)
我們也可以獲取到對話框內子窗口控制的窗口句柄:
GetDlgItem(HWND,控件ID)(這個函數在之前也有介紹過)
最後我們要處理關閉消息(除了直接點右上的X)我們一般是接收到類似關閉按鈕發送的消息時調用EndDialog(hDlg,int)就可以了,這裏的int是在DialogBox時的返回值,可以做一些事情,類似:

if (DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc))
                    InvalidateRect (hwnd, NULL, TRUE) ;
               return 0 ;
發佈了46 篇原創文章 · 獲贊 24 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章