高分相送,创建对话框问题
创建了一个CDialog派生类,为什么建了个对象后,能使用的成员函数只有这个DoDataExchange,而不能使用CDialog基类中的函数啊??
void Mydialog::OnOK()
{
// TODO: Add your command handler code here
Mydialog * mm;
mm=new Mydialog;
mm-> DoDataExchange
}
[解决办法]
保护类型的成员函数在外面不能调用
[解决办法]
看调用函数在父类中是什么类型的
[解决办法]
mm-> DoModal();
vc6显示成员函数可能有问题
[解决办法]
class MyDialog:public CDialog
{
};
省去public,默认为private
[解决办法]
只要一个方法实现了, 就能调用, 反正它是一个C++的类嘛
[解决办法]
是不是逻辑上有问题,你的这段代码写在哪里啊?
Mydialog * mm;
mm=new Mydialog;
mm-> DoDataExchange
写在void Mydialog::OnOK() 里?那不是在类的成员函数里调用这个类自己吗?
[解决办法]
可以用啊,只是没提示而已,如dlg.DoModal()等
[解决办法]
一个是模式对话框一个无模式对话框。
void Mydialog::OnOK()
{
Mydialog * mm;
mm=new Mydialog;
mm-> DoDataExchange
}
楼主这是什么意思呀。
再一个函数中创建对话框?
[解决办法]
撑点分~~~:)
怎么能在自己类中的成员函数中添加创建本类的对象呢?
我是初学的,不知道我说对没?
[解决办法]
不是没提示,加上去也不行啊
error C2228: left of '.DoModal ' must have class/struct/union type
包含头文件呀
[解决办法]
创建了一个CDialog派生类,为什么建了个对象后,能使用的成员函数只有这个DoDataExchange,而不能使用CDialog基类中的函数啊??
void Mydialog::OnOK()
{
// TODO: Add your command handler code here
Mydialog * mm;
mm=new Mydialog;
mm-> DoDataExchange
}
少了个C吧
Mydialog * mm;改为
CMydialog * mm
mm=new Mydialog;
mm-> DoModal();
[解决办法]
你把你这个Mydialog类的声明贴出来。另外,虽然可以在类里面创建自身的对象,但是你显然不是这个目的。
[解决办法]
哎,对话框分模态和非模态:
模态
MyDialog dlg;
dlg.DoModal();
非模态:
MyDialog *dlg=new MyDialog;
dlg-> Create(ID,this);
dlg-> ShowWindow(TRUE);
非模态一定要找个地方释放:
delete dlg;
dlg=NULL;
[解决办法]
你的要求很简单啊,怎么会出现你上面的代码呢?创建一个对话框了,然后Class Wizard会自己创建这个对话框类的,默认基类就是CDialog,至于在视图类中弹出对话框这样就可以了:在菜单响应函数是加上如下代码:
MyDialog dlg;
dlg.DoModal();
不过要在视图类中加对话框类的头文件。你的应该是MyDialog.h吧。
[解决办法]
你上面写的在它本身中调用自己的创建的一个对象了,你可以简单点,就是在另外的一个程序中定义一个对象,然后调用它就行了
[解决办法]
你头文件加了没?
你的对话框类的头文件
------解决方案--------------------
你自己创建的对话框资源IDC_Mydialog,再为他弄个类CMydialog,
在你想要按键的那个响应函数中加入:
模态
MyDialog dlg;
dlg.DoModal();
非模态:
MyDialog *dlg=new MyDialog;
dlg-> Create(IDC_Mydialog,this);
dlg-> ShowWindow(SW_SHOW);
在该按所在的类的**.cpp中加入
#include "Mydialog.h "
我个人觉得和添加菜单按键弹出对话框响应一样
个人愚见
[解决办法]
你得将你自己在对话框类中乱加的东西先去掉啊,不去掉当然不行。
[解决办法]
我也是初学,前几天刚弄过LZ要求的对话框,其实很简单的
wltg2001(红猪) :"你的要求很简单啊,怎么会出现你上面的代码呢?创建一个对话框了,然后Class Wizard会自己创建这个对话框类的,默认基类就是CDialog,至于在视图类中弹出对话框这样就可以了:在菜单响应函数是加上如下代码:
MyDialog dlg;
dlg.DoModal();
不过要在视图类中加对话框类的头文件。你的应该是MyDialog.h吧。"
这个完全可以实现
[解决办法]
怀疑楼主没有创建与继续的对话框子类相对应的对话框资源
这么说吧,你新建类的时候在Dialog ID那栏有没有选择对应的对话框
如果没选的话,当然调用DoModal不会成功了
[解决办法]
我也晕,天天都做的工作会不行?
你试一下:
先建一对话框,然后双击它,提示生成一类,要求你输入类名,输入类名后,这个新类生成了,然后在视图类中加入新类的头文件,在消息响应函数中加入:
CXXXDialog dlg;
dlg.DoModal();
这样是不会错了。
[解决办法]
楼主 假如你创建对话框类后,在一个按钮响应函数中弹出这个,这样做:
首先在响应函数文件中添加你的对话框类的(如果你创建的对话框是CXXXDialog类)头文件;
第二,在你的响应函数中添加这样的代码不会有错:
CXXXDialog dlg;
dlg.DoMadol();
[解决办法]
看深入浅出MFC,了解消息的流程.