基于对话框的MFC应用程序的子对话框问题
我正编写一个基于对话框的MFC应用程序,并建立了一个模态对话框CBDlg,用来为主对话框CADlg输入画笔的宽度、颜色等值,其上有两个静态文本控件,一个EditContr...
我正编写一个基于对话框的MFC应用程序,并建立了一个模态对话框CBDlg,用来为主对话框CADlg输入画笔的宽度、颜色等值,其上有两个静态文本控件,一个EditControl,一个Button。主对话框的CPP中有
CBDlg mB;mB.DoModal();
并且在CADlg.h中已经包含了CBDlg的头文件。
但是在运行的时候,CBDlg虽然显示,但是不能操作,既不能给EditControl输入内容,也不能点击那个Button,整个子对话框就像是个图片一样,无法操作。请教高手,这是何故,应该如何修改?
若得高手细心指点,将会再追加20分。 展开
CBDlg mB;mB.DoModal();
并且在CADlg.h中已经包含了CBDlg的头文件。
但是在运行的时候,CBDlg虽然显示,但是不能操作,既不能给EditControl输入内容,也不能点击那个Button,整个子对话框就像是个图片一样,无法操作。请教高手,这是何故,应该如何修改?
若得高手细心指点,将会再追加20分。 展开
展开全部
我知道你的意思,你是不是想做一个文档视图结构的程序,然后想在程序打开时做一个打开登录的对话框?
如果是,就这样,先在资源里做出一个对话框,给它添加一个类,然后把要用的函数都写好,然后在类C...(项目名)App里面的InitInstance()里添加像这样的代码:(我们写的程序可能不一样,但是的确要在这个函数里面调用domodel()函数)
BOOL CDlg01App::InitInstance()
{
int nCount=0;
while(nCount<3)
{
CPasswordDlg PassDlg;
if(PassDlg.DoModal()==IDOK)
{
if(PassDlg.m_strUserName.Compare(CString(_T("FBI007")))!=0||
PassDlg.m_strPassword.Compare(CString(_T("USA911")))!=0)
{
MessageBox(NULL,_T("用户名或密码错误,请重试!"),_T("错误信息"),MB_OK|MB_ICONERROR);
nCount++;
}
else
break;
}
else
return FALSE;
}
if(nCount>=3)
{
MessageBox(NULL,_T("密码或用户名输入已超过3次,请退出"),_T("错误信息"),MB_OK|MB_ICONERROR);
return FALSE;
}
// 如果一个运行在 Windows XP 上的应用程序清单指定要
。。。
。。。
如果是,就这样,先在资源里做出一个对话框,给它添加一个类,然后把要用的函数都写好,然后在类C...(项目名)App里面的InitInstance()里添加像这样的代码:(我们写的程序可能不一样,但是的确要在这个函数里面调用domodel()函数)
BOOL CDlg01App::InitInstance()
{
int nCount=0;
while(nCount<3)
{
CPasswordDlg PassDlg;
if(PassDlg.DoModal()==IDOK)
{
if(PassDlg.m_strUserName.Compare(CString(_T("FBI007")))!=0||
PassDlg.m_strPassword.Compare(CString(_T("USA911")))!=0)
{
MessageBox(NULL,_T("用户名或密码错误,请重试!"),_T("错误信息"),MB_OK|MB_ICONERROR);
nCount++;
}
else
break;
}
else
return FALSE;
}
if(nCount>=3)
{
MessageBox(NULL,_T("密码或用户名输入已超过3次,请退出"),_T("错误信息"),MB_OK|MB_ICONERROR);
return FALSE;
}
// 如果一个运行在 Windows XP 上的应用程序清单指定要
。。。
。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请问一下,你的CBDlg是怎么调用的?
感觉是你将CBDlg放在CADlg中的InitDialog()中调用。这样对话框A可能还未完成建立时去调用CBDlg.而且用DoModal()的方式,这样会阻断A的运行。可能会出问题了。
感觉是你将CBDlg放在CADlg中的InitDialog()中调用。这样对话框A可能还未完成建立时去调用CBDlg.而且用DoModal()的方式,这样会阻断A的运行。可能会出问题了。
更多追问追答
追问
我是在CADlg中的菜单中调用的。程序运行没有错误,只是子窗口没法操作。
追答
你在定义CBDlg时选择的基类是什么?
另外,你看看CBDlg的窗口,是不是选择了Child属性?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议看下对话框之间参数传递 最好设为公有的函数 或者成员
更多追问追答
追问
现在不是对话框之间的参数传递,而是子对话框根本不能输入数据,Button也不能点击。
追答
你没有添加响应函数嘛??
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
控件被禁用了?程序发出来看下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询