我想验证对话框中控件的内容。
如果输入的不符合要求弹出错误信息,可是对话框也关闭了。
我曾经想过重写OnOk(),没能成功。点击确定什么事都不管了。
后来我用了个笨办法,就是做了个循环,验证完再打开对话框,虽然成功了,但是这也太麻烦了。
ddv我也试过,不能满足要求呀。用ddv验证时,弹出错误信息后对话框就不关闭,很神奇,怎么实现的呀?
如果我自己做的验证也能像ddv似的就好了,请各位高手帮忙!
我做的代码是这样的:
int i=1;
while(i)
{
if(mdlg1.DoModal()==IDOK)
{
if(mdlg1.m_mode_e1==0&&mdlg1.m_mode_e2==""&&mdlg1.m_mode_e3=="")
{
MessageBox("请至少输入一个信息!");
continue;
}
if(mdlg1.m_select==0)
{
MessageBox("请选择一个信息!");
continue;
}
if(mdlg1.m_select==1&&mdlg1.m_mode_e1==0)
{
MessageBox("选择和输入的内容不一致!");
continue;
}
if(mdlg1.m_select==2&&mdlg1.m_mode_e2=="")
{
MessageBox("选择和输入的内容不一致!");
continue;
}
if(mdlg1.m_select==3&&mdlg1.m_mode_e3=="")
{
MessageBox("选择和输入的内容不一致!");
continue;
} select=mdlg1.m_select;
...............
i=0;
}
else
{
i=0;
}
}
如果输入的不符合要求弹出错误信息,可是对话框也关闭了。
我曾经想过重写OnOk(),没能成功。点击确定什么事都不管了。
后来我用了个笨办法,就是做了个循环,验证完再打开对话框,虽然成功了,但是这也太麻烦了。
ddv我也试过,不能满足要求呀。用ddv验证时,弹出错误信息后对话框就不关闭,很神奇,怎么实现的呀?
如果我自己做的验证也能像ddv似的就好了,请各位高手帮忙!
我做的代码是这样的:
int i=1;
while(i)
{
if(mdlg1.DoModal()==IDOK)
{
if(mdlg1.m_mode_e1==0&&mdlg1.m_mode_e2==""&&mdlg1.m_mode_e3=="")
{
MessageBox("请至少输入一个信息!");
continue;
}
if(mdlg1.m_select==0)
{
MessageBox("请选择一个信息!");
continue;
}
if(mdlg1.m_select==1&&mdlg1.m_mode_e1==0)
{
MessageBox("选择和输入的内容不一致!");
continue;
}
if(mdlg1.m_select==2&&mdlg1.m_mode_e2=="")
{
MessageBox("选择和输入的内容不一致!");
continue;
}
if(mdlg1.m_select==3&&mdlg1.m_mode_e3=="")
{
MessageBox("选择和输入的内容不一致!");
continue;
} select=mdlg1.m_select;
...............
i=0;
}
else
{
i=0;
}
}
解决方案 »
- 子窗口置顶(具有WS_EX_TOPMOST属性),当点击其他进程时依然置顶!
- MFC如何发送一个关闭对话框消息
- 消息队列问题
- 怎么才能在注册表指定的位置写入一个字符串
- 用Shell扩展写ContextMenu,调试时出错!
- 小问题(轻松拿分,up有分)----复数类如何使用!~
- 添加了 #import "c:\Program Files\Common Files\SYSTEM\ADO\msado15.dll" no_namespace rename("EOF","ADOEOF") 以后怎么会出现编译警告
- 线程中调用回调函数导致程序崩溃
- 如何实现 指定文件夹里的文件向另一指定文件夹的定时自动拷贝 功能??
- 一个问题,请大家帮忙翻译一下!
- 想找一个女朋友。
- 如何得到多行CEdit中的每一行的字符串?
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
DDX_Text(IDC_EDIT1, m_str);
// 验证m_str
if(pDX->m_bSaveAndValidate){
if(m_str.GetLength() < 10) // 如果m_str的内容长度不足10个字符,则不行
{
AfxMessageBox("请至少输入10个字符!");
pDX->Pail();
}
}
DDX_....
}
{
if(pDX->m_bSaveAndValidate){
if(str.GetLength() < len) // 如果m_str的内容长度不足10个字符,则不行
{
CString strMsg;
strMsg.Format("请至少输入%d个字符!", len)
AfxMessageBox(strMsg);
pDX->Pail();
}
}
}你可以根据自己的需要,按这种格式做成各种各样的数据验证函数
谢谢你!!!!!!!!!!