vc SendMessage怎样自定义发送消息

编程小小鸟 2015-08-20 10:41:25
在头文件里
#define WM_MYMSG WM_USER+5 //自定义一个消息


afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam); //自定义消息的处理函数声明



在.cpp文件里
ON_MESSAGE(WM_MYMSG, OnMyMessage)
//利用ON_MESSAGE()宏在自定义消息与其处理函数间建立映射关系

void CModelessDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
//从lParam中取出CString对象的指针,并将字符串内容在IDC_MSGEDIT中显示出来
{

CString *str;
str=(CString *)lParam;

SetDlgItemText(IDC_EDIT,*str);
}


按下按钮发送消息
void CModelessDlg::OnMsgBTN()
{

CString str= "自定义消息被触发了!";

SendMessage(WM_MYMSG, 0, (LPARAM) &str);
//给ModelessDlg自己发一个自定义的消息

}
///////////////////////////////////////////////////////////////////

BEGIN_MESSAGE_MAP(CzidingyiDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, &CzidingyiDlg::OnBnClickedButton1)
ON_MESSAGE(WM_MYMSG, OnMyMessage)///////添加在这里,但编译出错,是vs2012,
END_MESSAGE_MAP()

/////////到底哪里错了,帮我啊
...全文
241 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dustpg 2015-08-21
  • 打赏
  • 举报
回复
引用 1 楼 dustpg 的回复:
没用过MFC, 不过既然是MFC, "OnMyMessage"应该是类函数才对啊。 还有, 宏定义很蛋疼, 拒绝使用 “#define WM_MYMSG WM_USER+5 //自定义一个消息” 稍微好点的 #define WM_MYMSG WM_USER+5 再好点的 #define WM_MYMSG (WM_USER+5) 更好点的 static constexpr WM_MYMSG = (WM_USER+5);
忘记加类型了, static constexpr UINT WM_MYMSG = (WM_USER+5);
dustpg 2015-08-21
  • 打赏
  • 举报
回复
没用过MFC, 不过既然是MFC, "OnMyMessage"应该是类函数才对啊。 还有, 宏定义很蛋疼, 拒绝使用 “#define WM_MYMSG WM_USER+5 //自定义一个消息” 稍微好点的 #define WM_MYMSG WM_USER+5 再好点的 #define WM_MYMSG (WM_USER+5) 更好点的 static constexpr WM_MYMSG = (WM_USER+5);
木黑神 2015-08-21
  • 打赏
  • 举报
回复
WIN 32 的
SendMessage(hedit1, WM_SETFONT,(WPARAM)CreateFontIndirect(&lf),(LPARAM)TRUE);
阿源是少年 2015-08-21
  • 打赏
  • 举报
回复
函数原型不对,改成 afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
zgl7903 2015-08-21
  • 打赏
  • 举报
回复
CModelessDlg::OnMsgBTN() { SendMessage(WM_MYMSG, 0, (LPARAM) &str); } BEGIN_MESSAGE_MAP(CzidingyiDlg, …… 发送消息和响应消息的不是一个窗体时应该指定目标窗体
编程小小鸟 2015-08-21
  • 打赏
  • 举报
回复
引用 3 楼 xiaohuh421 的回复:
ON_BN_CLICKED(IDC_BUTTON1, &CzidingyiDlg::OnBnClickedButton1) ------------->看到这个函数没有, 参照它来写 ON_MESSAGE(WM_MYMSG, OnMyMessage)///////添加在这里,但编译出错,是vs2012, 也就是前面要加 &CzidingyiDlg:: 这坨东西
问题解决啦,VS2008起要求返回类型不能为void,必须为LRESULT类型。把消息处理函数返回类型改为LRESULT即可,最后要返回return 0; VC6.0可以为void 也非常感谢你们的帮助
xiaohuh421 2015-08-21
  • 打赏
  • 举报
回复
ON_BN_CLICKED(IDC_BUTTON1, &CzidingyiDlg::OnBnClickedButton1) ------------->看到这个函数没有, 参照它来写 ON_MESSAGE(WM_MYMSG, OnMyMessage)///////添加在这里,但编译出错,是vs2012, 也就是前面要加 &CzidingyiDlg:: 这坨东西
微信公众平台企业号开发Java版系列课程,采用java语言细致、详尽、全面地讲解微信企业号开发的相关知识点。该套课程,在微信公众平台深度开发Java版v2.0的基础上,对企业号开发的“回调模式”、“主动调用模式”、“JSAPI模式”分类讲解。贯彻“简单、高效、快捷”的课程特色,采用“一课两知识点”的课程进度,保证课程质量的同时,尽可能的压缩课程时间,让学员“以短的时间,学到多的知识”。课程的知识点包括:建立连接;接收消息与响应消息;被动响应消息;接收事件(菜单事件、关注/取消关注事件、坐标事件、异步任务完成事件);发送消息消息推送);自定义菜单;OAuth验证;Userid与openid互换;微信JS-SDK接口(重点);企业会话服务(重点);基础样式库(重点);企业号登录授权(重点),等知识点。以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 详情 qq2326321088

16,372

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧