天天看點

關于WM_GETDLGCODE的一些小技巧關于WM_GETDLCODE這個消息坐好了嗎?總結

關于WM_GETDLCODE這個消息

WM_GETDLCODE這個消息可以用來控制對話框管理器的行為。在之前的一篇文章中,我們講述了如何通過DLGC_HASSETSEL這個标志來控制編輯框的自動選擇行為。

本來我還想講一講其他的一些标志,但是我發現在[知識庫83302]中已經講述的比較全面了,是以我就不打算再來長篇大論一番,而隻是把我認為重要的點稍微提一下。

坐好了嗎?

在衆多标志位中,DLGC_WANTMESSAGE是最有用的一個。它可以用來控制對話框管理器,實作禁止對話框管理器對指定消息的處理。

舉個例子,當輸入焦點在某個特殊的控件上時,你不希望使用者按下ESC按鍵退出對話框,而是希望由控件本身來處理,則可以處理WM_GETDLGCODE這個消息并檢查它的LPARAM參數,如果發現使用者按下的是ESC按鍵,則可以傳回DLGC_WANTMESSAGE,這樣這個消息就不會被對話框管理器進行預設的處理。

另外的幾個标志諸如DLGC_WANTCHARS, DLGC_WANTTAB和DLGC_WANTARROWS,也是類似的用法,它們主要為了友善地檢查某一類消息。

總結

在準備修改視窗預設行為之前,我們應該先考慮是否真的有必要這樣做。

因為如果消息處理邏輯一旦處理不當,就會使你的程式表現得難以使用,或者不符合使用者的操作預期,因為使用者已經習慣了其他程式的統一行為。

關于WM_GETDLGCODE的一些小技巧關于WM_GETDLCODE這個消息坐好了嗎?總結