首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VS/MFC仍然使用"afx_msg"装饰器吗?

在C++的MFC(Microsoft Foundation Classes)框架中,afx_msg是一个宏,用于定义消息映射宏。它用于处理Windows消息和命令。在较早的MFC版本中,afx_msg装饰器经常用于定义处理函数。然而,在现代的MFC版本中,这种用法已经不再推荐,因为C++11标准引入了更好的方法来处理这些场景。

在现代的MFC应用程序中,建议使用新的消息处理机制,如下所示:

代码语言:cpp
复制
BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
    ON_WM_PAINT()
    ON_WM_TIMER()
    ON_MESSAGE(MY_CUSTOM_MESSAGE, OnMyCustomMessage)
END_MESSAGE_MAP()

尽管如此,afx_msg仍然可以在某些情况下使用。例如,在某些特定的MFC库中,可能仍然需要使用afx_msg装饰器。但是,对于大多数现代MFC应用程序,建议使用新的消息处理机制。

总之,VS/MFC中仍然可以使用afx_msg装饰器,但在现代MFC应用程序中,建议使用新的消息处理机制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MFC学习笔记-HellowWorld

VS2008->新建->vsual c++->常规->空项目 添加个头文件,代码如下 class CMyApp:public CWinApp { public: virtual BOOL InitInstance...(); }; class CMyFrame:public CFrameWnd { public: CMyFrame(); protected: afx_msg void OnLButtonDown(UINT...NfLAGS,CPoint point); afx_msg void OnPaint(); DECLARE_MESSAGE_MAP() }; 添加个源文件,代码如下 #include <afxwin.h...的使用-》在共享 DLL 中使用 MFC 同样在配置属性中-》连接-》高级-》入口点-》WinMainCRTStartup 然后项目可正常运行 下面挑一部分内容解释一下这个程序 程序运行先构造一个CWinApp...派生出来的类的对象(MFC框架决定的) 就是这个对象:CMyApp theApp; MFC内部有一个WinMain函数 这个函数是程序的入口点,函数执行过程中发现了CMyApp 的对象,即执行它的InitInstance

56520

EVC34项目升级到Visual Studio项目的一些建议

void (**)(WPARAM,LPARAM),改成:afx_msg LRESULT (** )(WPARAM,LPARAM)就可以了。...= 0; i < MAX_LEN; i ++) {    //…… } for (i = 0; i < MAX_NUM; i ++) {     //…… }     对于evc离开循环后,循环变量仍然有效...,并且仍可以使用,但是在VS2005下是不行的,由此可见VS2005对变量的定义与审查更为严格,还有就是对数组越界问题也比EVC来的强。    ...解决方法:(不能完全相信编译,也不能把所有的语法检查都丢给编译) int i = 0; for (i = 0; i < MAX_LEN; i ++) {     //…… } for (i = 0...解决方法:在工程属性—〉General—〉Project Defaults –〉Use MFC 中,把Use MFC in a shared DLL 改为 Use MFC in a static DLL

1.1K100
  • MFC 调用静态链接 MFC 的规则 DLL

    简语: 最近学习了生成静态链接的dll及其调用,写一下笔录和大家分享,有错误的地方欢迎大家指出来 开发环境 VS2015 开发语言 C++ 开发步骤 以mfc的dll创建为例,先说明一下win32的dll...构建MFC的DLL项目 新建MFC DLL项目 ? 这边选择带静态链接MFC的规则DLL ? 默认生成了,头文件和源文件,右键def文件 ?...然后再配置库名称,项目属性->链接-->输入,配置附加依赖项,即把要添加的lib,名称加进去 ? 到此依赖的静态链接库都配置好了。...afx_msg void OnBnClickedButton2(); //因为静态的方法无法使用非静态的成员,所以更新UI,采用消息发送的形式 afx_msg LRESULT...对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。

    2.5K20

    VC2008中如何为MFC应用程序添加和删除消息响应函数

    最近重温《MFC Windows应用程序设计》第二版这本书,里面的代码全部是使用VC6.0写的,我Win7下安装的是VS2008开发环境。        ...中添加消息响应函数的办法蛮简单的,方法如下: 假如创建了一个名为Example的MFC单文档应用程序,则在VS2008中右键单击类视图中的CExampleView类,选中【Properties】,...手动删除消息响应函数需要删掉三个地方,以删除菜单响应函数为例时包括以下三个部分:             1、头文件中的定义,如afx_msg void OnDialogModel();            ...OnDialogModel)             3、源文件中具体的函数体,例如void CMyboleView::OnDialogModel()函数的定义实现部分:            看来以后得多使用一下...VS2008这套工具,可以通过学习MFC和Win32应用程序多加练习。

    1.9K20

    VC2008中处理CStatic控件的单击STN_CLICKED消息

    MFC中,静态文本CStatic控件主要是用来作为标签,即作为注释用的。一般情况下不做消息响应。...在VC2008下使用MFC创建了一个基于对话框的应用程序。...添加一个CStatic控件,修改其Caption属性为:Number1:      默认情况下MFC中所有新添加的静态控件的ID是一样的,都是IDC_STATIC,如果想要使用某个STATIC控件进行消息响应...CDialog) ON_STN_CLICKED(IDC_NUMBER1, &CTestDlg::OnStnClickedNumber1) END_MESSAGE_MAP() 函数声明为: afx_msg...原来需要在VS2008中修改ID为IDC_NUMBER1的CStatic控件的Notify属性(即SS_NOTIFY风格),将其改成TRUE就OK了,默认的属性为FASLE,即静态文本控件在默认情况下是不发送通告消息的

    1.3K20

    怎么添加窗口小工具_vc可视化编程

    原文地址:http://www.cnblogs.com/carekee/articles/1751805.html (转载者注)推荐在MFC中加入BCG,而不是适用BCG建立工程,因为BCG对中文的支持不是很好...本文以MDI应用程序为例说明如何在已有的VC++工程中使用BCG界面库,我的开发环境为VS2003( 在VC6.0下同样适用)。   ...1,将BCG/BCGCBPro目录路径添加到“项目属性->C/C++ ->常规 ->附加包含目录”中,同时将BCG/Bin目录路径添加到“项目属性->链接 ->常规 ->附加库目录”中(如果先安装VC...,再安装BCG就不用设置,因为BCG已经集成到了编译中)。   ...ON_COMMAND_RANGE(ID_VIEW_APPLOOK_2003, ID_VIEW_APPLOOK_2007_4, OnAppLook) 在CMainFrame类中添加OnAppLook函数声明: afx_msg

    57240

    MFC进度条同步问题

    一、实现方法   虽然Visual C++中的MFC类提供了标准的进度指示控件(progress control),但是我们不能在状态栏里直接使用这个控件,要解决这个问题,可以创建一个可重用C++类CProgStatusBar...当应用程序不做任何事情时,MFC程序总是在这个位置显示资源串AFX_IDS_IDLEMESSAGE表示的文本,其缺省值为”就绪”,当然读者朋友们可以在当前项目的RC文件中任意修改这个值,不管怎样,在MFC...经过上述处理,想要使用进度指示的任何对象都可以通过发送一个消息到主框架来调用状态栏进行进度条的显示。... }  void OnProgress(UINT pct); protected:  CProgressCtrl m_wndProgBar; // the progress bar  afx_msg...int OnCreate(LPCREATESTRUCT lpCreateStruct);  afx_msg void OnSize(UINT nType, int cx, int cy);

    1.1K10

    使用强大的第三方串口类 CSerialPort

    转载请注明:转载自 祥的博客 原文链接:http://blog.csdn.net/humanking7/article/details/48110543 ---- 最近要写一个串口程序,用MFC自带COM...资源下载 第三方串口类资源下载:http://download.csdn.net/detail/humanking7/9064717 步骤详解 编程环境:VS2008 Step1 构建界面 建立一个基于对话框的...MFC应用程序,我在这里是 SerialPortTest ,画的界面如下: ?...WM_COMM_RXCHAR(串口接收缓冲区内有一个字符)的响应函数声明: public: //****************************************** afx_msg...其实当你使用debug解决方案时,它的基本运行时检查初始设置为:两者(/RTC1,等同于 /RTCsu),这个两者是指:堆栈帧(/RTCs),未初始化的变量(/RTCu)。

    3.6K10

    CC++ 如何来自动优雅的涮别银家的贴子

    void OnSysCommand(UINT nID, LPARAM lParam); 30 afx_msg void OnPaint(); 31 afx_msg HCURSOR OnQueryDragIcon...对于使用文档/视图模型的 MFC 应用程序, 126 // 这将由框架自动完成。...怎么才能说不错的浏览呢?   第一滴: 你得始终不依靠别人家的浏览。也就是说,无论点击啥网页,你都只能子在自己的浏览里去跳转,A网站调到B页面,为啥? 因为我们不能让cookie莫名的中断了!...补充: 如何使用MFC调用JS来模拟鼠标点击网页 这里只是针对C++,ATL编写客户端时,调用微软API时常用的问题的解决方案: 1....使用com组件调用js来模内点击网页按钮,避免使用复杂的dom树: 比如有这么一段html页面: <input type="submit" id="su" value="百度一下" class="bg

    1.3K50

    多线程编程10个例子--2

    ++) { int nTemp=pInfo->nMilliSecond; pInfo->pctrlProgress->SetPos(i); Sleep(nTemp); } return 0; } 用 MFC...对于标准类型的全局 变量,我们建议使用volatile 修饰符,它告诉编译无需对该变量作任何的优化,即无需将它放到一个寄存中,并且该值可被外部改变。...例如,对于像磁盘驱动这样独占性系统资源,由于线程可以执行进程的任 何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动进行操作,从而出现 操作错误...在MFC中,CEvent 类对象有两种类型:人工事件和自动事件。...D、使用CSemaphore 类   当需要一个计数来限制可以使用某个线程的数目时,可以使用“信号量”对象。

    2K70

    两种方法查看MFC源代码

    方法1:使用VS200X的对象查看加载mfc.bsc文件来阅读MFC代码 mfc.bsc的路径如下: vc2008sp1位置:C:\Program Files\Microsoft Visual Studio...9.0\VC\atlmfc\src\mfcmfc.bsc文件加载到对象查看的步骤: 1、VS2008菜单栏的“视图”栏下选择“”,或者使用快捷键”Ctrl+Alt+J”; 2、在对象查看界面的...4、在搜索框中输入相应的MFC类,将会显示其结果.如输入:CTreeCtrl,将会显示其具体的函数对象关系....方法2:使用VAssisX工具进行查看MFC代码 1、VAX是Visual Studio插件,VC开发人员很多使用到它,它也可以查看源代码。...较新版本VS查看MFC源代码 搜索C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\src\mfc可以使用Notepad++进行目录文件搜索找指定的类

    2.2K20

    关于BCG界面库「建议收藏」

    1、软件下载,可以从官网上下载:http://www.bcgsoft.com/download.htm 2、 微软Visual Studio 2008整合BCGControlBar技术,对使用BCGControlBar...微软VS2008只是整合了BCGControlBar的部分功能,新的MFC是在专业版的基础上建立的, 它并没有包含一些先进控件的功能,诸如 grid, editor, plannner...问题4:BCGSOFT公司将会停止对BCGControlbar Professional Library新版本的开发?...————————————————————————————————————————-回答: 不,如我们上面谈到的,我们不会停止开发已经包含在MFC中的控件,并会继续开发支持VS6到2005的维护。...另外,我们将为VS 2008和以后的版本开发一个专用的”light”版,将包括Grid, Calendar,Editor和一些其他控 件,并且它们不会被包含在将来的MFC里。

    59820

    Python装饰的高级用法

    如果你对装饰知之甚少,或者对本文讲到的知识点易混淆。我建议你复习下装饰基础教程。 本教程的目标是介绍装饰的一些有趣的用法。特别是怎样在类中使用装饰,怎样给装饰传递额外的参数。...装饰 vs 装饰模式 Decorator模式是一个面向对象的设计模式,它允许动态地往现有的对象添加行为。当你装饰了一个对象,在某种程度上,你是在独立于同一个类的其他实例的基础上扩展其功能。...这需要大量的复制粘贴,每个装饰需要一个不同的名字,如果有任何关于权限检查的改变,每个装饰都需要修改。就没有一个装饰把以上三个装饰的工作都干了的?...也就是说,我们仍然希望做重要的事情,我们希望记录下每个步骤发生的时间。我们写成这样: ?...除了本文介绍的之外,还有其他好多装饰使用方法,我们甚至可以使用装饰装饰装饰(如果你有机会使用到它,这可能是一个做全面检查的好方法)。

    71490

    MFC应用程序——标签控件_IP控件_时间控件_List Control控件_Tree Control控件_命令按钮_列表框_组合框_图片_滚动控件「建议收藏」

    使用标签控件我们可以同时加载多个有关联的页面,用 户只需点击标签即可实现页面切换,方便灵活的进行操作。 每个标签除了可以显示标签文本,还可以显示图标。...当然列表项可以只包含图 标也可以只包含标签 Tree Control控件 树形控件在Windows系统中是很常见的,例如资源 管理左侧的窗口中就有用来显示目录的树形视图。...这些都使得树形控件给 人一种复杂的感觉,但我们在使用它一两次后会发现其 实树形控件用起来还是很方便的。...【图片控件控件简介】 图片控件和前面讲到的静态文本框都是静态文本控件, 两者的使用方法有很多相同之处,所属类都是CStatic类。...对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。

    2.6K10

    【答疑解惑第十二讲】windows编程学习框架图

    解决方案:   大家知道现在PC市场上,、Linux、Mac基本占了百分之九十多,而在个人用户PC市场,应用在目前的PC市场还是占据了绝大多数,根据和Net 两家机构的最新统计,系统仍然占据90%以上,...因此在下要学习窗口程序编写,一定离不开 API的使用,由于C#、VB已经把窗口程序作为其必备的部分,也就不再考虑这个问题,我们今天的目标就是带领广大初学者如何用C/C++来学习编写下的窗口程序,已经熟悉的或者高手们直接略过...一,安装窗口编译环境要开始编程,我们需要安装一个开发环境,我推荐你在VS下编写窗口程序,版本不是最重要的,不管是VS2013、VS2010、VS2008、哪怕是VS2005,甚至是VC都不是关键,也不是越新越好...MFC模式编程基本上都是使用C++,这个要求你有一定的C++基础。...控件——这个部分包括窗口上的各种控件的使用和管理。GDI——这个部分包括用于绘制的各种GDI对象,比如字体、位图、画刷、画笔、区域、路径等。外设——这个部分包括鼠标、键盘、打印机等、串/并口。

    48120
    领券