【转】vc中使用SendMessage正确发送自定义消息的方法--不错

本文详细介绍了在VC2008中如何正确使用SendMessage发送自定义消息,包括消息的定义、发送、接收及映射函数的设置。重点强调了消息函数的格式和参数,以及如何获取主窗口句柄,帮助开发者避免常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文网址:http://zhoumf1214.blog.163.com/blog/static/5241940200910265532959/

最近在用VC2008做开发,后来由于要用到消息的发送,而且需要自定义消息,在网上查找了很多例子,根据他们所说的,虽然大致都差不多,但是基本上没有一个能完全做出来的。要知道VC编程有一个小地方出错,都可能是个让你头晕脑胀的事情。经过我后来不但探索,经过改进之后,一点错误都没有,现在贴出来供大家参考。

      1. 先来个基本知识介绍

SendMessage的基本结构如下:

SendMessage(

    HWND hWnd,  //消息传递的目标窗口或线程的句柄。

    UINT Msg, //消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,)

    WPARAM wParam, //参数1 (WPARAM 其实是与UINT是同种类型的,

  //在vc编译器中右键有个“转到WPARAM的定义”的选项可以查看。

    LPARAM lParam); //参数2

其中一些参数的由来如下:

//typedef unsigned int UINT;

//typedef UINT WPARAM;

//typedef LONG LPARAM;

//typedef LONG LRESULT;

2.  SendMessage用法实例

    例如可以用以下语句:

void CTScrollWinView::OnLButtonDblClk(UINT nFlags, CPoint point)
       {
            // TODO: 在此添加消息处理程序代码和/或调用默认值

     ::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CHILDFRAMEDBCLK ,0,0);

     CScrollView::OnLButtonDblClk(nFlags, point);
       }

这是我用VC2008下建立的一个多文档选项卡式工程里面的一段代码,是为了实现在子窗口双击后发送一个不带参数的消息(其ID为WM_USER+1)给主窗口, 如上为部分代码, 其中WM_CHILDFRAMEDBCLK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值