如何使MFC做的一个对话框在用户登录后才能进行其他操作?
我做了一个对话框,分为上下两部分,上部分为登录,下部分为管理,如何使得只有登陆后才能对下部分进行编辑?也就是说未登录的时候下部分要是灰色的,Edit控件也不能输入数据...
我做了一个对话框,分为上下两部分,上部分为登录,下部分为管理,如何使得只有登陆后才能对下部分进行编辑? 也就是说未登录的时候下部分要是灰色的,Edit控件也不能输入数据
展开
1个回答
展开全部
初始化时直接设置管理部分的每个控件disable,在登录判断成功后,再把控件状态改回来。
设置控件不可用的方法为:EnableWindow( false );
设置控件可用的方法为:EnableWindow( false );
如果有id可以用下面的方法:
CWnd* wnd = GetDlgItem( IDC_COMBO1 );
wnd->EnableWindow( false );
如果都关联了有控件变量,直接用变量修改控件状态:
m_ctrlCombo.EnableWindow( false );
如果控件比较多,或者后面还可能经常改动,但这些管理控件都集中在某一区域,或有其他明显特征,可以查找对话框的所有子空间,判断是管理部分的,就设为disable,在登陆后再设置为enable状态,循环查找控件的方法,可以参考下面的代码:
wnd = GetWindow( GW_CHILD );
while( wnd )
{
//控件id
int id = wnd->GetDlgCtrlID();
//文本
CString text;
wnd->GetWindowTextW( text );
//位置
RECT rc;
wnd->GetWindowRect( &rc );
//根据得到的窗体信息,判断是否需要disable还是enable
BOOL bEnable = FALSE;
//更改控件状态
wnd->EnableWindow( bEnable );
//下一个控件
wnd = wnd->GetNextWindow();
}
设置控件不可用的方法为:EnableWindow( false );
设置控件可用的方法为:EnableWindow( false );
如果有id可以用下面的方法:
CWnd* wnd = GetDlgItem( IDC_COMBO1 );
wnd->EnableWindow( false );
如果都关联了有控件变量,直接用变量修改控件状态:
m_ctrlCombo.EnableWindow( false );
如果控件比较多,或者后面还可能经常改动,但这些管理控件都集中在某一区域,或有其他明显特征,可以查找对话框的所有子空间,判断是管理部分的,就设为disable,在登陆后再设置为enable状态,循环查找控件的方法,可以参考下面的代码:
wnd = GetWindow( GW_CHILD );
while( wnd )
{
//控件id
int id = wnd->GetDlgCtrlID();
//文本
CString text;
wnd->GetWindowTextW( text );
//位置
RECT rc;
wnd->GetWindowRect( &rc );
//根据得到的窗体信息,判断是否需要disable还是enable
BOOL bEnable = FALSE;
//更改控件状态
wnd->EnableWindow( bEnable );
//下一个控件
wnd = wnd->GetNextWindow();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询