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. 以面向对象的思想实现数据表的添加和查询,JDBC代码超详细

    以面向对象的思想编写JDBC程序,实现使用java程序向数据表中添加学生信息,并且可以实现给定身份证号查询学生信息或给定准考证号查询学生信息. 创建的数据表如下: CREATE TABLE EXAMS ...

  2. SPOJ:NSUBSTR - Substrings

    题面 字符串$ S \(最多包含\) 25 \(万个小写拉丁字母.我们将\) F(x) \(定义为长度为\) x \(的某些字符串出现在\) s \(中的最大次数.例如,对于字符串\) "a ...

  3. bootstrap 中的 iCheck 全选反选功能的实现

    喜欢bootstrap 风格的同学应该知道,iCheck的样式还是很好看的. 官网: http://www.bootcss.com/p/icheck/ 进入正题,iCheck提供了一些方法,可以进行全 ...

  4. LintCode2016年8月8日算法比赛----子树

    子树 题目描述 有两个不同大小的二叉树:T1有上百万的节点:T2有好几百的节点.请设计一种算法,判定T2是否为T1的子树. 注意事项 若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 ...

  5. Android解析WindowManagerService(一)WMS的诞生

    前言 此前我用多篇文章介绍了WindowManager,这个系列我们来介绍WindowManager的管理者WMS,首先我们先来学习WMS是如何产生的.本文源码基于Android 8.0,与Andro ...

  6. mongodb shell警告

    # mongoMongoDB shell version: 3.0.2connecting to: testServer has startup warnings: 2015-05-09T12:34: ...

  7. eclipse4.5(mars)环境

    官网下载页面: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/mars/2/ ...

  8. 使用自定义视图的AlertDialog

    使用自定义视图的AlertDialog主要分为以下几个步骤: 1)利用XML文件构建自己的的视图 2)将视图添加到AlertDialog中 * 在进行第二步之前,有时需要对对话框窗口进行额外的设置 下 ...

  9. Android实现身份证拍摄框

    http://blog.csdn.net/lhbtm/article/details/55505668 最近项目需要实现身份证拍照的功能,系统的相机并不能满足需求,故需要自定义相机,先上效果图,使用了 ...

  10. web application 访问控制

    http://secappdev.org/handouts/2012/Jim%20Manico%20%26%20%20Eoin%20Keary/Final%20-%20Access%20Control ...