简直无语了void CMyFunctionsDlg::OnBnClickedButton2() { // TODO: Add your control notification handler code here int msg = MessageBox(_T("Text"),_T("caption"),MB_ICONQUESTION|MB_OKCANCEL); switch(msg) { case IDOK:CDialog::OnOK();break; case IDCANCEL:break; } }这是我写的一个测试,对话框按钮按下后弹出一个带“确定”和“取消”的消息框,点确定后消息框和对话框都退出了,点“取消”则消息框退出而对话框还在要不你的工程传上来看看,传到你的资源里
{
if(::MessageBox(m_hWnd,_T("空缺部分将使用默认值"),_T("消息提示"),MB_OKCANCEL) == IDCANCEL)
return;
CDialog::OnOK();
}
当我点击属性页上的“确定”时,用messagebox弹出一个消息询问对话框,当再点击询问对话框上的“取消”时,两个对话框都关闭了,现在是想不关闭属性页对话框;感觉属性页对话框上的“确定”按钮触发的关闭属性对话框,就是不知道如何更改
{
// TODO: Add your control notification handler code here
int msg = MessageBox(_T("Text"),_T("caption"),MB_ICONQUESTION|MB_OKCANCEL);
switch(msg)
{
case IDOK:CDialog::OnOK();break;
case IDCANCEL:break;
}
}这是我写的一个测试,对话框按钮按下后弹出一个带“确定”和“取消”的消息框,点确定后消息框和对话框都退出了,点“取消”则消息框退出而对话框还在要不你的工程传上来看看,传到你的资源里
类创建的属性页,我是先点击属性页上的“确定”,弹出消息对话框后,再点击消息对话框上的“取消”,两个对话框同时消失,想实现只消失消息对话框
最关键的是,你应该从CPropertySheet派生一个类CMySheet,然后重写他的OnOK函数:
void CMySheet::OnOK()
{
if(MessageBox("Hello World","Tip",MB_OKCANCEL)==IDCANCEL)
return;
CPropertySheet::EndDialog(IDOK);
}如果你没重写这个函数,那不管怎么样都是会执行CPropertySheet::EndDialog(IDOK);导致属性页退出
在CAnalysisOptions下重写函数OnApply(),这个函数会调用OnOK;
之后需要把原来OnOK的代码剪切复制到OnApply下。
为方便看,我把没用到的变量都删掉了。需要的话自己再加吧。BOOL CAnalysisOptions::OnApply()
{
CString VAR_EDIT[VAR_COUNT]
//判断变量名是否为空
static BOOL flag = FALSE;
for (int i = 0; i < VAR_COUNT; i++)
{
if ((VAR_EDIT[i]).IsEmpty())
{
flag = TRUE;
VAR_EDIT[i] = VAR_DEFAULT[i];
}
}
BOOL USINGDEFAULT = FALSE;// 改了这里
if (flag)
{
flag = FALSE;
int msg = MessageBox("空缺部分将使用默认值","消息提示",MB_OKCANCEL|MB_ICONQUESTION);
switch(msg)
{
case IDOK:
USINGDEFAULT = TRUE;// 改了这里
break;
case IDCANCEL:
USINGDEFAULT = FALSE;// 改了这里
break;
}
}
if(USINGDEFAULT)// 改了这里
//{
return CPropertyPage::OnApply();// 改了这里
//}
else
return FALSE;// 改了这里
}
void CAnalysisOptions::OnOK()这个函数会在按下“确定”后执行,但控制不了属性页的退出与否所以你应该是在CPropSheet中重写OnOK://CPropSheet.h
virtual void OnOK();//CPropSheet.cpp
ON_COMMAND(IDOK,OnOK)void CPropSheet::OnOK()
{
if(MessageBox("Hello World","Tip",MB_OKCANCEL)==IDCANCEL)
return;
CPropertySheet::EndDialog(IDOK);
}