`
king_tt
  • 浏览: 2106547 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

VC++6.0中如何发送自定义消息

 
阅读更多

VC++6.0中如何发送自定义消息

1.PostMessage和SendMessage函数的区别

用户可以通过PostMessage和SendMessage函数来发送自定义消息,其区别在于:

PostMessage只把消息放入队列,不管消息处理程序是否处理都返回,然后继续执行,这是个异步消息投放函数;

SendMessage必须等待消息处理程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数;

而且,PostMessage的返回值表示PostMessage函数执行是否正确;而SendMessage的返回值表示其他程序处理消息后的返回值。

2.自定义消息的发送方法

(1)在 resource.h 或 stdax.h 文件添加如下代码定义一个自己的消息:

#define WM_MY_MESSAGE WM_USER +1

(2)在消息处理函数所在的类的头文件中添加如下代码:

//{{AFX_MSG(C...)
afx_msg ........
afx_msg ........
afx_msg void OnMyMessage(/*WPARAM wParam, LPARAM lParam*/);
//参数有无根据实际情况而定
//}}AFX_MSG
DECLARE_MESSAGE_MAP( )

(3)在消息处理函数所在的类的cpp文件中添加如下代码:

BEGIN_MESSAGE_MAP(... , ...)
//{{AFX_MSG_MAP(CPostmessageView)
ON_COMMAND .......
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
//}}AFX_MSG_MAP
......
END_MESSAGE_MAP()

(4)在消息处理函数所在的类的cpp文件中手动添加消息相应函数代码:

void CPostmessageView::OnMyMessage(/*WPARAM wParam, LPARAM lParam*/)
{
........
........

}

(5)在需要发送消息的地方添加代码:

PostMessage(WM_MY_MESSAGE);

SendMessage(WM_MY_MESSAGE);

3.从一个类向MainFrame类发送自定义消息

直接使用PostMessage或SendMessage函数只能向函数所在的类发送消息,如果想向MainFrame类发送消息,可以使用下面的代码:

((CMainFrame*)AfxGetMainWnd())->PostMessage(WM_XXX);

((CMainFrame*)AfxGetMainWnd())->SendMessage(WM_XXX);


分享到:
评论

相关推荐

    VC++6.0下强大的自定义消息程序的编写

    VC++6.0下强大的自定义消息程序的编写,绝对经典的,超实用的

    VC++6.0实现的自定义风格的弹出菜单

    在vc++6.0环境下实现了带图标的菜单功能,并将实现带图标菜单的功能封装到了IconMenu类,可供方便的代码复用。

    给VC++6.0编译出的.exe添加图标

    给VC++6.0编译出的.exe添加图标

    vc++6.0 CInternetSession 取得西瓜视频https内容

    vc++6.0取得西瓜视频https内容,并且自定义StringSplit来分离字符串,

    用vc++6.0mfc对话框做的钟表

    用vc++6.0mfc做的钟表,功能齐全,代码清楚,很适合初学者。值得参考!祝你们成功!

    VC++6.0 USB摄像头拍照、摄像

    用vc++6.0做的基于摄像头的程序,可以拍照、录像,文件可保存用户自定义的路径,也可以保存到默认路径。

    vc++6.0 快速功能插件

    可在vc++6.0中应用可添加到工具栏。添加方式如下:在vc++应用环境中,鼠标右键“自定义”选择“附加项和宏定义”,浏览选中本文件(addinvc.dll)并打开。再在附加项和宏定义中勾选规范代码的插件。

    VC++ 6.0非模式对话框示例以及对比Java的Swing编程的感想

    环境:Window XP SP3、VC++ 6.0 VC++中编写模式对话框非常容易,只需要在呼叫一个不带参数的对话框类的构造方法之后,然后呼叫对话框的DoModal方法即可,而书写一个非模式对话框比较复杂。 不过当本人按照《Visual ...

    VC 6.0 OnCmdMsg消息处理和自定义消息对话框用法.rar

    VC 6.0 消息处理和自定义消息对话框用法,通过重载函数OnCmdMsg从而使不能够处理主框架命令的非模式对话框,具备了响应主框架命令的功能。二是说明自定义消息的用法。重载OnCmdMsg后,改变的窗口标题,自定义消息...

    VC++6.0开发环境字体设置工具

    如果大家用惯了微软的 Visual Studio 2005/2008 ,再用回 Visual C++ 6.0 的时候,会感觉 ...这个小软件可以稍微满足大家的需求,可以自定义设置 Visual C++ 6.0 各个窗口的字体、字体大小、字体颜色、背景色等等!

    VC++6.0对txt文件的增删改查操作

    VC++6.0对txt文件的操作,其中两个top文件是存储数组的当前最大数量,两个txt文件是具体存储的数据。主要是利用了自定义类的数组对数据进行操作。

    vc++6.0光标

    在自定义区域内,鼠标光标会发生变化,使用mousemove函数

    Win7下VC++6.0打开文件出错的解决方法

    Win7下VC++6.0打开文件出错的解决方法,之前找到个加载错误,自己编译了一个,可正常加载: 1 将下载的文件放到 common所在目录\Common\MSDev98\AddIns\ 2 打开vc6,右击工具栏,选 自定义->加载项和宏文件,勾选file...

    超级报表Super Report V3.5(附VC++6.0编译的Bin)

    里面有VC++6.0编译的例子,如果不能运行的话可能你的电脑上确实vc6相关dll,安装下vc6即可。 注:不是报表控件源码,是如何使用控件的源码,网上没有控件本身的源码,说控件本身源码的都是骗人的。 作者思路新奇,...

    VC6.0中的MFC实现画线、画圆

    本代码用VC++6.0软件编写,实现自定义端点画线、自定义圆心半径画圆,其中画线算法用到了DDA、逐点逼近、Bresenham、中点画线法;画圆算法使用了Bresenham、中点画圆法。各算法可以分别选择使用哪种画图,比较哪种...

    vc6.0自定义属性页

    vc6.0 自定义属性页继承自CTabCtrl

    VC++6.0 RS232 数据帧类

    PC 机和下位机通讯常用的RS232数据帧组包解包,这个类是提供一个自定义的数据帧格式,所有通讯按自定义的数据帧格式进行组包和解包处理。

    成绩管理 vc++6.0 完整应用程序

    管理方面:采用了一个独特的树状管理体系,打破了以前传统的菜单式管理体系,使其一目了然操作方面:采用动态的控制面板,...报表方面:自定义了一个报表控件,可拖动,放大,缩小等,甚至可以在报表时执行排序操作.直观,明了.

    单片机与DSP中的基于VC++ 6.0的高速串口通信数据采集系统

    摘 要: 在VC++6.0中利用MSComm控件实现串口通信时实时性较差,系统资源利用不足,无法满足高速串口数据采集软件的编程要求.针对高速串口数据采集软件的设计要求,提出了基于多线程技术和自定义消息机制的异步串口通信的...

Global site tag (gtag.js) - Google Analytics