最紧碰到一个问题,就是在VC中自定义一个消息,并且利用该消息弹出一个对话框,之前在VC中都是通过系统自动生成的消息,还真没有自定义过,到网上查了些资料后,解决了这个问题,现在记载一下,分享一下,共同提高。
主要是使用了一个叫SendMessage的函数。
HWND hWnd, //消息传递的目标窗口或线程的句柄。
UINT Msg, //消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,)
WPARAM wParam, //参数1 (WPARAM 其实是与UINT是同种类型的,
//在vc编译器中右键有个“转到WPARAM的定义”的选项可以查看。
LPARAM lParam); //参数2
//typedef unsigned int UINT;
//typedef UINT WPARAM;
//typedef LONG LPARAM;
//typedef LONG LRESULT;
程序设置步骤如下:
类型用 LRESULT,完了要return 0;
在VC中自定义一个消息,并利用该消息弹出一个对话框
最新推荐文章于 2023-03-03 19:34:48 发布
本文介绍如何在VC中自定义消息并使用SendMessage函数触发。通过定义消息、消息处理函数及映射关系,实现了一个简单的消息弹窗示例。
Vc中怎么使用SendMessage自定义消息函数:
SendMessage的基本结构如下:SendMessage(
其中一些参数的由来如下:
1、在View.h件中,DECLARE_MESSAGE_MAP() 语句前加入如下语句
#define WM_MY_TEST WM_USER+1 //自定义一个消息
afx_msg LRESULT OnDebug(WPARAM wParam, LPARAM lParam); //自定义消息的处理函数声明
2、在View.cpp文件中加入如下语句:
在BEGIN_MESSAGE_MAP(CDemoMessageView, CView) 与END_MESSAGE_MAP() 之间加入:
ON_MESSAGE(WM_MY_TEST, OnDebug) //利用ON_MESSAGE()宏在自定义消息与其处理函数间建立映射关系
3、响应函数的实现
LRESULT CDemoMessageView::OnDebug(WPARAM wParam, LPARAM lParam)
{
MessageBox(_T("收到消息了"),_T("测试"),MB_OK);
//可以运用iParam1,iParam2 来做一些事情。
return 0;
}
注意:参数有2个,WPARAM wParam,LPARAM lParam,WPARAM是16位的(WORD),LPARAM是32位的(LONG),哪怕没有东西传进来也要写,可能会有一些莫名奇妙的事情会发生。
4、再添加菜单来发送我们自定义的消息
void CDemoMessageView::OnTest()
{
// TODO: 在此添加命令处理程序代码
::SendMessage(this->m_hWnd, WM_MY_DOSOME,(WPARAM)0,(LPARAM)0);
}
这样就是一个完整的消息发送与接受过程,没有使用参数,wParam,iParam,当然可以使用它们去处理更复杂的消息。
1087

被折叠的 条评论
为什么被折叠?



