没有看明白你的意思:
你好象是要在CA的OnInitDialog中调用DoSomething,希望结果
是运行CChild的DoSomething.
如果是这样,上面是不行的.
你好象是要在CA的OnInitDialog中调用DoSomething,希望结果
是运行CChild的DoSomething.
如果是这样,上面是不行的.
解决方案 »
- CFile 写文件错误,求教
- _tfgets函数到底在哪个头文件呢?
- PE文件的参数
- 如果COM组件编译的结果是exe, 改怎么调用哦
- 怎样使屏幕抖动?VC
- 编译成release版本与debug版本的程序有何执行上的区别?
- 小弟我要做一个输入法,请做过的大狭进来谈谈做的方法,让我有个输入,或者提供一些相关的资料,一定高分重谢
- CSocket onreceive函数怎么能持续接收数据
- MFC 对话框控件错位
- 在VC++60MFC中,在哪儿设置窗口的坐标系统最合适?
- 哪位知道哪里可以找到汉字的字库,并且怎样找到指定汉字在字库中的位置,并读出这个汉字的点阵信息
- 一个关于十六进制与字符串以及十进制之间的转换问题!
那我能不能再加上
CChild::OnInitDialog(参数){DoSomething();}
这样行不行?
g_hWnd又是全局变量
而且没有运行CChild的DoSomething()函数
而且没有运行CChild的DoSomething()函数
webber84(糕鱼昏) :是CChild 的了
那么在调用时动态决议是调用哪一个DoSomething.
不管你定义了CA还是CChild类型的指针或引用,要看它具体指向或引用那个类型的实例,才会调用该实例的类的DoSomething.
这样作是可以的,关键看你怎么用.
CA *p ;
p = new CChild;
你的create(g_hWnd)是怎么回事?上面写了你是如何创建类变量的了,那剩下的问题是你如何创建窗口的了?
所以跟CDialog有点不一样的
Create(HWND,long)
OnInitDialog里面了
但问题是根本没调用CChild的OnInitDialog函数
[email protected]
CA的头文件还有
BEGIN_MSG_MAP(CVideoManager)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
CChild的头文件里有
BEGIN_MSG_MAP(CVideoManagerChild)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
自然两边都还有enum{IDD=各自的对话框ID了};
我觉得问题可能出在CA的构造函数里有Create()窗口函数
CChild里没有,任何当调用CChild时,先调用父类的构造函数,建立了
父类的窗口了,所以显示的是CA的窗口
请高手帮忙想想解决办法
B.h
class B : public ****
{
B()
{
}
...
virtual void CreateWindow()
{
Cretate(g_hWnd);
}
}D.h
class D : public B
{
D()
{
}
...
virtual void CreateWindow()
{
Cretate(g_hWnd);
}
}调用方式改为:
B* p = new D;
p = new CVideoManagerChild ;
p->CreateWindow();上面两步不要再合而为一,构造函数里调用虚函数会死的很难看的
我怀疑问题在于CA *p这个定义上
是不是这样定义后,不管以后它怎么指,它显示的时候都显示A的对话框
而不显示CChild的对话框?