Win32API學習筆記第七章(一)

2021-08-03 04:24:40 字數 1045 閱讀 5534

這次記錄的是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 ;

Win32API學習筆記第四章

這個訊息是由windows處理硬體中斷的產生的,windows儲存乙個每次硬體計時器滴答減少的次數,當這個計數減到0時就會產生乙個wm timer訊息,這個訊息其實時不會造成非同步的 類似鍵盤和滑鼠,由硬體來處理非同步硬體中斷時間 所以,這個訊息同樣要進入訊息佇列等待訊息迴圈的讀取,所以這個訊息的產...

Win32API學習筆記第五章(一)

子視窗控制,說白了就是由父視窗的hwnd作為createwindow中的hwndparents引數,所穿件的乙個字視窗,但這個子視窗有乙個特性 當子視窗的狀態發生改變時,會有訊息通知父視窗,這就是一種當乙個視窗收到某種重要訊息二通知另乙個視窗的乙個方法的封裝,這時子視窗就相當於父視窗的乙個輸入裝置。...

第七章筆記

程序就是cpu未完成的工作 檢視程序的相關命令 ps a 關於當前環境的所有程序 x 與當前環境無關的所有程序 f 顯示程序從屬關係 e 顯示當前使用者環境中的所有程序 l 長列表顯示程序的詳細資訊 u 顯示程序的使用者資訊 ps ax o cpu,mem,user,group,comm,nice,...