[delphi] windows消息

本文介绍了Windows消息的结构,包括TMsg记录的各字段,以及WM_KEYDOWN、WM_KEYUP、WM_KEYPRESS等消息的区别。详细阐述了Windows消息从产生到处理的流程,特别提到了Delphi中如何映射和方便地处理这些消息。还讨论了消息循环、子类化窗口过程的概念,并提供了使用SetWindowLong进行子类化的示例。
摘要由CSDN通过智能技术生成

windows消息的结构

  TMsg = packed record

    hwnd: HWND;//窗口句柄

    message: UINT;//消息标识

    wParam: WPARAM;//

    lParam: LPARAM;//

    time: DWORD;//消息创建的时间

    pt: TPoint;//消息创建时鼠标所在位置

  end;


WM_KEYDOWN,WM_KEYUP, WM_KEYPRESS: KEYPress消息不同之处在于只有对应有ascii码的按键才会产生这个消息


windows消息流程

1.系统中产生事件

2.windows把这个事件翻译成消息,并放入消息队列

3.应用程序从消息队列中接收到这个消息,把它放到TMsg记录中

4.应用程序把消息传递给一个适当的窗口的窗口过程

5.窗口过程响应这个消息并处理

步骤3,4就构成了应用程序的消息循环。


delphi把windows的TMsg记录中的信息映射为TMessage记录:

TMessage = record
  Msg: Cardinal;
  case Integer of
   0:( WParam: LongInt;
       LParam: LongInt;
       Result: LongInt);
   1:( WParamLo: Word;
       WParamHi: Word;
       LParamLo: 
Creating Windows CreateMDIWindow CreateWindow CreateWindowEx RegisterClass RegisterClassEx UnregisterClass Message Processing BroadcastSystemMessage CallNextHookEx CallWindowProc DefFrameProc DefMDIChildProc DefWindowProc DispatchMessage GetMessage GetMessageExtraInfo GetMessagePos GetMessageTime GetQueueStatus InSendMessage PeekMessage PostMessage PostQuitMessage PostThreadMessage RegisterWindowMessage ReplyMessage SendMessage SendMessageCallback SendMessageTimeout SendNotifyMessage SetMessageExtraInfo SetWindowsHookEx TranslateMessage UnhookWindowsHookEx WaitMessage Window Information AnyPopup ChildWindowFromPoint ChildWindowFromPointEx EnableWindow EnumChildWindows EnumPropsEx EnumThreadWindows EnumWindows FindWindow FindWindowEx GetClassInfoEx GetClassLong GetClassName GetClientRect GetDesktopWindow GetFocus GetForegroundWindow GetNextWindow GetParent GetProp GetTopWindow GetWindow GetWindowLong GetWindowRect GetWindowText GetWindowTextLength IsChild IsIconic IsWindow IsWindowEnabled IsWindowUnicode IsWindowVisible IsZoomed RemoveProp SetActiveWindow SetClassLong SetFocus SetForegroundWindow SetParent SetProp SetWindowLong SetWindowText WindowFromPoint Processes and Threads CreateEvent CreateMutex CreateProcess CreateSemaphore CreateThread DeleteCriticalSection DuplicateHandle EnterCriticalSection ExitProcess ExitThread GetCurrentProcess GetCurrentProcessId GetCurrentThread GetCurrentThreadId GetExitCodeProcess GetExitCodeThread GetPriorityClass GetThreadPriority GetWindowThreadProcessId InitializeCriticalSection InterlockedDecrement InterlockedExchange InterlockedIncrement LeaveCriticalSection OpenEvent OpenMutex OpenProcess OpenSemaphore PulseEvent ReleaseMutex ReleaseSemaphore ResetEvent ResumeThread SetEvent SetPr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值