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

相关文章

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长