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);
转载声明: 本文转自http://wmnmtm.blog.163.com/blog/static/3824571420097510938616/
相关推荐
在Windows编程中,使用Visual C++ 6.0(简称VC++6.0)进行开发时,自定义消息是一种非常实用的技术。它能够帮助程序员更加灵活地控制程序的行为、状态更新以及线程间的通信等。本文将详细介绍如何在VC++6.0环境下...
5. **资源编辑器**:VC++6.0的资源编辑器可以用来创建和编辑应用程序的资源文件,如菜单、对话框、图标等,使开发者可以自定义应用程序的用户界面。 6. **使用说明**:由于绿色版可能与原版有所差异,因此阅读使用...
Xtreme ToolkitPro提供了丰富的控件和主题,使得开发者可以在老版本的VC++6.0中享受到更现代的GUI设计,如Office风格的界面、皮肤支持、自定义图标等。这不仅提升了开发环境的视觉吸引力,也提高了工作效率,因为一...
- 在Windows 7中,VC++6.0可能无法正常创建快捷方式,此时可以手动创建指向msdev.exe的快捷方式,并设置兼容模式为Windows XP Service Pack 3。 - 由于VC++6.0不支持Unicode编码,所以在处理多语言文本时可能存在...
总之,"VC++6.0源代码实例"中的推箱子游戏是一个典型的C++游戏开发案例,它涵盖了从基本的编程技术到复杂的系统设计等多个方面,对于提升编程技能,尤其是游戏开发能力,具有很高的学习价值。通过研究这个项目,...
- 在 VC++ 6.0 中选择 “Tools” -> “Customize”,然后转到 “Add-Ins and Macro Files” 标签页。 - 浏览并选中 `FileTool.dll` 文件,点击 “OK” 确认加载。 - 关闭并重新启动 VC++ 6.0,查看问题是否得到...
**VC++ 6.0 和 MSDN 中文版** Visual C++ 6.0 是微软在1998年发布的一款经典集成开发环境(IDE),主要用于编写基于Microsoft Windows平台的应用程序,尤其是C++语言的程序。它包含了编译器、调试器、资源编辑器...
在VC++6.0开发环境中,创建自定义风格的弹出菜单是一项常见的需求,它可以提升应用程序的用户体验。本文将深入探讨如何实现这一功能,并重点介绍如何利用IconMenu类来实现带图标的弹出菜单。 首先,自定义风格的弹...
在本文中,我们将探讨如何将图标添加到VC++6.0编译出的.exe文件中。添加图标可以提高软件的用户体验和美观性。下面是添加图标的步骤: 首先,我们需要将图片转换为.ico格式。这是因为Windows操作系统只能识别.ico...
尽管随着时间的推移,更新版本的Visual Studio相继推出,但VC++6.0因其简洁高效的特点,仍然在许多开发场景中被广泛使用。其中,用户界面的个性化,特别是代码编辑器的配色方案,是提升编程体验的重要一环。 本文将...
Windows7 下安装 VC++ 6.0 Windows7 是一个非常流行的操作系统,而 VC++ ...安装 VC++ 6.0 在 Windows7 下需要注意一些问题,但是通过按照正确的步骤进行安装和设置,可以成功地安装和使用 VC++ 6.0 在 Windows7 中。
VC++6.0(Visual C++ 6.0)是一款经典的C/C++集成开发环境(IDE),广泛应用于学习与软件开发中。由于其强大的功能以及对旧系统的良好支持,至今仍有不少开发者在使用。然而,对于初次接触VC++60的用户来说,安装...
在VC++6.0中,我们可以使用MFC(Microsoft Foundation Classes)库中的CPropertySheet和CPropertyPage类来创建属性页。CPropertySheet类用于管理整个属性页对话框,而CPropertyPage类则代表单个属性页。通过这些类,...
总的来说,“VC显示行号_VC6LineNumberAddin”插件为VC++6.0的用户提供了便利,使他们能够在古老的开发环境中享受到现代IDE的一些基本功能。通过插件的使用,开发者可以更有效地追踪代码错误,提高编程效率。然而,...
【标题】"vc++6.0中文完全版" 指的是Microsoft Visual C++ 6.0的简体中文版本,这是一个经典的集成开发环境(IDE),主要用于编写C++程序。这款软件在编程社区中有着广泛的影响力,特别是在学习C++语言的初学者中,...
2. 安装步骤:解压下载的vc++6.0压缩包,找到安装程序(通常是setup.exe),双击启动。选择自定义安装,避免安装不必要的组件,如Visual InterDev和VB等,以减少冲突可能性。 3. 补丁和更新:安装完成后,记得查找...
在《VC++6.0开发宝典》中,读者将了解到如何安装和配置这个IDE,包括设置项目属性、管理源代码以及调试技巧。 MFC是微软为简化Windows应用程序开发而创建的一个类库,它封装了Windows API,提供了一套面向对象的...
在本项目中,"VC++6.0大作业.zip"是一个包含了一位学生在学习VC++6.0课程时完成的期末大作业的压缩文件。这个作业是一个简易的调查问卷应用,不仅具备基本的用户交互功能,还增加了背景音乐、背景颜色以及按钮样式的...
4. **Windows编程**:VC++6.0提供了编写Windows应用程序的工具,包括消息机制、窗口类、线程管理、内存管理等。这部分内容会帮助读者理解Windows API的使用,以及如何通过VC++6.0实现与用户交互的程序。 5. **异常...