读书人

请教怎么在自定义的类中使用对话框类?

发布时间: 2012-02-11 09:51:34 作者: rapoo

请问如何在自定义的类中使用对话框类?谢谢!
请教一个问题:
我在一个工程中添加了一个自定义的C++类:
class A
{
.....
void test();
}

利用对话框资源编辑器向工程中添加一个对话框ID=IDD_PRO_DLG,对话框类为CProDlg,头文件为proDlg.h
我想在类A的方法test()函数中使用对话框类生成一个对话框,做法如下:
在A.cpp中使用#include "proDlg.h"包含对话框类头文件,然后在test()中添加如下代码:
void test()
{
...
CProDlg tempdlg;
tempdlg.DoModal();
}


编译时出错提示:
error C2065: 'IDD_PRO_DLG' : undeclared identifier

请问这个是什么原因?是不是在自定义的类中无法使用对话框呀?改如何解决?多谢!

[解决办法]
哪个文件的错误?#include "resource.h"
[解决办法]
对话框资源ID(IDD_XXX)的定义在resource.h文件中。哪儿需要资源ID哪儿就需要#include "resource.h"
[解决办法]
编译的时候是只编译cpp文件,h文件是不会编译,只会根据需要插入到cpp文件中去。

假如你有两个头文件a.h,b.h

在c.cpp中一次包含了
#include "a.h"
#include "b.h"

如果在a.h中有包含了resource.h,那么在b.h中使用resource.h里面的ID,c.cpp是不会报错的。

但是如果d.cpp只有
#include "b.h" ,那么d.cpp是会报错的,找不到这个ID,就是类似你这样的错误。

一般情况下系统生成的proDlg.cpp文件,会自动的包含了你的工程头文件myApp.h,而这个头文件里面有resource.h
[解决办法]
顶LS,resource.h已经被include到工程头文件里了。你要在proDlg.cpp中include 工程头文件

读书人网 >VC/MFC

热点推荐