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

相关文章

Java实现按字节长度截取字符串

《Java实现按字节长度截取字符串》在Java中,由于字符串可能包含多字节字符,直接按字节长度截取可能会导致乱码或截取不准确的问题,下面我们就来看看几种按字节长度截取字符串的方法吧... 目录方法一:使用String的getBytes方法方法二:指定字符编码处理方法三:更精确的字符编码处理使用示例注意事项方

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

SQL表间关联查询实例详解

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