关于HANDLE_##MESSAGE , chHANDLE_DLGMSG宏的理解!!!!

本文介绍了在Windows核心编程中遇到的HANDLE_##MESSAGE和chHANDLE_DLGMSG宏的使用。这两个宏在对话框消息处理中起到关键作用,将消息与对应的处理函数关联起来。当message参数如WM_INITDIALOG时,宏会将其转换为特定形式的处理函数调用。这些定义通常可在<Windowsx.h>头文件中找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 今天看了windows核心编程。里面用到了HANDLE_##MESSAGE这个宏,特意查看了下,原来如下:

 

#define chHANDLE_DLGMSG(hWnd, message, fn)                 /
   case (message): return (SetDlgMsgResult(hWnd, uMsg,     /
      HANDLE_##message((hWnd), (wParam), (lParam), (fn))))

 

 对于HANDLE_##message  中##,实际上编译器对这个符号的处理喊简单,就是讲两个字符串进行连接。

比如当messge = WM_INITDIALOG的时候,他就变成了如下形式:

#define HANDLE_WM_INITDIALOG(hwnd, wParam, lParam, fn) /
    (LRESULT)(DWORD)(UINT)(BOOL)(fn)((hwnd), (HWND)(wParam), lParam)

而想上面这些宏都是在windowsx.h中已经定义好了的!!!!

 而

 

SetDlgMsgResult( 
  HWND hwnd, 
  int msg, 
  LONG result 
);
Parameters
hwnd
Handle to the dialog box.
msg
Specifies the zero-based offset to the value to be set. Valid values are in the range zero through the number of bytes of extra window memory, minus four.
result
Specifies the replacement value.

这个函数的作用就是讲对话框上的消息交给哪个消息处理函数来处理!

无非就是调用自己定义的消息处理函数!!

很容易理解!

 

 所在目录:(自己机器上)

f:/vs2005/vc/platformsdk/include/windowsx.h

 

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值