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

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;
}
//...

以上是我的代码大家帮忙看看
编译连接没有错误但是执行是会导致系统错误,为什么???
我的代码有什么错误吗???
...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 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的父窗口????

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧