为什么显示无模式对话框总是有问题,大家帮帮忙!!!!!!!!!!!!!!!!

dregy 2005-10-12 06:41:25
我要单击菜单项ID_DIALOG_HIS显示无模式对话框IDD_HISDIALOG
我是这么做的请大家帮忙看看到底哪里有错误
///////////////////////////////////////////////
//HisDialog.cpp

void CHisDialog::OnOK()
{
// TODO: Add extra validation here
GetParent()->SendMessage(WM_USER_HISAPPLY,0,0);
}

void CHisDialog::OnCancel()
{
// TODO: Add extra cleanup here

DestroyWindow();
}

void CHisDialog::PostNcDestroy()
{
// TODO: Add your specialized code here and/or call the base class

CDialog::PostNcDestroy();
GetParent()->SendMessage(WM_USER_HISDESTROY,0,0);
delete this;

}

////////////////////////////////////////////////////////////
//DialogView.h
//...
protected:
CHisDialog* hisDialog;//class CHisDialog:public CDialog
protected:
//{{AFX_MSG(CDialogView)
afx_msg void OnDialogHis();
//}}AFX_MSG
afx_msg LRESULT OnHisApply(WPARAM wParam,LPARAM lParam);
afx_msg LRESULT OnHisDestroy(WPARAM wParam,LPARAM lParam);
DECLARE_MESSAGE_MAP()
//...
//////////////////////////////////////////////////
//DialogView.cpp
//...
CDialogView::CDialogView()
{
// TODO: add construction code here
hisDialog=NULL;

}

void CDialogView::OnDialogHis()
{
// TODO: Add your command handler code here
if(hisDialog!=NULL)
hisDialog->SetFocus();
else
{
hisDialog=new CHisDialog;
hisDialog->Create(IDD_HISDIALOG);
hisDialog->ShowWindow(SW_SHOW);
}
}

LRESULT CDialogView::OnHisApply(WPARAM wParam,LPARAM lParam)
{
MessageBox(_T("kkkkk"));
return 0;
}

LRESULT CDialogView::OnHisDestroy(WPARAM wParam,LPARAM lParam)
{
hisDialog=NULL;
return 0;
}
//...

以上是我的代码大家帮忙看看
编译连接没有错误但是执行是会导致系统错误,为什么???
我的代码有什么错误吗???
...全文
98 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
菜牛 2006-04-16
这个概念是错误的,必须明确指定。比如这个
hisDialog->Create(IDD_HISDIALOG);
改成:
hisDialog->Create(IDD_HISDIALOG, this);
就是指定一个父窗口。
回复
enfeeling 2006-04-16
你去跟踪一下GetParent()
看看有没有得到父窗口
估计是没得到
还有就是你定义了CHisDialog* hisDialog对象以后
要初始化一下hisDialog = NULL;
回复
dregy 2005-10-12
还有一个问题
调试是会出现这么一条警告
Warning: no message line prompt for ID 0x8003.
ID 0x8003是一个菜单项的ID这是什么原因??
回复
dregy 2005-10-12
上面的问题中的
CDialogView中声明了一个成员
CHisDialog* hisDialog
那么对话框hisDialog的父窗口是不是CDialogView呢
也就是说在
void CHisDialog::OnOK()
{
// TODO: Add extra validation here
GetParent()->SendMessage(WM_USER_HISAPPLY,0,0);
}中的GetParent()能不能得到CDialogView的指针??
我有一个概念很混淆
是不是在CWnd1中声明了一个成员CWnd* m_pWnd作为CWnd2的指针,那么CWnd2就是CWnd1的子窗口
CWnd1就是CWnd2的父窗口????
回复
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-10-12 06:41
社区公告
暂无公告