LRESULT SendMessage(
HWND hWnd, // handle to destination window
UINT Msg, // message
WPARAM wParam, // first message parameter,消息的第一个参数
LPARAM lParam // second message parameter,消息的第二个参数,
);
注意1:传递的到底是什么?是字符串,int数据,指针?
参数是一个数据,只能容纳一个数,而不能是一长串数据。这个数可以是一个int数据,也可以是一个指针(指针本质上就是一个数据)。因此,若传递int,可以直接传递;若要传递字符串或者结构体变量,则只能将字符串或者结构体变量的指针赋予参数进行传递,而不是完整的字符串数据或者结构体变量。

 注意2:两个消息参数

WPARAM  和

lParam的区别 ?
wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数:
一个是WORD类型的16位整型变量;另一个是LONG类型的32位整型变量。因此根据匈牙利命名法,16位的变量就被命名为wParam, 32位的变量就被命名为lParam。到了Win32API中,原来的16位变量也被扩展为32位,因此此时wParam和lParam的大小完全相同。
实例:

实例一,发送char[]字符串

发送Message:

void CDlg2::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here char s0[]="123456FEDBCA\r\n"; //需要传递的变量可以是此函数的局部变量也可以是工程的全局变量 // 通过第一个参数或者第二个参数传递都OK
::SendMessage(pMainFrame->pDlg4->m_hWnd, UM_MESSAGE_EDIT_ADD_STRING, , (LPARAM)s0); // OK
// ::SendMessage(pMainFrame->pDlg4->m_hWnd ,UM_MESSAGE_EDIT_ADD_STRING,(WPARAM)&s0,0); // OK // 运用PostMessage 还未测试,据说不同,只能用全局变量,因为POST完之后不会等待消息处理完再进入下一步;而Send会
// 等待消息处理完之后再进行下一步,因此系统在这短时间内不会将本函数内的变量销毁。本人会继续验证PostMessage的功能。
// ::PostMessage(pMainFrame->pDlg4->m_hWnd, UM_MESSAGE_EDIT_ADD_STRING, 0, (LPARAM)s1); }

接收处理Message:

LRESULT CDlg4::OnMsgAddString(WPARAM wParam, LPARAM lParam)
{ int nMsgLen ;
CString str;
char *pStr0= (char *)wParam; // OK
// char *pStr0= (char *)lParam; // OK
str.Format(_T("%S"),pStr0); nMsgLen = m_Edit.GetWindowTextLength();
m_Edit.SetSel(nMsgLen, nMsgLen);
m_Edit.ReplaceSel(*pStr1); return TRUE;
}

实例二,发送CString字符串

发送Message:

void CDlg2::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here CString s1=_T("123456\r\n");
// CString 本身是一个类,s1为其实例对象,因此传递的时候必须是这个对象的指针,而不是这个对象。依次类推,不仅可以传递字符串,还一个传递一个自定义的结构体对象或者一个其他类的对象。 //运用第一个参数传递,OK
// ::SendMessage(pMainFrame->pDlg4->m_hWnd, UM_MESSAGE_EDIT_ADD_STRING,(WPARAM)&s1,0);
//运用第二个参数传递,OK
::SendMessage(pMainFrame->pDlg4->m_hWnd, UM_MESSAGE_EDIT_ADD_STRING, ,(LPARAM)&s1); //OK //::PostMessage(pMainFrame->pDlg4->m_hWnd, UM_MESSAGE_EDIT_ADD_STRING, 0, (LPARAM)s1); }

接收处理Message:

LRESULT CDlg4::OnMsgAddString(WPARAM wParam, LPARAM lParam)
{
int nMsgLen ;
// 指针,非对象
CString *pStr1= (CString *)lParam; nMsgLen = m_Edit.GetWindowTextLength();
m_Edit.SetSel(nMsgLen, nMsgLen);
m_Edit.ReplaceSel(*pStr1); return TRUE;
}

MFC各个控件之间运用SendMessage()传送CString和char[]字符串,以及int类型数据的更多相关文章

  1. MFC 操作控件数据

    在MFC中有多种获取控件数据的方法 1.GetWindowText()和SetWindowText()函数   ],ch2[],ch3[]; GetDlgItem(IDC_EDIT1)->Get ...

  2. MFC Spin 控件

    一般应用: 设置属性: Auto Buddy(自动取关联控件为TAB顺序前一个)Set Buddy Interger(使控件设置关联控件数值,这个值可以是十进制或十六进制)Wrap(数值超过范围时循环 ...

  3. .NET同页面内用户控件与父页面以及控件之间方法调用

    用户控件调用父页面的方法: //获得父页面 Page p =this.Parent.Page; Type pageType = p.GetType(); //父页面的方法名 MethodInfo mi ...

  4. 发布MFC ActiveX控件并实现自动更新

    一.        引言 上一篇我们讲了如何使用 VC 2005来开发 MFC ActiveX控件,我们开发 ActiveX控件最终目的是将 ActiveX控件发布出来并嵌入在 Web网页中,随着控件 ...

  5. VS2010/MFC常用控件:图片控件Picture Control

    图片控件Picture Control 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到 ...

  6. 如何将 MFC ActiveX 控件标记为安全,脚本和初始化

    MSDN原文.ActiveX控件标记安全(可以不仅仅是MFC ActiveX) 概要 默认情况下,MFC ActiveX 控件未标记为对脚本编写是安全的和对初始化是安全的.控制运行在 Internet ...

  7. MFC TabCtrl 控件修改标签尺寸

    注意:无论那种方法,都要先设置Tab控件的Style属性为fixed width. 第一种方法 MFC,tabcontrol控件改变标签大小 - CSDN博客 https://blog.csdn.ne ...

  8. vs2010开发activex(MFC)控件/ie插件(一)

    原文:http://blog.csdn.net/yhhyhhyhhyhh/article/details/50782904  vs2010开发activex(MFC)控件:      第一步:生成ac ...

  9. MFC 改变控件的大小和位置

    mfc 改变控件大小和位置用到的函数: ) void MoveWindow(int x, int y, int nWidth, int nHeight); ) void MoveWindow(LPCR ...

随机推荐

  1. Grpc helloworld demo的经验

    GreeterGrpc.java这个文件是插件protoc-gen-grpc-java生成的 刚开始直接用类似如下的指令无法生成GreeterGrpc.java文件  protoc --java_ou ...

  2. UI设计师必备

    网站大全 国外的花瓣--Pinterest • The world’s catalog of ideas 字体海洋--求字体网提供中文和英文字体库下载.识别与预览服务,找字体的好帮手原创设计UI--站 ...

  3. Redis ,Memcached ,Mongodb 对比

    memcached: 1.适合做内存缓存,对可靠性没有要求,不支持持久化:速度快.并发高.2.支持的数据结构单一,只支持Key-value,3.value最大支持1M3.在传统tomcat 部署war ...

  4. 第三天-基本数据类型 int bool str

    # python基础数据类型 # 1. int 整数 # 2.str 字符串.不会用字符串保存大量的数据 # 3.bool 布尔值. True, False # 4.list 列表(重点) 存放大量的 ...

  5. PoPo数据可视化周刊第2期

    羡辙在bilibili开课啦 就在这个月,不知道是不是受了 @Jannchie见齐 的影响,羡辙竟然在bilibili开授Echarts课程,目前已开课两节. [滚城一团]的 ECharts 训练营 ...

  6. layui-table渲染不出来

    通过方法渲染 页面代码: <table id="tableList" lay-filter="clublist"></table> js ...

  7. JavaScript如何比较两个数组的内容是否相同【转】

    比较2个数组是否相等的.  不能像字符样 简单的用  ==   === 比较 ([]==[]); // false ([]===[]); // false 都是false -------------- ...

  8. VS2013下使用log4cplus

    原文:http://blog.csdn.net/qq_35850668/article/details/52522932 最近工作需要,需要使用log库来完善日志类记录,由于之前没什么经验,遇到了很多 ...

  9. centos虚拟机下安装nginx

    通过yum安装 yum install epel-release -y(企业级的镜像源) yum install nginx-y 启动.停止.重启 service nginx start servic ...

  10. CentOS随笔 - 6.CentOS7安装Git服务器

    前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 版本管理当然是选择git..反正我是被svn坑怕了... 这次安装的是git 2.18.0 点击下载 准备安装 ...