Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows XP系統教程 >> XP系統基礎知識 >> Windows系統消息大全使用詳細介紹

Windows系統消息大全使用詳細介紹

日期:2017/1/24 11:53:05      編輯:XP系統基礎知識
消息,就是指Windows發出的一個通知,告訴應用程序某個事情發生了。例如,單擊鼠標、改變窗口尺寸、按下鍵盤上的一個鍵都會使Windows發送一個消息給應用程序。消息本身是作為一個記錄傳遞給應用程序的,這個記錄中包含了消息的類型以及其他信息。例如,對於單擊鼠標所產生的消息來說,這個記錄中包含了單擊鼠標時的坐標。這個記錄類型叫做TMsg,
  
  它在Windows單元中是這樣聲明的:
  type
  TMsg = packed record
  hwnd: HWND; / /窗口句柄
  message: UINT; / /消息常量標識符
  wParam: WPARAM ; // 32位消息的特定附加信息
  lParam: LPARAM ; // 32位消息的特定附加信息
  time: DWord; / /消息創建時的時間
  pt: TPoint; / /消息創建時的鼠標位置
  end;
  
  消息中有什麼?

  是否覺得一個消息記錄中的信息像希臘語一樣?如果是這樣,那麼看一看下面的解釋:
  hwnd 32位的窗口句柄。窗口可以是任何類型的屏幕對象,因為Win32能夠維護大多數可視對象的句柄(窗口、對話框、按鈕、編輯框等)。
  message 用於區別其他消息的常量值,這些常量可以是Windows單元中預定義的常量,也可以是自定義的常量。
  wParam 通常是一個與消息有關的常量值,也可能是窗口或控件的句柄。
  lParam 通常是一個指向內存中數據的指針。由於W P a r a m、l P a r a m和P o i n t e r都是3 2位的,
  因此,它們之間可以相互轉換。
  WM_NULL = $0000;
  WM_CREATE = $0001;
  應用程序創建一個窗口
  WM_DESTROY = $0002;
  一個窗口被銷毀
  WM_MOVE = $0003;
  移動一個窗口
  WM_SIZE = $0005;
  改變一個窗口的大小
  WM_ACTIVATE = $0006;
  一個窗口被激活或失去激活狀態;
  WM_SETFOCUS = $0007;
  獲得焦點後
  WM_KILLFOCUS = $0008;
  失去焦點
  WM_ENABLE = $000A;
  改變enable狀態
  WM_SETREDRAW = $000B;
  設置窗口是否能重畫
  WM_SETTEXT = $000C;
  應用程序發送此消息來設置一個窗口的文本
  WM_GETTEXT = $000D;
  應用程序發送此消息來復制對應窗口的文本到緩沖區
  WM_GETTEXTLENGTH = $000E;
  得到與一個窗口有關的文本的長度(不包含空字符)
  WM_PAINT = $000F;
  要求一個窗口重畫自己
  WM_CLOSE = $0010;
  當一個窗口或應用程序要關閉時發送一個信號
  WM_QUERYENDSESSION = $0011;
  當用戶選擇結束對話框或程序自己調用ExitWindows函數
  WM_QUIT = $0012;
  用來結束程序運行或當程序調用postquitmessage函數
  WM_QUERYOPEN = $0013;
  當用戶窗口恢復以前的大小位置時,把此消息發送給某個圖標
  WM_ERASEBKGND = $0014;
  當窗口背景必須被擦除時(例在窗口改變大小時)
  WM_SYSCOLORCHANGE = $0015;
  當系統顏色改變時,發送此消息給所有頂級窗口
  WM_ENDSESSION = $0016;
  當系統進程發出WM_QUERYENDSESSION消息後,此消息發送給應用程序,
  通知它對話是否結束
  WM_SYSTEMERROR = $0017;
  WM_SHOWWINDOW = $0018;
  當隱藏或顯示窗口是發送此消息給這個窗口
  WM_ACTIVATEAPP = $001C;
  發此消息給應用程序哪個窗口是激活的,哪個是非激活的;
  WM_FONTCHANGE = $001D;
  當系統的字體資源庫變化時發送此消息給所有頂級窗口
  WM_TIMECHANGE = $001E;
  當系統的時間變化時發送此消息給所有頂級窗口
  WM_CANCELMODE = $001F;
  發送此消息來取消某種正在進行的摸態(操作)
  WM_SETCURSOR = $0020;
  如果鼠標引起光標在某個窗口中移動且鼠標輸入沒有被捕獲時,就發消息給某個窗口
  WM_MOUSEACTIVATE = $0021;
  當光標在某個非激活的窗口中而用戶正按著鼠標的某個鍵發送此消息給當前窗口
  WM_CHILDACTIVATE = $0022;
  發送此消息給MDI子窗口當用戶點擊此窗口的標題欄,或當窗口被激活,移動,改變大小
  WM_QUEUESYNC = $0023;
  此消息由基於計算機的訓練程序發送,通過WH_JOURNALPALYBACK的hook程序
  分離出用戶輸入消息
  WM_GETMINMAXINFO = $0024;
  此消息發送給窗口當它將要改變大小或位置;
  WM_PAINTICON = $0026;
  發送給最小化窗口當它圖標將要被重畫
  WM_ICONERASEBKGND = $0027;
  此消息發送給某個最小化窗口,僅當它在畫圖標前它的背景必須被重畫
  WM_NEXTDLGCTL = $0028;
  發送此消息給一個對話框程序去更改焦點位置
  WM_SPOOLERSTATUS = $002A;
  每當打印管理列隊增加或減少一條作業時發出此消息  
  WM_DRAWITEM = $002B;


  當button,combobox,listbox,menu的可視外觀改變時發送
  此消息給這些空件的所有者
  WM_MEASUREITEM = $002C;
  當button, combo box, list box, list vIEw control, or menu item 被創建時
  發送此消息給控件的所有者
  WM_DELETEITEM = $002D;
  當the list box 或 combo box 被銷毀 或 當 某些項被刪除通過LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息
  WM_VKEYTOITEM = $002E;
  此消息有一個LBS_WANTKEYBOARDINPUT風格的發出給它的所有者來響應WM_KEYDOWN消息
  WM_CHARTOITEM = $002F;
  此消息由一個LBS_WANTKEYBOARDINPUT風格的列表框發送給他的所有者來響應WM_CHAR消息
  WM_SETFONT = $0030;
  當繪制文本時程序發送此消息得到控件要用的顏色
  WM_GETFONT = $0031;
  應用程序發送此消息得到當前控件繪制文本的字體
  WM_SETHOTKEY = $0032;
  應用程序發送此消息讓一個窗口與一個熱鍵相關連
  WM_GETHOTKEY = $0033;
  應用程序發送此消息來判斷熱鍵與某個窗口是否有關聯
  WM_QUERYDRAGICON = $0037;
  此消息發送給最小化窗口,當此窗口將要被拖放而它的類中沒有定義圖標,應用程序能返回一個圖標或光標的句柄,當用戶拖放圖標時系統顯示這個圖標或光標
  WM_COMPAREITEM = $0039;
  發送此消息來判定combobox或listbox新增加的項的相對位置
  WM_GETOBJECT = $003D;
  WM_COMPACTING = $0041;
  顯示內存已經很少了
  WM_WINDOWPOSCHANGING = $0046;
  發送此消息給那個窗口的大小和位置將要被改變時,來調用setwindowpos函數或其它窗口管理函數
  WM_WINDOWPOSCHANGED = $0047;
  發送此消息給那個窗口的大小和位置已經被改變時,來調用setwindowpos函數或其它窗口管理函數
  WM_POWER = $0048;(適用於16位的Windows)
  當系統將要進入暫停狀態時發送此消息
  WM_COPYDATA = $004A;
  當一個應用程序傳遞數據給另一個應用程序時發送此消息
  WM_CANCELJOURNAL = $004B;
  當某個用戶取消程序日志激活狀態,提交此消息給程序
  WM_NOTIFY = $004E;
  當某個控件的某個事件已經發生或這個控件需要得到一些信息時,發送此消息給它的父窗口
  WM_INPUTLANGCHANGEREQUEST = $0050;
  當用戶選擇某種輸入語言,或輸入語言的熱鍵改變
  WM_INPUTLANGCHANGE = $0051;
  當平台現場已經被改變後發送此消息給受影響的最頂級窗口
  WM_TCARD = $0052;
  當程序已經初始化Windows幫助例程時發送此消息給應用程序
  WM_HELP = $0053;
  此消息顯示用戶按下了F1,如果某個菜單是激活的,就發送此消息個此窗口關聯的菜單,否則就
  發送給有焦點的窗口,如果當前都沒有焦點,就把此消息發送給當前激活的窗口
  WM_USERCHANGED = $0054;
  當用戶已經登入或退出後發送此消息給所有的窗口,當用戶登入或退出時系統更新用戶的具體
  設置信息,在用戶更新設置時系統馬上發送此消息;
  WM_NOTIFYFORMAT = $0055;
  公用控件,自定義控件和他們的父窗口通過此消息來判斷控件是使用ANSI還是UNICODE結構
  在WM_NOTIFY消息,使用此控件能使某個控件與它的父控件之間進行相互通信
  WM_CONTEXTMENU = $007B;
  當用戶某個窗口中點擊了一下右鍵就發送此消息給這個窗口
  WM_STYLECHANGING = $007C;
  當調用SETWINDOWLONG函數將要改變一個或多個 窗口的風格時發送此消息給那個窗口
  WM_STYLECHANGED = $007D;
  當調用SETWINDOWLONG函數一個或多個 窗口的風格後發送此消息給那個窗口
  WM_DISPLAYCHANGE = $007E;
  當顯示器的分辨率改變後發送此消息給所有的窗口
  WM_GETICON = $007F;
  此消息發送給某個窗口來返回與某個窗口有關連的大圖標或小圖標的句柄;
  WM_SETICON = $0080;
  程序發送此消息讓一個新的大圖標或小圖標與某個窗口關聯;
  WM_NCCREATE = $0081;
  當某個窗口第一次被創建時,此消息在WM_CREATE消息發送前發送;
  WM_NCDESTROY = $0082;
  此消息通知某個窗口,非客戶區正在銷毀
  WM_NCCALCSIZE = $0083;
  當某個窗口的客戶區域必須被核算時發送此消息
  WM_NCHITTEST = $0084;//移動鼠標,按住或釋放鼠標時發生
  WM_NCPAINT = $0085;
  程序發送此消息給某個窗口當它(窗口)的框架必須被繪制時;
  WM_NCACTIVATE = $0086;
Copyright © Windows教程網 All Rights Reserved