MFC自定义消息的方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC自定义消息的方法?相关的知识,希望对你有一定的参考价值。

我知道基于对话框的自定义消息的流程,但是不知道自定义消息是干什么用的……
我可不可以通过自定义的消息,而不是WM_CHAR消息,来响应键盘上的“K”按键,从而在用户点击“K”这个按键的时候,弹出一个对话框?
我的初衷是收集外部的一个按钮信号(这个按钮信号是用板卡采集的),即当用户按下这个按钮的时候,弹出一个对话框。这种情况下,我可不可以用自定义消息来响应这个按钮,从而弹出一个对话框呢?

参考技术A 建议你仔细看看关于消息机制的书,这是windows编程非常重要的一个概念,基本上每一本win编程书籍上都要花费1~2大章去讲解。
所谓自定义消息,是相对系统消息来说的,你将的键盘消息这些,从硬件和操作系统来的,都是系统消息,不能自定义。
在MFC中,
对于系统消息,你需要做的就是设置响应函数,并在函数中实现对该消息发生后要处理的事情。
对于自定义消息,首先你需要的是一个“消息发送者”,而不是接收处理,从哪里发送消息,比如来自菜单、按键等等。
板卡的按键,你首先需要的是接收信号,比如在一个线程中,然后自定义一个消息号,当接收按键信号后,想你的主窗口或者指定窗口发送这个消息。在窗口类中,自定义消息处理函数,并在消息处理函数中弹出对话框即可。追问

这是消息号是关键,但是我不会,我就是不知道什么时候定义这个消息号,或者在哪里定义这个消息号,比如“OnInitDialog()”函数,或者定时器函数“OnTimer”,还是自定义的按钮函数“OnBnClickedButton1”?
还有,你说的消息号是不是一个Flag标志,当有这个消息号的时候,才发送命令,没有的话不发送,也就是是一个BOOL型的变量?
望大侠指教!!!

追答

消息号,是一个#define语句定义的整数而已。要求是和系统消息号不冲突,定义在两边都支持的.h头文件中即可。
函数名字随意,关联即可。
消息响应窗口要由自己指定。

定时器的消息号是WM_TIMER,OnTimer是消息响应函数,在指定窗口中产生关联。
建议你找一本书看看吧,这东西几大章的讲解,这里哪能说那么细。

本回答被提问者和网友采纳

MFC自定义消息使用

消息对于windows程序来说,是一个非常重要的内容,也有非常多的消息,如果WM_CREATE、WM_LBUTTONDOWN等等。

实际开发时,除了系统定义的这些消息之外,也会使用到自定义消息,因此,记一小章使用方法。

它的声明如下 :

typedef struct tagMSG {
  HWND hwnd;
  UINT message;
  WPARAM wParam;
  LPARAM lParam;
  DWORD time;
  POINT pt;
#ifdef _MAC
  DWORD lPrivate;
#endif
} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;

 

 

1、在公共头文件中添加自定义消息 

const UINT WM_TESTMESSAGE = WM_USER + 0x100;

2、在类的头文件中,添加函数声明,和普通函数类似,只是消息函数有固定的格式

afx_msg LRESULT OnTestMessage(WPARAM wParam, LPARAM lParam);

3、在类的实现文件中,添加消息映射,以告知程序当接收到WM_TESTMESSAGE消息时,应该交由哪个函数处理

BEGIN_MESSAGE_MAP(CReceiveDlg, CDialogEx)
  ON_MESSAGE(WM_TESTMESSAGE, OnTestMessage)
END_MESSAGE_MAP()

4、编写消息对应的函数具体实现

LRESULT CReceiveDlg::OnTestMessage(WPARAM wParam, LPARAM lParam)
{

}

5、使用PostMessage或者SendMessage发送自定义消息

::PostMessage(m_pRecvDlg->GetSafeHwnd(),WM_TESTMESSAGE, (WPARAM)pInfo, 0);

 

 如下图,发送消息 窗口输入一个芯片编号,然后通过PostMessage传递给接收窗口显示。

技术分享图片

 

测试项目链接链接: https://pan.baidu.com/s/1l2WoEXC2amxuf6v9YoaKTg 提取码: vy3u 















以上是关于MFC自定义消息的方法?的主要内容,如果未能解决你的问题,请参考以下文章

MFC中用户自定义类响应自定义消息

MFC自定义消息使用

MFC 自定义消息(非系统消息)

MFC的自定义消息的定义与使用

MFC中关于自定义消息

MFC 自定义消息函数