在Windows開發中,我們經常會使用的自定義消息,關于這個消息的數值選取,還是有點講究的,今天就來具體看看(免得又掉溝裡了)。
Windows消息,可以分為如下幾類:
0~0x3FF (WM_USER – 1): 系統消息這類消息是被操作系統定義并使用的消息。我們盡量不要在這個範圍内定義我們自己的消息,因為它們會被操作系統使用并識别消息的WPARAM和LPARAM參數,并将它們在多個進程之間列集(Marshal)。
0x400~0x7FFF (WM_USER~WM_APP – 1): Windows類消息在這個範圍内定義的消息主要被用在Windows類中。舉個例子,WM_USER 1這個消息,如果窗口是一個工具欄(toolbar)控件,則它表示TB_ENABLEBUTTON,如果窗口是一個工具提示(tooltip)控件,則它表示TTM_ACTIVATE,如果窗口是一個對話框,則這個消息表示DM_SETDEFID。如果你創建了你自己的自定義控件,那可能會表達的另一個完全不同的意思。因為開發者可能都會用到這個範圍裡的消息,所以操作系統不能清楚地知道應該如何解析這個消息,所以不會進行自動化列集。
0x8000~0xBFFF (WM_APP~MAXINTATOM – 1): 應用程序定義消息這個範圍内的消息是應用程序自己定義的。這個消息範圍在Windows 95時期被創建,主要用來确保應用程序使用的自定義消息不會影響到将來Windows版本中的Windows類消息。和上面的Windows類消息一樣,開發者可能都會用到這個範圍裡的消息,所以操作系統不能清楚地知道應該如何解析這個消息,所以不會進行自動化列集。
0xC000~0xFFFF (MAXINTATOM~MAXWORD): 注冊消息這個範圍主要是通過RegisterWindowMessage注冊的消息。需要注意的是,注冊消息的實際數值可能會随着每次系統運行而不同,所以需要使用RegisterWindowMessage來獲取實際的消息值。和上面的Windows類消息一樣,開發者可能都會用到這個範圍裡的消息,所以操作系統不能清楚地知道應該如何解析這個消息,所以不會進行自動化列集。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!