在windows開發中,我們經常會使用的自定義訊息,關於這個訊息的數值選取,還是有點講究的,今天就來具體看看(免得又掉溝裡了)。
windows訊息,可以分為如下幾類:
這類訊息是被作業系統定義並使用的訊息。我們盡量不要在這個範圍內定義我們自己的訊息,因為它們會被作業系統使用並識別訊息的wparam和lparam引數,並將它們在多個程序之間列集(marshal)。
在這個範圍內定義的訊息主要被用在windows類中。舉個例子,wm_user + 1這個訊息,如果視窗是乙個工具欄(*******)控制項,則它表示tb_enablebutton,如果視窗是乙個工具提示(tooltip)控制項,則它表示ttm_activate,如果視窗是乙個對話方塊,則這個訊息表示dm_setdefid。如果你建立了你自己的自定義控制項,那可能會表達的另乙個完全不同的意思。因為開發者可能都會用到這個範圍裡的訊息,所以作業系統不能清楚地知道應該如何解析這個訊息,所以不會進行自動化列集。
這個範圍內的訊息是應用程式自己定義的。這個訊息範圍在windows 95時期被建立,主要用來確保應用程式使用的自定義訊息不會影響到將來windows版本中的windows類訊息。和上面的windows類訊息一樣,開發者可能都會用到這個範圍裡的訊息,所以作業系統不能清楚地知道應該如何解析這個訊息,所以不會進行自動化列集。
Windows訊息分類
windows訊息分為三類 標準訊息 除了wm command 之外,所有以 wm 開頭的訊息都是標準訊息,從 cwnd 派生的類都可以接受這類訊息。例如 在.h檔案中宣告的wm rbuttondown標準的訊息 afx msg declare message map 在.cpp檔案中宣告的wm r...
windows訊息分類
windows中,訊息被分為以下三類 第一類 標準訊息 除了wm command之外,所有的wm 開頭的訊息都是標準訊息。從cwnd派生的類,都可以接收這類訊息。例如wm char wm close,其對應的訊息對映巨集分別是on wm char on wm close 第二類 命令訊息 來自選單 ...
關於windows訊息的派發
while getmessage msg,null,0,0 從訊息佇列中取訊息 對於以上結構,寫過windows程式的都應該熟悉,其中dispatch函式負責 訊息,那麼如果就dispatch這句話注釋掉,是不是windows視窗就收不到訊息了,非也,經研究發現,對於一般的滑鼠鍵盤操作,注釋掉dis...