詳情參見百度百科
WM_USER常量是Windows輔助應用程式定義私人視窗類別裡的私人訊息,通常使用WM_USER+一個整數值,但總值不能超過0x7FFF。
#define WM_USER 0x0400
WM_USER定義在WinUser.h中。
範圍表示
0 ~ WM_USER–1
作業系統保留的訊息。
WM_USER ~ 0x7FFF
私人視窗類別用的整數型訊息。
WM_APP ~ 0xBFFF
應用程式用的訊息。
0xC000 ~ 0xFFFF
應用程式用的字串訊息。
0xFFFF ~
作業系統保留的訊息。表單底端
MFC在afxres.h中預定義了一些常用的控制條
#define AFX_IDW_TOOLBAR 0xE800 // main Toolbar for window
#define AFX_IDW_STATUS_BAR 0xE801 // Status bar window
#define AFX_IDW_PREVIEW_BAR 0xE802 // PrintPreview Dialog Bar
#define AFX_IDW_RESIZE_BAR 0xE803 // OLE in-place resize bar
#define AFX_IDW_REBAR 0xE804 // COMCTL32 "rebar" Bar
#define AFX_IDW_DIALOGBAR 0xE805 // CDialogBar
WM_USER 與 WM_APP#define WM_GET (WM_USER+112) 和 #define WM_GET (WM_APP+112)除了值不同外,有區別嗎?(1)WM_USER through 0x7FFF Integer messages for use by private window classes. WM_APP through 0xBFFF Messages
available for use by applications.(2)預設規則是以WM_USER+X(WM_USER--0x7fff)用於視窗級的訊息,WM_APP+X(WM_APP--0xbfff)用於進程級的訊息. (3)我的理解:第一種定義用於進程內訊息,第二種定義用於進程間訊息(4)約定俗成的一種規則。
WM_USER through 0x7FFF: 僅在自己預定義的視窗內部使用;
WM_APP through 0xBFFF: 在應用程式的其他地方均可使用例一:如果程式的所有視窗和所有控制項完全由你一個人實現,你完全可以不遵守這一規則。
但若有其他人寫的代碼或載入了外來的控制項,如果你不遵守這一規則,發生衝突的機率會明顯加大,可能會出現意想不到的結果。例二:這樣的:我的COM裡需要定義一個通知訊息,來通知應用程式為它填充緩衝,這個COM是一個進程內的COM,當我#define WM_GET (WM_USER+112) 時,通過測試30次,可能要失敗1次,用#define
WM_GET (WM_APP+112)時,30次全成功,但現在不敢肯定是它引起的,有可能其他地方還會有影響