我有这样的代码:
m_pBtnCom = new CButton();
m_pBtnCom->Create(_T("Push"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_TEXT|BS_VCENTER|BS_CENTER, rc, this, BTN_CMT); Where:
this = my派生的CWnd classrc = CRect按钮positionBTN_CMT =按钮id当前上下文:
如果通过调用CWnd来禁用父EnableWindow(FALSE),即使我在按钮(m_pBtnCom->EnableWindow(TRUE))上调用函数EnableWindow(TRUE) (m_pBtnCom->EnableWindow(TRUE)),后者仍然是禁用的;因此,对它没有任何作用:单击、工具提示、.
我试图删除WS_CHILD,但没有成功。
问题:
当窗口(我的代码中的参数this )被禁用时,是否可以激活该按钮?
发布于 2021-08-21 14:55:16
当父窗口被禁用时,不能独立启用子窗口。相反,您可以启用所有子程序,然后返回并启用特定按钮。
注意,如果您有IDCANCEL按钮,并且禁用它,那么对话框的“关闭”按钮也不能正常工作,并且会引起混淆。您可能希望避免禁用“取消”按钮并重写OnCancel。
void CMyDialog::enable_children(bool enable)
{
auto wnd = GetWindow(GW_CHILD);
while (wnd)
{
wnd->EnableWindow(enable);
wnd = wnd->GetWindow(GW_HWNDNEXT);
}
}
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
enable_children(FALSE);
//re-enable one button
if(GetDlgItem(IDCANCEL)) GetDlgItem(IDCANCEL)->EnableWindow(TRUE);
return TRUE;
}
void OnCancel()
{
MessageBox(L"cancel...");
CDialog::OnCancel();
} https://stackoverflow.com/questions/68688148
复制相似问题