WINAPI中的消息部署函数应该设置啥样的参数

Posted

技术标签:

【中文标题】WINAPI中的消息部署函数应该设置啥样的参数【英文标题】:What kind of parameters should I set to a message deploy function in WINAPIWINAPI中的消息部署函数应该设置什么样的参数 【发布时间】:2014-03-12 15:11:06 【问题描述】:

我正在学习 WINAPI。当我想编程获取消息然后做一些特定的操作时。我收到了来自 VC6.0 的错误。

例如,我想得到 wm_keydown 消息。

这样的代码:

// .h file
int MainDlg_OnKeyDown(HWND hwnd,WPARAM wParam, LPARAM lParam);

|

HANDLE_MSG(hWnd, WM_KEYDOWN, MainDlg_OnKeyDown);

int MainDlg_OnKeyDown(HWND hwnd, int id,  WPARAM wParam, LPARAM lParam)

    return 1;

错误:

error C2660: 'MainDlg_OnKeyDown' : function does not take 5 parameters

HANDLE_MSG 宏中似乎只有 4 个参数。我知道当我使用 WM_COMMAND 时,我可以创建一个带有 4 个参数的函数。

void MainDlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);

但是 WM_NOTIFY、WM_KEYDOWN 或其他消息呢? 我怎么知道在创建消息部署函数到消息时应该设置多少个参数以及设置什么样的参数。我没有在 MSDN 和 google 上找到我的答案。有人知道吗? MFC 是做什么的?

【问题讨论】:

你看windowsx.h头文件吗? 谢谢。我找到了这个。/* void Cls_OnKey(HWND hwnd, UINT vk, BOOL fDown, int cRepeat, UINT flags) */ #define HANDLE_WM_KEYDOWN(hwnd, wParam, lParam, fn) \ ((fn)((hwnd), (UINT)(wParam), TRUE, (int)(short)LOWORD(lParam), (UINT)HIWORD(lParam)), 0L) #define FORWARD_WM_KEYDOWN(hwnd, vk, cRepeat, flags, fn) \ (void)(fn)((hwnd), WM_KEYDOWN, (WPARAM)(UINT)(vk), MAKELPARAM((cRepeat), (flags)))。但是我没有找到关于 WM_NOTIFY 的信息。 @Xearinox 如果我没记错的话,HANDLE_WM_NOTIFY 在 commctrl.h 中。 谢谢。您可以编辑您的评论作为答案。对新手很有帮助。 【参考方案1】:

HANDLE_MSG 宏定义在 Windowsx.h 头文件中。

注意:要对 WM_NOTIFY 使用消息破解程序,您必须使用 commctrl.h 头文件中定义的 HANDLE_WM_NOTIFY 宏。

【讨论】:

以上是关于WINAPI中的消息部署函数应该设置啥样的参数的主要内容,如果未能解决你的问题,请参考以下文章

我的 json 应该是啥样的?使用 Web 套接字发送消息

AES 应该使用啥样的填充?

请问:VB 里面的MessageBox要怎么用,整个函数是啥样的?

STL设置了啥样的树实现?

GraphQL 文件上传请求应该是啥样的?

API Gateway 中 AWS Firehose PutRecordBatch 的映射模板应该是啥样的?