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

相关文章

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤