日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

DELPHI 中 Window 消息大全使用详解

發(fā)布時(shí)間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DELPHI 中 Window 消息大全使用详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Window 消息大全使用詳解 導(dǎo)讀:
  Delphi是Borland公司的一種面向?qū)ο蟮目梢暬浖_(kāi)發(fā)工具。 Delphi集中了Visual C++和Visual Basic兩者的優(yōu)點(diǎn):容易上手、功能強(qiáng)大,特別是在界面設(shè)計(jì)、數(shù)據(jù)庫(kù)編程、網(wǎng)絡(luò)編程方面更有其獨(dú)特的優(yōu)勢(shì)。
  Delphi中的消息
  消息是Windows發(fā)出的一個(gè)通知,它告訴應(yīng)用程序某個(gè)事件發(fā)生了。在Delphi中,大多數(shù)情況下Windows的消息被封裝在VCL的事件中,我們只需處理相應(yīng)的VCL事件就可以了,但如果我們需要編寫自己的控件、截獲或過(guò)濾消息就必須深入研究Win32的消息處理機(jī)制。
  在Delphi中消息以TMessage記錄的方式定義。打開(kāi)Message.pas文件,我們可以看到Tmessage是這樣定義的:
  type
  TMessage = packed record
  Msg: Cardinal;
  case Integer of
  0: ( WParam: Longint;
  LParam: Longint;
  Result: Longint);
  1: ( WParamLo: Word;
  WParamHi: Word;
  LParamLo: Word;
  LParamHi: Word;
  ResultLo: Word;
  ResultHi: Word);
  end;
  其中,Msg是區(qū)別于其他消息的常量值,這些常量值可以是Windows單元中預(yù)定義的常量,也可以是用戶自己定義的常量。Wparam通常是一個(gè)與消息有關(guān)的常量值,也可以是窗口或控件的句柄。LParam通常是一個(gè)指向內(nèi)存中數(shù)據(jù)的指針。
  Result是消息處理的返回值。Wparam、Lparam和Result都是32位的,如果想訪問(wèn)其中的低16位或高16位可以分別使用WparamLo、WparamHi、 LParamLo、LparamHi、ResultLo和ResultHi。
  在Delphi中除了通用的Tmessage外,還為每個(gè)Windows定義了一個(gè)特殊的消息記錄。我們可以瀏覽Message.pas文件,下面是鍵盤的消息記錄:
  TWMKey = packed record
  Msg: Cardinal;
  CharCode: Word;
  Unused: Word;
  KeyData: Longint;
  Result: Longint;
  與鍵盤相關(guān)的消息如:WM_KEYDOWN、 WM_KEYUP、 WM_CHAR、 WM_SYSKEYDOWN WM_SYSKEYUP、 WM_SYSCHAR的記錄也被定義為TWMkey。在Message.pas文件中有以下聲明:
  TWMChar=TWMkey; TWMKeyDown=
  TWMkey;TWMKeyUp=TWMkey; TWMSys
  -KeyDown=TWMkey; TWMSysKeyUp=
  TWMkey;TWMSysChar=TWMkey;
  消息的發(fā)送
  消息處理就是定義應(yīng)用程序如何響應(yīng)Windows的消息。在Delphi中每一個(gè)消息都有自己的處理過(guò)程,它必須是一個(gè)對(duì)象中的方法,且只能傳遞一個(gè)Tmessage或其他特殊的消息記錄,方法聲明后要有一個(gè)message命令,后接一個(gè)在0到32767之間的常量。
  前面我們提到的消息都是標(biāo)準(zhǔn)的Windows消息(WM_X),除此之外還有VCL內(nèi)部消息、通知消息和用戶自定義消息。
  VCL內(nèi)部消息通常以“CM_”開(kāi)頭,用于管理VCL內(nèi)部的事物。如果改變了某個(gè)屬性值或組件的其他一些特性后,需要通過(guò)內(nèi)部消息將該變化通知其他組件。例如,激活輸入焦點(diǎn)消息是向被激活的或被停用的組件發(fā)送的,用于接受或放棄輸入焦點(diǎn)。
  另外還有通知消息,一個(gè)窗口內(nèi)的子控件發(fā)生了一些事情,需要通知父窗口,這是通過(guò)通知消息實(shí)現(xiàn)的。它只適用于標(biāo)準(zhǔn)的窗口控件,如按鈕、列表框、編輯框等等。打開(kāi)Message.pas文件,在標(biāo)準(zhǔn)的Windows后就是通知消息的聲明:
  const
  {$EXTERNALSYM BN_CLICKED}
  BN_CLICKED = 0;
  {$EXTERNALSYM BN_PAINT}
  BN_PAINT = 1;
  {$EXTERNALSYM BN_HILITE}
  BN_HILITE = 2;
  以上是按鈕的通知消息,分別表示用戶單擊了按鈕、按鈕應(yīng)當(dāng)重畫、用戶加亮了按鈕。
  用戶也可以自己定義消息、給自己發(fā)送消息和編寫消息處理過(guò)程。消息的常量值為WM_USER+100到$7FFF, 這個(gè)范圍是Windows為用戶自定義消息保留的。
  Delphi消息的發(fā)送有三種方法:
  1.Tcontrol類的Perform對(duì)象方法。可以向任何一個(gè)窗體或控件發(fā)送消息,只需要知道窗體或控件的實(shí)例。其聲明如下:
  function Tcontrol.Perform(Msg:Cardinal;Wparam,Lparam:Longint):Longint
  2.Windows的API函數(shù)SendMessage()和Postmessage()。其聲明如下:
  function SendMessage(hWnd: HWND; Msg: UINT;wParam:WPARAM; lParam: LPARAM):LRESULT;stdcall;
  function SendMessage(hWnd: HWND; Msg: UINT;wParam: WPARAM; lParam:LPARAM):LRESULT;stdcall
  PostMessage函數(shù)將消息添加到應(yīng)用程序的消息隊(duì)列中去。應(yīng)用程序的消息循環(huán)會(huì)從消息隊(duì)列中提取登記的該消息,再發(fā)送到相應(yīng)的窗口中。
  SendMessage函數(shù)可以越過(guò)消息隊(duì)列直接向窗口過(guò)程發(fā)送。所以當(dāng)Windows需要立刻返回值時(shí)使用SendMessage,當(dāng)需要不同的應(yīng)用程序依次處理消息時(shí)使用PostMessage。而Perform從本質(zhì)上和SendMessage相似,它們直接向窗口過(guò)程發(fā)送。SendMessage、Postmessage函數(shù)只需要知道窗口的句柄就可以發(fā)送消息,所以它們可以向非Delphi窗體發(fā)送一條消息,但而Perform必須知道窗體或控件的實(shí)例。
  VCL消息處理機(jī)制
  在Delphi應(yīng)用程序的源代碼中有語(yǔ)句Application.Run,它的作用是啟動(dòng)消息循環(huán),然后調(diào)用Application.ProcessMessage,該函數(shù)會(huì)在應(yīng)用程序的消息隊(duì)列中查找一條消息。當(dāng)在消息隊(duì)列中檢索到一條消息后,觸發(fā)Application.OnMessage事件。這樣在Windows本身對(duì)消息處理之前,就會(huì)響應(yīng)OnMessage事件的處理過(guò)程,它優(yōu)于任何消息處理,而且只接收登記的消息,即前面所述的由PostMessage發(fā)送的消息。響應(yīng)Application.OnMessage事件的處理過(guò)程必須是TmessageEvent類型,其聲明如下:
  type TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object;
  其中TMsg是Windows中定義的消息記錄,我們可以這樣聲明:
  Procedure OnMyMessage(var Msg:TMsg;var Handled:Boolean);
  然后把此方法賦給Application.OnMessage事件:
  Application.OnMessage :=OnMyMessage;
  OnMessage事件將捕獲發(fā)送給應(yīng)用程序的所有消息,這是一個(gè)非常繁忙的事件,因此在處理OnMessage事件的處理過(guò)程中設(shè)置斷點(diǎn)進(jìn)行消息處理是不明智的。
  VCL對(duì)象用于接收消息的方法叫MainWndProc。它是定義在Twincontrol類中的靜態(tài)方法,不能被重載。它不直接處理消息,當(dāng)消息離開(kāi)MainWndProc后,消息被傳遞給對(duì)象的WndProc方法,WndProc方法是在Tcontrol類中定義的一個(gè)虛擬方法,由它調(diào)用Dispatch方法。Dispatch根據(jù)傳入的Message來(lái)尋找相應(yīng)的處理方法,如果最后找不到,就繼續(xù)向上到父類中尋找消息處理方法,一直到找到為止,如果找不到則調(diào)用Defaulthandler。Defaulthandler方法對(duì)消息進(jìn)行最后的處理,然后把消息傳遞給Windows的DefWindowProc函數(shù)或其他默認(rèn)的窗口過(guò)程。
  Delphi中的消息
  消息是Windows發(fā)出的一個(gè)通知,它告訴應(yīng)用程序某個(gè)事件發(fā)生了。在Delphi中,大多數(shù)情況下Windows的消息被封裝在VCL的事件中,我們只需處理相應(yīng)的VCL事件就可以了,但如果我們需要編寫自己的控件、截獲或過(guò)濾消息就必須深入研究Win32的消息處理機(jī)制。
  在Delphi中消息以TMessage記錄的方式定義。打開(kāi)Message.pas文件,我們可以看到Tmessage是這樣定義的:
  type
  TMessage = packed record
  Msg: Cardinal;
  case Integer of
  0: ( WParam: Longint;
  LParam: Longint;
  Result: Longint);
  1: ( WParamLo: Word;
  WParamHi: Word;
  LParamLo: Word;
  LParamHi: Word;
  ResultLo: Word;
  ResultHi: Word);
  end;
  其中,Msg是區(qū)別于其他消息的常量值,這些常量值可以是Windows單元中預(yù)定義的常量,也可以是用戶自己定義的常量。Wparam通常是一個(gè)與消息有關(guān)的常量值,也可以是窗口或控件的句柄。LParam通常是一個(gè)指向內(nèi)存中數(shù)據(jù)的指針。
  Result是消息處理的返回值。Wparam、Lparam和Result都是32位的,如果想訪問(wèn)其中的低16位或高16位可以分別使用WparamLo、WparamHi、 LParamLo、LparamHi、ResultLo和ResultHi。
  在Delphi中除了通用的Tmessage外,還為每個(gè)Windows定義了一個(gè)特殊的消息記錄。我們可以瀏覽Message.pas文件,下面是鍵盤的消息記錄:
  TWMKey = packed record
  Msg: Cardinal;
  CharCode: Word;
  Unused: Word;
  KeyData: Longint;
  Result: Longint;
  與鍵盤相關(guān)的消息如:WM_KEYDOWN、 WM_KEYUP、 WM_CHAR、 WM_SYSKEYDOWN WM_SYSKEYUP、 WM_SYSCHAR的記錄也被定義為TWMkey。在Message.pas文件中有以下聲明:
  TWMChar=TWMkey; TWMKeyDown=
  TWMkey;TWMKeyUp=TWMkey; TWMSys
  -KeyDown=TWMkey; TWMSysKeyUp=
  TWMkey;TWMSysChar=TWMkey;
  消息的發(fā)送
  消息處理就是定義應(yīng)用程序如何響應(yīng)Windows的消息。在Delphi中每一個(gè)消息都有自己的處理過(guò)程,它必須是一個(gè)對(duì)象中的方法,且只能傳遞一個(gè)Tmessage或其他特殊的消息記錄,方法聲明后要有一個(gè)message命令,后接一個(gè)在0到32767之間的常量。
  前面我們提到的消息都是標(biāo)準(zhǔn)的Windows消息(WM_X),除此之外還有VCL內(nèi)部消息、通知消息和用戶自定義消息。
  VCL內(nèi)部消息通常以“CM_”開(kāi)頭,用于管理VCL內(nèi)部的事物。如果改變了某個(gè)屬性值或組件的其他一些特性后,需要通過(guò)內(nèi)部消息將該變化通知其他組件。例如,激活輸入焦點(diǎn)消息是向被激活的或被停用的組件發(fā)送的,用于接受或放棄輸入焦點(diǎn)。
  另外還有通知消息,一個(gè)窗口內(nèi)的子控件發(fā)生了一些事情,需要通知父窗口,這是通過(guò)通知消息實(shí)現(xiàn)的。它只適用于標(biāo)準(zhǔn)的窗口控件,如按鈕、列表框、編輯框等等。打開(kāi)Message.pas文件,在標(biāo)準(zhǔn)的Windows后就是通知消息的聲明:
  const
  {$EXTERNALSYM BN_CLICKED}
  BN_CLICKED = 0;
  {$EXTERNALSYM BN_PAINT}
  BN_PAINT = 1;
  {$EXTERNALSYM BN_HILITE}
  BN_HILITE = 2;
  以上是按鈕的通知消息,分別表示用戶單擊了按鈕、按鈕應(yīng)當(dāng)重畫、用戶加亮了按鈕。
  用戶也可以自己定義消息、給自己發(fā)送消息和編寫消息處理過(guò)程。消息的常量值為WM_USER+100到$7FFF, 這個(gè)范圍是Windows為用戶自定義消息保留的。
  Delphi消息的發(fā)送有三種方法:
  1.Tcontrol類的Perform對(duì)象方法。可以向任何一個(gè)窗體或控件發(fā)送消息,只需要知道窗體或控件的實(shí)例。其聲明如下:
  function Tcontrol.Perform(Msg:Cardinal;Wparam,Lparam:Longint):Longint
  2.Windows的API函數(shù)SendMessage()和Postmessage()。其聲明如下:
  function SendMessage(hWnd: HWND; Msg: UINT;wParam:WPARAM; lParam: LPARAM):LRESULT;stdcall;
  function SendMessage(hWnd: HWND; Msg: UINT;wParam: WPARAM; lParam:LPARAM):LRESULT;stdcall
  PostMessage函數(shù)將消息添加到應(yīng)用程序的消息隊(duì)列中去。應(yīng)用程序的消息循環(huán)會(huì)從消息隊(duì)列中提取登記的該消息,再發(fā)送到相應(yīng)的窗口中。
  SendMessage函數(shù)可以越過(guò)消息隊(duì)列直接向窗口過(guò)程發(fā)送。所以當(dāng)Windows需要立刻返回值時(shí)使用SendMessage,當(dāng)需要不同的應(yīng)用程序依次處理消息時(shí)使用PostMessage。而Perform從本質(zhì)上和SendMessage相似,它們直接向窗口過(guò)程發(fā)送。SendMessage、Postmessage函數(shù)只需要知道窗口的句柄就可以發(fā)送消息,所以它們可以向非Delphi窗體發(fā)送一條消息,但而Perform必須知道窗體或控件的實(shí)例。
  VCL消息處理機(jī)制
  在Delphi應(yīng)用程序的源代碼中有語(yǔ)句Application.Run,它的作用是啟動(dòng)消息循環(huán),然后調(diào)用Application.ProcessMessage,該函數(shù)會(huì)在應(yīng)用程序的消息隊(duì)列中查找一條消息。當(dāng)在消息隊(duì)列中檢索到一條消息后,觸發(fā)Application.OnMessage事件。這樣在Windows本身對(duì)消息處理之前,就會(huì)響應(yīng)OnMessage事件的處理過(guò)程,它優(yōu)于任何消息處理,而且只接收登記的消息,即前面所述的由PostMessage發(fā)送的消息。響應(yīng)Application.OnMessage事件的處理過(guò)程必須是TmessageEvent類型,其聲明如下:
  type TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object;
  其中TMsg是Windows中定義的消息記錄,我們可以這樣聲明:
  Procedure OnMyMessage(var Msg:TMsg;var Handled:Boolean);
  然后把此方法賦給Application.OnMessage事件:
  Application.OnMessage :=OnMyMessage;
  OnMessage事件將捕獲發(fā)送給應(yīng)用程序的所有消息,這是一個(gè)非常繁忙的事件,因此在處理OnMessage事件的處理過(guò)程中設(shè)置斷點(diǎn)進(jìn)行消息處理是不明智的。
  VCL對(duì)象用于接收消息的方法叫MainWndProc。它是定義在Twincontrol類中的靜態(tài)方法,不能被重載。它不直接處理消息,當(dāng)消息離開(kāi)MainWndProc后,消息被傳遞給對(duì)象的WndProc方法,WndProc方法是在Tcontrol類中定義的一個(gè)虛擬方法,由它調(diào)用Dispatch方法。Dispatch根據(jù)傳入的Message來(lái)尋找相應(yīng)的處理方法,如果最后找不到,就繼續(xù)向上到父類中尋找消息處理方法,一直到找到為止,如果找不到則調(diào)用Defaulthandler。Defaulthandler方法對(duì)消息進(jìn)行最后的處理,然后把消息傳遞給Windows的DefWindowProc函數(shù)或其他默認(rèn)的窗口過(guò)程。
   消息,就是指Windows發(fā)出的一個(gè)通知,告訴應(yīng)用程序某個(gè)事情發(fā)生了。例如,單擊鼠標(biāo)、改變窗口尺寸、按下鍵盤上的一個(gè)鍵都會(huì)使Windows發(fā)送一個(gè)消息給應(yīng)用程序。消息本身是作為一個(gè)記錄傳遞給應(yīng)用程序的,這個(gè)記錄中包含了消息的類型以及其他信息。例如,對(duì)于單擊鼠標(biāo)所產(chǎn)生的消息來(lái)說(shuō),這個(gè)記錄中包含了單擊鼠標(biāo)時(shí)的坐標(biāo)。這個(gè)記錄類型叫做TMsg,
  它在Windows單元中是這樣聲明的:
  type
  TMsg = packed record
  hwnd: HWND; / /窗口句柄
  message: UINT; / /消息常量標(biāo)識(shí)符
  wParam: WPARAM ;// 32位消息的特定附加信息
  lParam: LPARAM ;// 32位消息的特定附加信息
  time: DWORD; / /消息創(chuàng)建時(shí)的時(shí)間
  pt: TPoint; / /消息創(chuàng)建時(shí)的鼠標(biāo)位置
  end;
  消息中有什么?
  是否覺(jué)得一個(gè)消息記錄中的信息像希臘語(yǔ)一樣?如果是這樣,那么看一看下面的解釋:
  hwnd 32位的窗口句柄。窗口可以是任何類型的屏幕對(duì)象,因?yàn)閃in32能夠維護(hù)大多數(shù)可視對(duì)象的句柄(窗口、對(duì)話框、按鈕、編輯框等)。
  message 用于區(qū)別其他消息的常量值,這些常量可以是Windows單元中預(yù)定義的常量,也可以是自定義的常量。
  wParam 通常是一個(gè)與消息有關(guān)的常量值,也可能是窗口或控件的句柄。
  lParam 通常是一個(gè)指向內(nèi)存中數(shù)據(jù)的指針。由于W P a r a m、l P a r a m和P o i n t e r都是3 2位的,
  因此,它們之間可以相互轉(zhuǎn)換。
  WM_NULL = $0000;
  WM_CREATE = $0001;
  應(yīng)用程序創(chuàng)建一個(gè)窗口
  WM_DESTROY = $0002;
  一個(gè)窗口被銷毀
  WM_MOVE = $0003;
  移動(dòng)一個(gè)窗口
  WM_SIZE = $0005;
  改變一個(gè)窗口的大小
  WM_ACTIVATE = $0006;
  一個(gè)窗口被激活或失去激活狀態(tài);
  WM_SETFOCUS = $0007;
  獲得焦點(diǎn)后
  WM_KILLFOCUS = $0008;
  失去焦點(diǎn)
  WM_ENABLE = $000A;
  改變enable狀態(tài)
  WM_SETREDRAW = $000B;
  設(shè)置窗口是否能重畫
  WM_SETTEXT = $000C;
  應(yīng)用程序發(fā)送此消息來(lái)設(shè)置一個(gè)窗口的文本
  WM_GETTEXT = $000D;
  應(yīng)用程序發(fā)送此消息來(lái)復(fù)制對(duì)應(yīng)窗口的文本到緩沖區(qū)
  WM_GETTEXTLENGTH = $000E;
  得到與一個(gè)窗口有關(guān)的文本的長(zhǎng)度(不包含空字符)
  WM_PAINT = $000F;
  要求一個(gè)窗口重畫自己
  WM_CLOSE = $0010;
  當(dāng)一個(gè)窗口或應(yīng)用程序要關(guān)閉時(shí)發(fā)送一個(gè)信號(hào)
  WM_QUERYENDSESSION = $0011;
  當(dāng)用戶選擇結(jié)束對(duì)話框或程序自己調(diào)用ExitWindows函數(shù)
  WM_QUIT = $0012;
  用來(lái)結(jié)束程序運(yùn)行或當(dāng)程序調(diào)用postquitmessage函數(shù)
  WM_QUERYOPEN = $0013;
  當(dāng)用戶窗口恢復(fù)以前的大小位置時(shí),把此消息發(fā)送給某個(gè)圖標(biāo)
  WM_ERASEBKGND = $0014;
  當(dāng)窗口背景必須被擦除時(shí)(例在窗口改變大小時(shí))
  WM_SYSCOLORCHANGE = $0015;
  當(dāng)系統(tǒng)顏色改變時(shí),發(fā)送此消息給所有頂級(jí)窗口
  WM_ENDSESSION = $0016;
  當(dāng)系統(tǒng)進(jìn)程發(fā)出WM_QUERYENDSESSION消息后,此消息發(fā)送給應(yīng)用程序,
  通知它對(duì)話是否結(jié)束
  WM_SYSTEMERROR = $0017;
  WM_SHOWWINDOW = $0018;
  當(dāng)隱藏或顯示窗口是發(fā)送此消息給這個(gè)窗口
  WM_ACTIVATEAPP = $001C;
  發(fā)此消息給應(yīng)用程序哪個(gè)窗口是激活的,哪個(gè)是非激活的;
  WM_FONTCHANGE = $001D;
  當(dāng)系統(tǒng)的字體資源庫(kù)變化時(shí)發(fā)送此消息給所有頂級(jí)窗口
  WM_TIMECHANGE = $001E;
  當(dāng)系統(tǒng)的時(shí)間變化時(shí)發(fā)送此消息給所有頂級(jí)窗口
  WM_CANCELMODE = $001F;
  發(fā)送此消息來(lái)取消某種正在進(jìn)行的摸態(tài)(操作)
  WM_SETCURSOR = $0020;
  如果鼠標(biāo)引起光標(biāo)在某個(gè)窗口中移動(dòng)且鼠標(biāo)輸入沒(méi)有被捕獲時(shí),就發(fā)消息給某個(gè)窗口
  WM_MOUSEACTIVATE = $0021;
  當(dāng)光標(biāo)在某個(gè)非激活的窗口中而用戶正按著鼠標(biāo)的某個(gè)鍵發(fā)送此消息給當(dāng)前窗口
  WM_CHILDACTIVATE = $0022;
  發(fā)送此消息給MDI子窗口當(dāng)用戶點(diǎn)擊此窗口的標(biāo)題欄,或當(dāng)窗口被激活,移動(dòng),改變大小
  WM_QUEUESYNC = $0023;
  此消息由基于計(jì)算機(jī)的訓(xùn)練程序發(fā)送,通過(guò)WH_JOURNALPALYBACK的hook程序
  分離出用戶輸入消息
  WM_GETMINMAXINFO = $0024;
  此消息發(fā)送給窗口當(dāng)它將要改變大小或位置;
  WM_PAINTICON = $0026;
  發(fā)送給最小化窗口當(dāng)它圖標(biāo)將要被重畫
  WM_ICONERASEBKGND = $0027;
  此消息發(fā)送給某個(gè)最小化窗口,僅當(dāng)它在畫圖標(biāo)前它的背景必須被重畫
  WM_NEXTDLGCTL = $0028;
  發(fā)送此消息給一個(gè)對(duì)話框程序去更改焦點(diǎn)位置
  WM_SPOOLERSTATUS = $002A;
  每當(dāng)打印管理列隊(duì)增加或減少一條作業(yè)時(shí)發(fā)出此消息
  WM_DRAWITEM = $002B;
  當(dāng)button,combobox,listbox,menu的可視外觀改變時(shí)發(fā)送
  此消息給這些空件的所有者
  WM_MEASUREITEM = $002C;
  當(dāng)button, combo box, list box, list view control, or menu item 被創(chuàng)建時(shí)
  發(fā)送此消息給控件的所有者
  WM_DELETEITEM = $002D;
  當(dāng)the list box 或 combo box 被銷毀 或 當(dāng) 某些項(xiàng)被刪除通過(guò)LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息
  WM_VKEYTOITEM = $002E;
  此消息有一個(gè)LBS_WANTKEYBOARDINPUT風(fēng)格的發(fā)出給它的所有者來(lái)響應(yīng)WM_KEYDOWN消息
  WM_CHARTOITEM = $002F;
  此消息由一個(gè)LBS_WANTKEYBOARDINPUT風(fēng)格的列表框發(fā)送給他的所有者來(lái)響應(yīng)WM_CHAR消息
  WM_SETFONT = $0030;
  當(dāng)繪制文本時(shí)程序發(fā)送此消息得到控件要用的顏色
  WM_GETFONT = $0031;
  應(yīng)用程序發(fā)送此消息得到當(dāng)前控件繪制文本的字體
  WM_SETHOTKEY = $0032;
  應(yīng)用程序發(fā)送此消息讓一個(gè)窗口與一個(gè)熱鍵相關(guān)連
  WM_GETHOTKEY = $0033;
  應(yīng)用程序發(fā)送此消息來(lái)判斷熱鍵與某個(gè)窗口是否有關(guān)聯(lián)
  WM_QUERYDRAGICON = $0037;
  此消息發(fā)送給最小化窗口,當(dāng)此窗口將要被拖放而它的類中沒(méi)有定義圖標(biāo),應(yīng)用程序能返回一個(gè)圖標(biāo)或光標(biāo)的句柄,當(dāng)用戶拖放圖標(biāo)時(shí)系統(tǒng)顯示這個(gè)圖標(biāo)或光標(biāo)
  WM_COMPAREITEM = $0039;
  發(fā)送此消息來(lái)判定combobox或listbox新增加的項(xiàng)的相對(duì)位置
  WM_GETOBJECT = $003D;
  WM_COMPACTING = $0041;
  顯示內(nèi)存已經(jīng)很少了
  WM_WINDOWPOSCHANGING = $0046;
  發(fā)送此消息給那個(gè)窗口的大小和位置將要被改變時(shí),來(lái)調(diào)用setwindowpos函數(shù)或其它窗口管理函數(shù)
  WM_WINDOWPOSCHANGED = $0047;
  發(fā)送此消息給那個(gè)窗口的大小和位置已經(jīng)被改變時(shí),來(lái)調(diào)用setwindowpos函數(shù)或其它窗口管理函數(shù)
  WM_POWER = $0048;(適用于16位的windows)
  當(dāng)系統(tǒng)將要進(jìn)入暫停狀態(tài)時(shí)發(fā)送此消息
  WM_COPYDATA = $004A;
  當(dāng)一個(gè)應(yīng)用程序傳遞數(shù)據(jù)給另一個(gè)應(yīng)用程序時(shí)發(fā)送此消息
  WM_CANCELJOURNAL = $004B;
  當(dāng)某個(gè)用戶取消程序日志激活狀態(tài),提交此消息給程序
  WM_NOTIFY = $004E;
  當(dāng)某個(gè)控件的某個(gè)事件已經(jīng)發(fā)生或這個(gè)控件需要得到一些信息時(shí),發(fā)送此消息給它的父窗口
  WM_INPUTLANGCHANGEREQUEST = $0050;
  當(dāng)用戶選擇某種輸入語(yǔ)言,或輸入語(yǔ)言的熱鍵改變
  WM_INPUTLANGCHANGE = $0051;
  當(dāng)平臺(tái)現(xiàn)場(chǎng)已經(jīng)被改變后發(fā)送此消息給受影響的最頂級(jí)窗口
  WM_TCARD = $0052;
  當(dāng)程序已經(jīng)初始化windows幫助例程時(shí)發(fā)送此消息給應(yīng)用程序
  WM_HELP = $0053;
  此消息顯示用戶按下了F1,如果某個(gè)菜單是激活的,就發(fā)送此消息個(gè)此窗口關(guān)聯(lián)的菜單,否則就
  發(fā)送給有焦點(diǎn)的窗口,如果當(dāng)前都沒(méi)有焦點(diǎn),就把此消息發(fā)送給當(dāng)前激活的窗口
  WM_USERCHANGED = $0054;
  當(dāng)用戶已經(jīng)登入或退出后發(fā)送此消息給所有的窗口,當(dāng)用戶登入或退出時(shí)系統(tǒng)更新用戶的具體
  設(shè)置信息,在用戶更新設(shè)置時(shí)系統(tǒng)馬上發(fā)送此消息;
  WM_NOTIFYFORMAT = $0055;
  公用控件,自定義控件和他們的父窗口通過(guò)此消息來(lái)判斷控件是使用ANSI還是UNICODE結(jié)構(gòu)
  在WM_NOTIFY消息,使用此控件能使某個(gè)控件與它的父控件之間進(jìn)行相互通信
  WM_CONTEXTMENU = $007B;
  當(dāng)用戶某個(gè)窗口中點(diǎn)擊了一下右鍵就發(fā)送此消息給這個(gè)窗口
  WM_STYLECHANGING = $007C;
  當(dāng)調(diào)用SETWINDOWLONG函數(shù)將要改變一個(gè)或多個(gè) 窗口的風(fēng)格時(shí)發(fā)送此消息給那個(gè)窗口
  WM_STYLECHANGED = $007D;
  當(dāng)調(diào)用SETWINDOWLONG函數(shù)一個(gè)或多個(gè) 窗口的風(fēng)格后發(fā)送此消息給那個(gè)窗口
  WM_DISPLAYCHANGE = $007E;
  當(dāng)顯示器的分辨率改變后發(fā)送此消息給所有的窗口
  WM_GETICON = $007F;
  此消息發(fā)送給某個(gè)窗口來(lái)返回與某個(gè)窗口有關(guān)連的大圖標(biāo)或小圖標(biāo)的句柄;
  WM_SETICON = $0080;
  程序發(fā)送此消息讓一個(gè)新的大圖標(biāo)或小圖標(biāo)與某個(gè)窗口關(guān)聯(lián);
  WM_NCCREATE = $0081;
  當(dāng)某個(gè)窗口第一次被創(chuàng)建時(shí),此消息在WM_CREATE消息發(fā)送前發(fā)送;
  WM_NCDESTROY = $0082;
  此消息通知某個(gè)窗口,非客戶區(qū)正在銷毀
  WM_NCCALCSIZE = $0083;
  當(dāng)某個(gè)窗口的客戶區(qū)域必須被核算時(shí)發(fā)送此消息
  WM_NCHITTEST = $0084;//移動(dòng)鼠標(biāo),按住或釋放鼠標(biāo)時(shí)發(fā)生
  WM_NCPAINT = $0085;
  程序發(fā)送此消息給某個(gè)窗口當(dāng)它(窗口)的框架必須被繪制時(shí);
  WM_NCACTIVATE = $0086;
  此消息發(fā)送給某個(gè)窗口 僅當(dāng)它的非客戶區(qū)需要被改變來(lái)顯示是激活還是非激活狀態(tài);
  WM_GETDLGCODE = $0087;
  發(fā)送此消息給某個(gè)與對(duì)話框程序關(guān)聯(lián)的控件,widdows控制方位鍵和TAB鍵使輸入進(jìn)入此控件
  通過(guò)響應(yīng)WM_GETDLGCODE消息,應(yīng)用程序可以把他當(dāng)成一個(gè)特殊的輸入控件并能處理它
  WM_NCMOUSEMOVE = $00A0;
  當(dāng)光標(biāo)在一個(gè)窗口的非客戶區(qū)內(nèi)移動(dòng)時(shí)發(fā)送此消息給這個(gè)窗口 //非客戶區(qū)為:窗體的標(biāo)題欄及窗
  的邊框體
  WM_NCLBUTTONDOWN = $00A1;
  當(dāng)光標(biāo)在一個(gè)窗口的非客戶區(qū)同時(shí)按下鼠標(biāo)左鍵時(shí)提交此消息
  WM_NCLBUTTONUP = $00A2;
  當(dāng)用戶釋放鼠標(biāo)左鍵同時(shí)光標(biāo)某個(gè)窗口在非客戶區(qū)十發(fā)送此消息;
  WM_NCLBUTTONDBLCLK = $00A3;
  當(dāng)用戶雙擊鼠標(biāo)左鍵同時(shí)光標(biāo)某個(gè)窗口在非客戶區(qū)十發(fā)送此消息
  WM_NCRBUTTONDOWN = $00A4;
  當(dāng)用戶按下鼠標(biāo)右鍵同時(shí)光標(biāo)又在窗口的非客戶區(qū)時(shí)發(fā)送此消息
  WM_NCRBUTTONUP = $00A5;
  當(dāng)用戶釋放鼠標(biāo)右鍵同時(shí)光標(biāo)又在窗口的非客戶區(qū)時(shí)發(fā)送此消息
  WM_NCRBUTTONDBLCLK = $00A6;
  當(dāng)用戶雙擊鼠標(biāo)右鍵同時(shí)光標(biāo)某個(gè)窗口在非客戶區(qū)十發(fā)送此消息
  WM_NCMBUTTONDOWN = $00A7;
  當(dāng)用戶按下鼠標(biāo)中鍵同時(shí)光標(biāo)又在窗口的非客戶區(qū)時(shí)發(fā)送此消息
  WM_NCMBUTTONUP = $00A8;
  當(dāng)用戶釋放鼠標(biāo)中鍵同時(shí)光標(biāo)又在窗口的非客戶區(qū)時(shí)發(fā)送此消息
  WM_NCMBUTTONDBLCLK = $00A9;
  當(dāng)用戶雙擊鼠標(biāo)中鍵同時(shí)光標(biāo)又在窗口的非客戶區(qū)時(shí)發(fā)送此消息
  WM_KEYFIRST = $0100;
  WM_KEYDOWN = $0100;
  //按下一個(gè)鍵
  WM_KEYUP = $0101;
  //釋放一個(gè)鍵
  WM_CHAR = $0102;
  //按下某鍵,并已發(fā)出WM_KEYDOWN, WM_KEYUP消息
  WM_DEADCHAR = $0103;
  當(dāng)用translatemessage函數(shù)翻譯WM_KEYUP消息時(shí)發(fā)送此消息給擁有焦點(diǎn)的窗口
  WM_SYSKEYDOWN = $0104;
  當(dāng)用戶按住ALT鍵同時(shí)按下其它鍵時(shí)提交此消息給擁有焦點(diǎn)的窗口;
  WM_SYSKEYUP = $0105;
  當(dāng)用戶釋放一個(gè)鍵同時(shí)ALT 鍵還按著時(shí)提交此消息給擁有焦點(diǎn)的窗口
  WM_SYSCHAR = $0106;
  當(dāng)WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函數(shù)翻譯后提交此消息給擁有焦點(diǎn)的窗口
  WM_SYSDEADCHAR = $0107;
  當(dāng)WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函數(shù)翻譯后發(fā)送此消息給擁有焦點(diǎn)的窗口
  WM_KEYLAST = $0108;
  WM_INITDIALOG = $0110;
  在一個(gè)對(duì)話框程序被顯示前發(fā)送此消息給它,通常用此消息初始化控件和執(zhí)行其它任務(wù)
  WM_COMMAND = $0111;
  當(dāng)用戶選擇一條菜單命令項(xiàng)或當(dāng)某個(gè)控件發(fā)送一條消息給它的父窗口,一個(gè)快捷鍵被翻譯
  WM_SYSCOMMAND = $0112;
  當(dāng)用戶選擇窗口菜單的一條命令或當(dāng)用戶選擇最大化或最小化時(shí)那個(gè)窗口會(huì)收到此消息
  WM_TIMER = $0113; //發(fā)生了定時(shí)器事件
  WM_HSCROLL = $0114;
  當(dāng)一個(gè)窗口標(biāo)準(zhǔn)水平滾動(dòng)條產(chǎn)生一個(gè)滾動(dòng)事件時(shí)發(fā)送此消息給那個(gè)窗口,也發(fā)送給擁有它的控件
  WM_VSCROLL = $0115;
  當(dāng)一個(gè)窗口標(biāo)準(zhǔn)垂直滾動(dòng)條產(chǎn)生一個(gè)滾動(dòng)事件時(shí)發(fā)送此消息給那個(gè)窗口也,發(fā)送給擁有它的控件 WM_INITMENU = $0116;
  當(dāng)一個(gè)菜單將要被激活時(shí)發(fā)送此消息,它發(fā)生在用戶菜單條中的某項(xiàng)或按下某個(gè)菜單鍵,它允許程序在顯示前更改菜單
  WM_INITMENUPOPUP = $0117;
  當(dāng)一個(gè)下拉菜單或子菜單將要被激活時(shí)發(fā)送此消息,它允許程序在它顯示前更改菜單,而不要改變?nèi)?
  WM_MENUSELECT = $011F;
  當(dāng)用戶選擇一條菜單項(xiàng)時(shí)發(fā)送此消息給菜單的所有者(一般是窗口)
  WM_MENUCHAR = $0120;
  當(dāng)菜單已被激活用戶按下了某個(gè)鍵(不同于加速鍵),發(fā)送此消息給菜單的所有者;
  WM_ENTERIDLE = $0121;
  當(dāng)一個(gè)模態(tài)對(duì)話框或菜單進(jìn)入空載狀態(tài)時(shí)發(fā)送此消息給它的所有者,一個(gè)模態(tài)對(duì)話框或菜單進(jìn)入空載狀態(tài)就是在處理完一條或幾條先前的消息后沒(méi)有消息它的列隊(duì)中等待
  WM_MENURBUTTONUP = $0122;
  WM_MENUDRAG = $0123;
  WM_MENUGETOBJECT = $0124;
  WM_UNINITMENUPOPUP = $0125;
  WM_MENUCOMMAND = $0126;
  WM_CHANGEUISTATE = $0127;
  WM_UPDATEUISTATE = $0128;
  WM_QUERYUISTATE = $0129;
  WM_CTLCOLORMSGBOX = $0132;
  在windows繪制消息框前發(fā)送此消息給消息框的所有者窗口,通過(guò)響應(yīng)這條消息,所有者窗口可以通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置消息框的文本和背景顏色
  WM_CTLCOLOREDIT = $0133;
  當(dāng)一個(gè)編輯型控件將要被繪制時(shí)發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置編輯框的文本和背景顏色
  WM_CTLCOLORLISTBOX = $0134;
  當(dāng)一個(gè)列表框控件將要被繪制前發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置列表框的文本和背景顏色
  WM_CTLCOLORBTN = $0135;
  當(dāng)一個(gè)按鈕控件將要被繪制時(shí)發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置按紐的文本和背景顏色
  WM_CTLCOLORDLG = $0136;
  當(dāng)一個(gè)對(duì)話框控件將要被繪制前發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置對(duì)話框的文本背景顏色
  WM_CTLCOLORSCROLLBAR= $0137;
  當(dāng)一個(gè)滾動(dòng)條控件將要被繪制時(shí)發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置滾動(dòng)條的背景顏色
  WM_CTLCOLORSTATIC = $0138;
  當(dāng)一個(gè)靜態(tài)控件將要被繪制時(shí)發(fā)送此消息給它的父窗口;通過(guò)響應(yīng)這條消息,所有者窗口可以通過(guò)使用給定的相關(guān)顯示設(shè)備的句柄來(lái)設(shè)置靜態(tài)控件的文本和背景顏色
  WM_MOUSEFIRST = $0200;
  WM_MOUSEMOVE = $0200;
  // 移動(dòng)鼠標(biāo)
  WM_LBUTTONDOWN = $0201;
  //按下鼠標(biāo)左鍵
  WM_LBUTTONUP = $0202;
  //釋放鼠標(biāo)左鍵
  WM_LBUTTONDBLCLK = $0203;
  //雙擊鼠標(biāo)左鍵
  WM_RBUTTONDOWN = $0204;
  //按下鼠標(biāo)右鍵
  WM_RBUTTONUP = $0205;
  //釋放鼠標(biāo)右鍵
  WM_RBUTTONDBLCLK = $0206;
  //雙擊鼠標(biāo)右鍵
  WM_MBUTTONDOWN = $0207;
  //按下鼠標(biāo)中鍵
  WM_MBUTTONUP = $0208;
  //釋放鼠標(biāo)中鍵
  WM_MBUTTONDBLCLK = $0209;
  //雙擊鼠標(biāo)中鍵
  WM_MOUSEWHEEL = $020A;
  當(dāng)鼠標(biāo)輪子轉(zhuǎn)動(dòng)時(shí)發(fā)送此消息個(gè)當(dāng)前有焦點(diǎn)的控件
  WM_MOUSELAST = $020A;
  WM_PARENTNOTIFY = $0210;
  當(dāng)MDI子窗口被創(chuàng)建或被銷毀,或用戶按了一下鼠標(biāo)鍵而光標(biāo)在子窗口上時(shí)發(fā)送此消息給它的父窗口
  WM_ENTERMENULOOP = $0211;
  發(fā)送此消息通知應(yīng)用程序的主窗口that已經(jīng)進(jìn)入了菜單循環(huán)模式
  WM_EXITMENULOOP = $0212;
  發(fā)送此消息通知應(yīng)用程序的主窗口that已退出了菜單循環(huán)模式
  WM_NEXTMENU = $0213;
  WM_SIZING = 532;
  當(dāng)用戶正在調(diào)整窗口大小時(shí)發(fā)送此消息給窗口;通過(guò)此消息應(yīng)用程序可以監(jiān)視窗口大小和位置也可以修改他們
  WM_CAPTURECHANGED = 533;
  發(fā)送此消息 給窗口當(dāng)它失去捕獲的鼠標(biāo)時(shí);
  WM_MOVING = 534;
  當(dāng)用戶在移動(dòng)窗口時(shí)發(fā)送此消息,通過(guò)此消息應(yīng)用程序可以監(jiān)視窗口大小和位置也可以修改他們;
  WM_POWERBROADCAST = 536;
  此消息發(fā)送給應(yīng)用程序來(lái)通知它有關(guān)電源管理事件;
  WM_DEVICECHANGE = 537;
  當(dāng)設(shè)備的硬件配置改變時(shí)發(fā)送此消息給應(yīng)用程序或設(shè)備驅(qū)動(dòng)程序
  WM_IME_STARTCOMPOSITION = $010D;
  WM_IME_ENDCOMPOSITION = $010E;
  WM_IME_COMPOSITION = $010F;
  WM_IME_KEYLAST = $010F;
  WM_IME_SETCONTEXT = $0281;
  WM_IME_NOTIFY = $0282;
  WM_IME_CONTROL = $0283;
  WM_IME_COMPOSITIONFULL = $0284;
  WM_IME_SELECT = $0285;
  WM_IME_CHAR = $0286;
  WM_IME_REQUEST = $0288;
  WM_IME_KEYDOWN = $0290;
  WM_IME_KEYUP = $0291;
  WM_MDICREATE = $0220;
  應(yīng)用程序發(fā)送此消息給多文檔的客戶窗口來(lái)創(chuàng)建一個(gè)MDI 子窗口
  WM_MDIDESTROY = $0221;
  應(yīng)用程序發(fā)送此消息給多文檔的客戶窗口來(lái)關(guān)閉一個(gè)MDI 子窗口
  WM_MDIACTIVATE = $0222;
  應(yīng)用程序發(fā)送此消息給多文檔的客戶窗口通知客戶窗口激活另一個(gè)MDI子窗口,當(dāng)客戶窗口收到此消息后,它發(fā)出WM_MDIACTIVE消息給MDI子窗口(未激活)激活它;
  WM_MDIRESTORE = $0223;
  程序 發(fā)送此消息給MDI客戶窗口讓子窗口從最大最小化恢復(fù)到原來(lái)大小
  WM_MDINEXT = $0224;
  程序 發(fā)送此消息給MDI客戶窗口激活下一個(gè)或前一個(gè)窗口
  WM_MDIMAXIMIZE = $0225;
  程序發(fā)送此消息給MDI客戶窗口來(lái)最大化一個(gè)MDI子窗口;
  WM_MDITILE = $0226;
  程序 發(fā)送此消息給MDI客戶窗口以平鋪方式重新排列所有MDI子窗口
  WM_MDICASCADE = $0227;
  程序 發(fā)送此消息給MDI客戶窗口以層疊方式重新排列所有MDI子窗口
  WM_MDIICONARRANGE = $0228;
  程序 發(fā)送此消息給MDI客戶窗口重新排列所有最小化的MDI子窗口
  WM_MDIGETACTIVE = $0229;
  程序 發(fā)送此消息給MDI客戶窗口來(lái)找到激活的子窗口的句柄
  WM_MDISETMENU = $0230;
  程序 發(fā)送此消息給MDI客戶窗口用MDI菜單代替子窗口的菜單
  WM_ENTERSIZEMOVE = $0231;
  WM_EXITSIZEMOVE = $0232;
  WM_DROPFILES = $0233;
  WM_MDIREFRESHMENU = $0234;
  WM_MOUSEHOVER = $02A1;
  WM_MOUSELEAVE = $02A3;
  WM_CUT = $0300;
  程序發(fā)送此消息給一個(gè)編輯框或combobox來(lái)刪除當(dāng)前選擇的文本
  WM_COPY = $0301;
  程序發(fā)送此消息給一個(gè)編輯框或combobox來(lái)復(fù)制當(dāng)前選擇的文本到剪貼板
  WM_PASTE = $0302;
  程序發(fā)送此消息給editcontrol或combobox從剪貼板中得到數(shù)據(jù)
  WM_CLEAR = $0303;
  程序發(fā)送此消息給editcontrol或combobox清除當(dāng)前選擇的內(nèi)容;
  WM_UNDO = $0304;
  程序發(fā)送此消息給editcontrol或combobox撤消最后一次操作
  WM_RENDERFORMAT = $0305;
  WM_RENDERALLFORMATS = $0306;
  WM_DESTROYCLIPBOARD = $0307;
  當(dāng)調(diào)用ENPTYCLIPBOARD函數(shù)時(shí) 發(fā)送此消息給剪貼板的所有者
  WM_DRAWCLIPBOARD = $0308;
  當(dāng)剪貼板的內(nèi)容變化時(shí)發(fā)送此消息給剪貼板觀察鏈的第一個(gè)窗口;它允許用剪貼板觀察窗口來(lái)
  顯示剪貼板的新內(nèi)容;
  WM_PAINTCLIPBOARD = $0309;
  當(dāng)剪貼板包含CF_OWNERDIPLAY格式的數(shù)據(jù)并且剪貼板觀察窗口的客戶區(qū)需要重畫;
  WM_VSCROLLCLIPBOARD = $030A;
  WM_SIZECLIPBOARD = $030B;
  當(dāng)剪貼板包含CF_OWNERDIPLAY格式的數(shù)據(jù)并且剪貼板觀察窗口的客戶區(qū)域的大小已經(jīng)改變是此消息通過(guò)剪貼板觀察窗口發(fā)送給剪貼板的所有者;
  WM_ASKCBFORMATNAME = $030C;
  通過(guò)剪貼板觀察窗口發(fā)送此消息給剪貼板的所有者來(lái)請(qǐng)求一個(gè)CF_OWNERDISPLAY格式的剪貼板的名字
  WM_CHANGECBCHAIN = $030D;
  當(dāng)一個(gè)窗口從剪貼板觀察鏈中移去時(shí)發(fā)送此消息給剪貼板觀察鏈的第一個(gè)窗口;
  WM_HSCROLLCLIPBOARD = $030E;
  此消息通過(guò)一個(gè)剪貼板觀察窗口發(fā)送給剪貼板的所有者 ;它發(fā)生在當(dāng)剪貼板包含CFOWNERDISPALY格式的數(shù)據(jù)并且有個(gè)事件在剪貼板觀察窗的水平滾動(dòng)條上;所有者應(yīng)滾動(dòng)剪貼板圖象并更新滾動(dòng)條的值;
  WM_QUERYNEWPALETTE = $030F;
  此消息發(fā)送給將要收到焦點(diǎn)的窗口,此消息能使窗口在收到焦點(diǎn)時(shí)同時(shí)有機(jī)會(huì)實(shí)現(xiàn)他的邏輯調(diào)色板
  WM_PALETTEISCHANGING= $0310;
  當(dāng)一個(gè)應(yīng)用程序正要實(shí)現(xiàn)它的邏輯調(diào)色板時(shí)發(fā)此消息通知所有的應(yīng)用程序
  WM_PALETTECHANGED = $0311;
  此消息在一個(gè)擁有焦點(diǎn)的窗口實(shí)現(xiàn)它的邏輯調(diào)色板后發(fā)送此消息給所有頂級(jí)并重疊的窗口,以此來(lái)改變系統(tǒng)調(diào)色板
  WM_HOTKEY = $0312;
  當(dāng)用戶按下由REGISTERHOTKEY函數(shù)注冊(cè)的熱鍵時(shí)提交此消息
  WM_PRINT = 791;
  應(yīng)用程序發(fā)送此消息僅當(dāng)WINDOWS或其它應(yīng)用程序發(fā)出一個(gè)請(qǐng)求要求繪制一個(gè)應(yīng)用程序的一部分;
  WM_PRINTCLIENT = 792;
  WM_HANDHELDFIRST = 856;
  WM_HANDHELDLAST = 863;
  WM_PENWINFIRST = $0380;
  WM_PENWINLAST = $038F;
  WM_COALESCE_FIRST = $0390;
  WM_COALESCE_LAST = $039F;
  WM_DDE_FIRST = $03E0;
  WM_DDE_INITIATE = WM_DDE_FIRST + 0;
  一個(gè)DDE客戶程序提交此消息開(kāi)始一個(gè)與服務(wù)器程序的會(huì)話來(lái)響應(yīng)那個(gè)指定的程序和主題名;
  WM_DDE_TERMINATE = WM_DDE_FIRST + 1;
  一個(gè)DDE應(yīng)用程序(無(wú)論是客戶還是服務(wù)器)提交此消息來(lái)終止一個(gè)會(huì)話;
  WM_DDE_ADVISE = WM_DDE_FIRST + 2;
  一個(gè)DDE客戶程序提交此消息給一個(gè)DDE服務(wù)程序來(lái)請(qǐng)求服務(wù)器每當(dāng)數(shù)據(jù)項(xiàng)改變時(shí)更新它
  WM_DDE_UNADVISE = WM_DDE_FIRST + 3;
  一個(gè)DDE客戶程序通過(guò)此消息通知一個(gè)DDE服務(wù)程序不更新指定的項(xiàng)或一個(gè)特殊的剪貼板格式的項(xiàng)
  WM_DDE_ACK = WM_DDE_FIRST + 4;
  此消息通知一個(gè)DDE(動(dòng)態(tài)數(shù)據(jù)交換)程序已收到并正在處理WM_DDE_POKE, WM_DDE_EXECUTE, WM_DDE_DATA, WM_DDE_ADVISE, WM_DDE_UNADVISE, or WM_DDE_INITIAT消息
  WM_DDE_DATA = WM_DDE_FIRST + 5;
  一個(gè)DDE服務(wù)程序提交此消息給DDE客戶程序來(lái)傳遞個(gè)一數(shù)據(jù)項(xiàng)給客戶或通知客戶的一條可用數(shù)據(jù)項(xiàng)
  WM_DDE_REQUEST = WM_DDE_FIRST + 6;
  一個(gè)DDE客戶程序提交此消息給一個(gè)DDE服務(wù)程序來(lái)請(qǐng)求一個(gè)數(shù)據(jù)項(xiàng)的值;
  WM_DDE_POKE = WM_DDE_FIRST + 7;
  一個(gè)DDE客戶程序提交此消息給一個(gè)DDE服務(wù)程序,客戶使用此消息來(lái)請(qǐng)求服務(wù)器接收一個(gè)未經(jīng)同意的數(shù)據(jù)項(xiàng);服務(wù)器通過(guò)答復(fù)WM_DDE_ACK消息提示是否它接收這個(gè)數(shù)據(jù)項(xiàng);
  WM_DDE_EXECUTE = WM_DDE_FIRST + 8;
  一個(gè)DDE客戶程序提交此消息給一個(gè)DDE服務(wù)程序來(lái)發(fā)送一個(gè)字符串給服務(wù)器讓它象串行命令一樣被處理,服務(wù)器通過(guò)提交WM_DDE_ACK消息來(lái)作回應(yīng);
  WM_DDE_LAST = WM_DDE_FIRST + 8;
  WM_APP = $8000;
  WM_USER = $0400;
  此消息能幫助應(yīng)用程序自定義私有消息;
  /
  通知消息(Notification message)是指這樣一種消息,一個(gè)窗口內(nèi)的子控件發(fā)生了一些事情,需要通知父窗口。通知消息只適用于標(biāo)準(zhǔn)的窗口控件如按鈕、列表框、組合框、編輯框,以及Windows 95公共控件如樹(shù)狀視圖、列表視圖等。例如,單擊或雙擊一個(gè)控件、在控件中選擇部分文本、操作控件的滾動(dòng)條都會(huì)產(chǎn)生通知消息。
  按扭
  B N _ C L I C K E D //用戶單擊了按鈕
  B N _ D I S A B L E //按鈕被禁止
  B N _ D O U B L E C L I C K E D //用戶雙擊了按鈕
  B N _ H I L I T E //用戶加亮了按鈕
  B N _ PA I N T按鈕應(yīng)當(dāng)重畫
  B N _ U N H I L I T E加亮應(yīng)當(dāng)去掉
  組合框
  C B N _ C L O S E U P組合框的列表框被關(guān)閉
  C B N _ D B L C L K用戶雙擊了一個(gè)字符串
  C B N _ D R O P D O W N組合框的列表框被拉出
  C B N _ E D I T C H A N G E用戶修改了編輯框中的文本
  C B N _ E D I T U P D AT E編輯框內(nèi)的文本即將更新
  C B N _ E R R S PA C E組合框內(nèi)存不足
  C B N _ K I L L F O C U S組合框失去輸入焦點(diǎn)
  C B N _ S E L C H A N G E在組合框中選擇了一項(xiàng)
  C B N _ S E L E N D C A N C E L用戶的選擇應(yīng)當(dāng)被取消
  C B N _ S E L E N D O K用戶的選擇是合法的
  C B N _ S E T F O C U S組合框獲得輸入焦點(diǎn)
  編輯框
  E N _ C H A N G E編輯框中的文本己更新
  E N _ E R R S PA C E編輯框內(nèi)存不足
  E N _ H S C R O L L用戶點(diǎn)擊了水平滾動(dòng)條
  E N _ K I L L F O C U S編輯框正在失去輸入焦點(diǎn)
  E N _ M A X T E X T插入的內(nèi)容被截?cái)?
  E N _ S E T F O C U S編輯框獲得輸入焦點(diǎn)
  E N _ U P D AT E編輯框中的文本將要更新
  E N _ V S C R O L L用戶點(diǎn)擊了垂直滾動(dòng)條消息含義
  列表框
  L B N _ D B L C L K用戶雙擊了一項(xiàng)
  L B N _ E R R S PA C E列表框內(nèi)存不夠
  L B N _ K I L L F O C U S列表框正在失去輸入焦點(diǎn)
  L B N _ S E L C A N C E L選擇被取消
  L B N _ S E L C H A N G E選擇了另一項(xiàng)
  L B N _ S E T F O C U S列表框獲得輸入焦點(diǎn)

轉(zhuǎn)載于:https://www.cnblogs.com/okwary/archive/2008/12/26/1363077.html

總結(jié)

以上是生活随笔為你收集整理的DELPHI 中 Window 消息大全使用详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。