如题,我自己按书上的方法写了一个小程序,目的是练习在菜单中调出一个无模式对话框,
对话框的类名为CTestDlg
相关的代码如下:
void CTestDlg::Create() //这是我自己加的一个成员函数,是照书写的
{
CDialog::Create(CTestDlg::IDD);//这一句是照书写的,我还没太明白它的作用
}CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/) //默认的构造函数
: CDialog(CTestDlg::IDD, pParent)
{
//代码为自动生成的,没有改动,故省略
}
在CView里添加了一个CTestDlg的指针,并包含了头文件"TestDlg.h"
class CTestView : public CView
{
protected:
CTestDlg* pDlg;
};cview中相关代码如下
CTestView::CTestView()
{
// TODO: add construction code here
pDlg = new CTestDlg((CWnd*)this);
}
CTestView::~CTestView()
{
delete pDlg;
}
void CTestView::OnTestDlg() //菜单响应函数
{
// TODO: Add your command handler code here
if (pDlg->GetSafeHwnd()==0)
{
pDlg->Create();
}
}
编译无错误,但运行时点菜单后对话框并没显示出来,请问应该如何修改?
对话框的类名为CTestDlg
相关的代码如下:
void CTestDlg::Create() //这是我自己加的一个成员函数,是照书写的
{
CDialog::Create(CTestDlg::IDD);//这一句是照书写的,我还没太明白它的作用
}CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/) //默认的构造函数
: CDialog(CTestDlg::IDD, pParent)
{
//代码为自动生成的,没有改动,故省略
}
在CView里添加了一个CTestDlg的指针,并包含了头文件"TestDlg.h"
class CTestView : public CView
{
protected:
CTestDlg* pDlg;
};cview中相关代码如下
CTestView::CTestView()
{
// TODO: add construction code here
pDlg = new CTestDlg((CWnd*)this);
}
CTestView::~CTestView()
{
delete pDlg;
}
void CTestView::OnTestDlg() //菜单响应函数
{
// TODO: Add your command handler code here
if (pDlg->GetSafeHwnd()==0)
{
pDlg->Create();
}
}
编译无错误,但运行时点菜单后对话框并没显示出来,请问应该如何修改?
解决方案 »
- MFC 中单文档修改默认的视图!!!
- 句柄泄漏,GDI泄漏,内存泄漏
- CRichEditCtrl里插入Ole对象问题
- IOCP 入门级别问题。超级超级入门。。。走过路过不要错过
- 请问怎样获取CStatic控件的背景,以及把背景存为bmp文件
- 请问:如何在对话框上做一个类似QQ左边的面板,并且支持动态增删.急!急!急!高分奉送!
- 菜鸟问题:两个CGroupBox放在一起其中有一个不能显示?
- windows 98应用程序访问 2K上的DCOM服务被拒绝,该怎样设置?
- TranslateTransform怎么设置不了旋转中心啊,感觉总是出现偏移
- InstallSheild 怎么知道一个服务在哪个账户下运行?
- 用ado的connection对象插入记录为什么最后一条插不上?
- 能否捕获最小化所有窗口的消息?
我加了,还是不好用:-(
{
//pDialog initialized to NULL in the constructor of CMyWnd class
pDialog = new CMyDialog();
//Check if new succeeded and we got a valid pointer to a dialog object
if(pDialog != NULL)
{
BOOL ret = pDialog->Create(IDD_MYDIALOG,this);
if(!ret) //Create failed.
AfxMessageBox("Error creating Dialog");
pDialog->ShowWindow(SW_SHOW);
}
else
AfxMessageBox("Error Creating Dialog Object");
}
应该是
pDlg->ShowWindow(SW_SHOW);另外,也请教一下,
if (pDlg->GetSafeHwnd()==0)这一句的道理是什么?为什么要判断指针是否为空呢?
输入Create()的两个参数,第一个是对话框资源号,第二个是父窗口指针;
然后调用pDlg->ShowWinddow(SW_SHOW);刚才打错了,不好意思