
MFC 自定义消息发送字符串
发布日期:2021-05-15 00:17:00
浏览次数:9
分类:精选文章
本文共 1261 字,大约阅读时间需要 4 分钟。
消息定义
在Windows应用程序中,消息的传递是核心的操作之一。消息可以用不同的方式定义,以便于在代码中使用。以下是两种常用的方式:
第一种方式是使用#define
预定义符:
#define WM_NET_CMD_STRING (WM_USER + 100)
这种方式简单且直接,适用于需要轻量级定义的场景。
第二种方式是使用枚举(enum):
enum WM_NET_CMD_ID { WM_NET_CMD_STRING = WM_USER + 100, WM_NET_CMD_INT, WM_NET_CMD_FLOAT, WM_NET_CMD_REBOOT, WM_NET_CMD_SHUTDOWN,};
枚举方式提供了更强大的类型安全性,有助于避免命名冲突,并且在代码中更加直观。
发送消息
在发送消息时,我们可以使用postMessage
函数或sendMessage
函数。postMessage
函数会将消息放置在队列中,立即返回,而sendMessage
函数则会送达目标窗口并立即返回。以下是发送字符串的示例代码:
char *pBuf = new char[1024];memset(pBuf, 0, 1024);memcpy(pBuf, data, len);if (!AfxGetApp()->m_pMainWnd->PostMessage(WM_NET_CMD_STRING, (WPARAM)pBuf, 0)){ delete[] pBuf;}
对于需要发送结构体的消息,方法类似,不过需要将结构体数据复制到目标窗口中。
消息传递
消息传递是应用程序的核心机制之一。在窗口类中,我们可以使用消息映射(message map)来处理特定的消息。以下是一个示例:
BEGIN_MESSAGE_MAP(CTcpAsyncClientDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_MESSAGE(WM_NET_CMD_STRING, &CTcpAsyncClientDlg::OnNetCmdString)END_MESSAGE_MAP()
函数实现
当目标窗口接收到特定消息时,我们可以编写回调函数来处理它。以下是处理WM_NET_CMD_STRING
消息的示例代码:
LRESULT CTcpAsyncClientDlg::OnNetCmdString(WPARAM wParam, LPARAM lParam){ char *pBuf = (char *)wParam; CString str = pBuf; m_pTcpAsyncClientDlg->m_listNetInfo.AddString(str); delete[] pBuf; return 0;}
在这段代码中,我们首先将wParam
转换为字符数组,然后将其复制到富文本控件中,并释放内存。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月06日 01时38分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
个人购买服务器问题?
2019-03-11
pwntools编写技巧
2019-03-11
How2Heap笔记(三)
2019-03-11
go--microSocket服务端 php客户端
2019-03-11
小程序提交新数据后如何返回上一页并刷新数据?
2019-03-11
qt c++实现的ai贪吃蛇吃满屏幕,超详细!(二)ai的具体实现
2019-03-11
linux 查看log日志相关命令
2019-03-11
IDEA 2019 安装 mybatis-plus插件
2019-03-11
div 实现光标悬停变成手型
2019-03-11
layer.confirm 无效
2019-03-11
Java 回调机制
2019-03-11
7、回归和特征选择
2019-03-11
pycharm使用(新建工程、字体修改、调试)
2019-03-11
什么是Numpy、Numpy教程
2019-03-11
Python学习笔记——元组
2019-03-11
异常声音检测
2019-03-11
PCB学习笔记——AD17如何添加新的封装
2019-03-11
numpy版本问题
2019-03-11