自己对WTL使用中一个小问题的解决方法
来源:互联网 发布:列车通信网络 编辑:程序博客网 时间:2024/06/05 05:27
文章来源:https://bbs.et8.net/bbs/archive/index.php/t-899260.html
问题可见:http://topic.csdn.net/t/20051231/12/4492731.html
使用WTL新建一个对话框程序,但是加入按钮和按钮的点击事件处理函数之后,编译不通了
具体步骤很简单,用默认设置建立一个基于对话框的程序,这个时候编译可以通过,一切正常,
然后在资源视图中朝主窗口MainDlg拖放一个按钮,这个时候编译也可以通过,
然后在资源视图中双击新增的按钮,增加默认的OnBnClickedXXXXX事件处理函数,这个时候编译出现如下错误提示:
error C2065: “IDD_MAINDLG” : 未声明的标识符
error C2143: 语法错误 : 缺少“,”(在“<”的前面)
error C2143: 语法错误 : 缺少“;”(在“public”的前面)
error C2146: 语法错误 : 缺少“;”(在标识符“END_UPDATE_UI_MAP”的前面)
error C2504: “CUpdateUI” : 未定义基类
warning C4183: “BEGIN_UPDATE_UI_MAP”: 缺少返回类型;假定为返回“int”的成员函数
warning C4183: “END_UPDATE_UI_MAP”: 缺少返回类型;假定为返回“int”的成员函数
不知道这是什么原因?是我添加事件处理函数的方式有问题?或者是其他原因,请有方面经验的兄弟指点一下。谢谢!
我使用的是VS.NET 2003,WTL版本为7.5最终稳定发布版,路径设置也没有问题,默认情况下是可以编译通过的。
想问问CCF有没有兄弟用WTL的?我那个问题在CSDN上挂了快两年,居然没人搭理,在google上用“error C2504 CUpdateUI 未定义基类”为关键字搜索,只有两个结果,可见用的人确实不多啊。
在公司的时候自己花了点时间找到了解决办法,可惜公司论坛挂了之后被人给删了,今天又遇到了,再次花时间搞了一下,记录一下,也给比我更菜的兄弟(如果有的话,呵呵)一个机会不走弯路。
我个人认为原因应该是因为IDE默认在.cpp中放置实现代码,而没有添加适当的头文件,导致模板实例化的时候不能找到合适的基类。
解决方法:
在stdafx.h最后添加:
#include <atlframe.h>
#include "resource.h"
(然后可以去掉"你的项目名.cpp"中的相同两行)
在maindlg.h开始添加:
#include "aboutdlg.h"
虽然是解决了,但是resource.h放在stdafx.h里面总觉得怪怪的,不知道有没有其他更好的办法,请高手指教。
使用WTL新建一个对话框程序,但是加入按钮和按钮的点击事件处理函数之后,编译不通了
具体步骤很简单,用默认设置建立一个基于对话框的程序,这个时候编译可以通过,一切正常,
然后在资源视图中朝主窗口MainDlg拖放一个按钮,这个时候编译也可以通过,
然后在资源视图中双击新增的按钮,增加默认的OnBnClickedXXXXX事件处理函数,这个时候编译出现如下错误提示:
error C2065: “IDD_MAINDLG” : 未声明的标识符
error C2143: 语法错误 : 缺少“,”(在“<”的前面)
error C2143: 语法错误 : 缺少“;”(在“public”的前面)
error C2146: 语法错误 : 缺少“;”(在标识符“END_UPDATE_UI_MAP”的前面)
error C2504: “CUpdateUI” : 未定义基类
warning C4183: “BEGIN_UPDATE_UI_MAP”: 缺少返回类型;假定为返回“int”的成员函数
warning C4183: “END_UPDATE_UI_MAP”: 缺少返回类型;假定为返回“int”的成员函数
不知道这是什么原因?是我添加事件处理函数的方式有问题?或者是其他原因,请有方面经验的兄弟指点一下。谢谢!
我使用的是VS.NET 2003,WTL版本为7.5最终稳定发布版,路径设置也没有问题,默认情况下是可以编译通过的。
想问问CCF有没有兄弟用WTL的?我那个问题在CSDN上挂了快两年,居然没人搭理,在google上用“error C2504 CUpdateUI 未定义基类”为关键字搜索,只有两个结果,可见用的人确实不多啊。
在公司的时候自己花了点时间找到了解决办法,可惜公司论坛挂了之后被人给删了,今天又遇到了,再次花时间搞了一下,记录一下,也给比我更菜的兄弟(如果有的话,呵呵)一个机会不走弯路。
我个人认为原因应该是因为IDE默认在.cpp中放置实现代码,而没有添加适当的头文件,导致模板实例化的时候不能找到合适的基类。
解决方法:
在stdafx.h最后添加:
#include <atlframe.h>
#include "resource.h"
(然后可以去掉"你的项目名.cpp"中的相同两行)
在maindlg.h开始添加:
#include "aboutdlg.h"
虽然是解决了,但是resource.h放在stdafx.h里面总觉得怪怪的,不知道有没有其他更好的办法,请高手指教。
- 自己对WTL使用中一个小问题的解决方法
- WTL中CString的使用问题
- WTL中CString的使用问题
- WTL中CString的使用问题
- WTL中使用CString的问题
- WTL 中CUpdateUI类的一个小bug
- WTL中CListViewCtrl的使用
- WTL对 Flash 控件的使用
- 对一个小问题的算法思考
- SimpleDateFormt 使用中遇到的一个小问题
- 在Spring中使用Mysql的一个小问题
- myeclipse中使用debug时遇到的一个小问题
- Struts2中使用json遇到的一个小问题
- cocos中使用tinyxml2遇到的一个小问题
- C++中使用new遇到的一个小问题
- 关于NavigationView在使用中遇到的一个小问题
- 使用hexo+GitHub搭建自己的博客中遇到问题的解决方法及博客美化
- WTL 中使用 CRichEditCtrl
- log级别设置
- IDirect3DDevices9接口怎样应用到简单的二维应用程序里
- Pushing a Geneic List of <T> to View state
- MySQL命令
- 用色彩强调数据
- 自己对WTL使用中一个小问题的解决方法
- VC 实现当拖动一个文件到程序的图标上时,程序自动启动并打开该文件
- XDAIS算法生成向导使用
- ThreadLocal相关
- D3DXLoadSurfaceFromSurface
- ftp下载实现
- NSLog心得
- java 正则表达式
- java之Thread.sleep(long)与object.wait()/object.wait(long)的区别