【摘要】這節課的主要內容是將如何修改視窗類,也就是修改乙個建立好的視窗類。本節課實現修改我們自己建立的視窗類,來達到閃爍的文字和視窗背景顏色的效果。當然也可以修改系統建立的視窗類。
修改視窗類,系統已經提供了api函式setwindowlong。它可以修改已經建立的視窗的風格、視窗過程、視窗id和視窗關聯的資料。
修改的實現過程很簡單。我們利用這個修改,可以隨意切換視窗處理過程。只要修改一下視窗過程,視窗的訊息就會傳送到新的視窗過程中處理了。
首先,準備好乙個視窗過程。自己提供的視窗過程中,包含了另外一套訊息處理。和原先的視窗過程一起,一共有兩套了。
然後通過使用setwindowlong(hwnd, gwl_wndproc, (long)新視窗過程函式名),這樣就可以重新設定了。setwindowlong需要設定的視窗控制代碼,所以,你要等開始的視窗已經建立成功了,才能設定,不然你無法獲取視窗控制代碼咯。你也可以等視窗建立出來後再給視窗類修改視窗過程,也可以建立視窗後,修改視窗類的視窗過程,然後再顯示視窗
#include #include lresult callback wndproc(hwnd, uint, wparam, lparam);
lresult callback myproc(hwnd, uint, wparam, lparam);
int winapi winmain(hinstance hinstance, hinstance hprev, pstr szcmdline, int icmdshow)
setwindowlong(hwnd, gwl_wndproc, (long)myproc);
showwindow(hwnd, icmdshow);
updatewindow(hwnd);
while (getmessage(&msg, null, 0, 0))
return msg.wparam;
}lresult callback myproc(hwnd hwnd, uint message, wparam wparam, lparam lparam)
; switch (message)
return defwindowproc(hwnd, message, wparam, lparam);
}lresult callback wndproc(hwnd hwnd, uint message, wparam wparam, lparam lparam)
; switch (message)
return defwindowproc(hwnd, message, wparam, lparam);
}
總結:
setwindowlong(hwnd, gwl_wndproc, (long)新視窗過程函式名)該函式可以修改視窗過程函式。一般來說,當乙個視窗類建立的時候,視窗過程函式就隨之確定。我們可以通過這個修改函式使視窗類執行另外的視窗過程函式。
修改視窗類的類名
修改視窗類的類名 相信很多人在vc下開發程式的時候大多都會採用基於對話方塊的開發吧,我也不例外,大多數的小型測試程式沒有必要開發基於文件 檢視的結構來測試,只要使用一些基本的對話方塊程式就可以達到這個目的 但是在開發基於對話方塊的程式時,要使用到一些 spy 的功能檢測的時候,就會出現一些問題。什麼...
windows如何實現圓角視窗
windows做繪製時,為了美觀,常常將一些或者視窗的四個角做成圓角。例如qq視窗 計算視窗的邊界剪下域 通過windows apisetwindowrgn設定該視窗的剪下域 1.計算視窗的邊界剪下域 使用combinergn來修改邊界剪下域,常用的位操作如下 2.設定視窗的邊界剪下域 上述兩步驟,...
windows使用CMD命令視窗修改IP位址
1 用快捷鍵 win r 開啟執行介面,輸入 cmd 回車,開啟命令提示符。2 在命令提示符中依次輸入 netsh inte ce ip 並依次回車。3 輸入 set address 連線名稱 static 新ip位址 子網掩碼 閘道器 1 然後回車。注意,上述命令需要按照使用者要求進行修改,連線名...