MFC实例:[6]SendMessage 发送字符串,结构体,数字

2024-02-17 06:48

本文主要是介绍MFC实例:[6]SendMessage 发送字符串,结构体,数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MFC实例:[6]SendMessage 发送字符串,结构体,数字

        将指定的消息发送到一个窗口或多个窗口。SendMessage为这个指定的消息调用窗口处理程序,直到窗口处理完这个程序后才会返回。和SendMessage函数相比,PostMessage函数发送一个消息到线程消息对列中,并立即返回。

函数原型:B00L SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);

下面分享详细实例:

界面设计如下:

1、发送字符串步骤:

(1)在建好的MFC工程中头文件添加消息定义宏:

#define TTMSG_WARNLIST1 5000         //字符串
#define TTMSG_WARNLIST2 5001         //结构体
#define TTMSG_WARNLIST3 5003         //数字

(2)在对话框文件中添加消息响应:

BEGIN_MESSAGE_MAP(CMFCMessageDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_MESSAGE(TTMSG_WARNLIST1, &CMFCMessageDlg::OnTTwarnListMsg1)ON_MESSAGE(TTMSG_WARNLIST2, &CMFCMessageDlg::OnTTwarnListMsg2)ON_MESSAGE(TTMSG_WARNLIST3, &CMFCMessageDlg::OnTTwarnListMsg3)
END_MESSAGE_MAP()

(3)在头文件中定义消息响应函数声明:

	afx_msg LRESULT OnTTwarnListMsg1(WPARAM wParam, LPARAM lParam);afx_msg LRESULT OnTTwarnListMsg2(WPARAM wParam, LPARAM lParam);afx_msg LRESULT OnTTwarnListMsg3(WPARAM wParam, LPARAM lParam);

2、双击SendMessage字符串按钮,编辑代码,写响应函数:

void CMFCMessageDlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码//字符串数组CString str1 = _T("123");CString str2 = _T("hello");::SendMessage(this->GetSafeHwnd(), TTMSG_WARNLIST1, (WPARAM)(LPCTSTR)str1, (LPARAM)(LPCTSTR)str2); //发送消息方式1// SendMessage(TTMSG_WARNLIST1, (WPARAM)(LPCTSTR)str1, (LPARAM)(LPCTSTR)str2);     //发送消息方式2
}LRESULT  CMFCMessageDlg::OnTTwarnListMsg1(WPARAM wParam, LPARAM lParam)
{CString cstr1 = (LPCTSTR)wParam;CString cstr2 = (LPCTSTR)lParam;MessageBox(cstr1);MessageBox(cstr2);return TRUE;
}

3、双击SendMessage结构体按钮,编辑代码,写响应函数:

struct _tag_aa
{CString s1;char szBuffer[512];int a;char* szText;
};
void CMFCMessageDlg::OnBnClickedButton2()
{// TODO: 在此添加控件通知处理程序代码_tag_aa *a = new _tag_aa;a->s1 = "AAAAAAAAAAAAAAAAAAAA";strcpy_s(a->szBuffer, "BBBBBBBBBBBBBBBBBBBBBBB);a->szText = "CCCCCCCCCCCCCCCCCCC";a->a = 250;SendMessage(TTMSG_WARNLIST2, (WPARAM)a,0);}
LRESULT CMFCMessageDlg::OnTTwarnListMsg2(WPARAM wParam, LPARAM lParam)
{_tag_aa* pA = (_tag_aa*)wParam;CString str=pA->s1;CString str2 = pA->szBuffer;CString str4 = pA->szText;int b = pA->a;CString str3;str3.Format("%d",b);MessageBox(str3);MessageBox(str+str2+str4);delete pA;return TRUE;}

4、双击SendMessage数字按钮,编辑代码,写响应函数:

void CMFCMessageDlg::OnBnClickedButton3()
{// TODO: 在此添加控件通知处理程序代码int b = 10;SendMessage(TTMSG_WARNLIST3,b,0);
}
LRESULT CMFCMessageDlg::OnTTwarnListMsg3(WPARAM wParam, LPARAM lParam)
{int c = wParam;CString str;str.Format("%d",c);MessageBox(str);return TRUE;
}

注意:将消息发送给哪个窗口,就要获取哪个窗口的句柄,获取句柄方式总结如下:

    (1)GetSafehWnd() 取你程序所在窗口类的句柄
    (2)GetActiveWindow() 取当前活动窗口句柄
    (3)AfxGetMainWnd ()取主窗口句柄
    (4)GetForegroundWindow() 取前台窗口句柄
    (5)获取控件ID句柄,语法为:GetDlgItem(IDC_Dialog)->m_hWnd :参数为 该控件的ID, 返回值为:CWnd * 类型,但它是CWnd类内的函数,因此要先获取控件所在窗口的指针,如:
    ::SendMessage(AfxGetMainWnd()->GetDlgItem(IDC_Dialog)->m_hWnd, WM_SETTEXT, 0, (LPARAM)str.GetBuffer(0));

工程地址:

链接:https://pan.baidu.com/s/1KwzxjsjnDkWY8oyPKKdYnA 
提取码:5528 

这篇关于MFC实例:[6]SendMessage 发送字符串,结构体,数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/716983

相关文章

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件