在分层窗口区域内单击,以便对话框没有焦点,然后尝试单击对话框上的按钮。该按钮将不响应事件。
如果按钮只是CButton,则可以正常工作。可能有人会说,对话框需要具有焦点才能起作用,但是在任何其他情况下并非如此。通常,当我单击对话框上的按钮时,即使以前我的焦点位于完全不同的程序中,它也始终有效。
分层窗口的创建功能:
bool CLayerWnd::Create()
{
if (!__super::CreateEx(WS_EX_LAYERED, DEMOLAYEREDCLASS, _T("Layered Window"), WS_POPUP, 200, 200, 500, 500, ::GetDesktopWindow(), NULL))
return false;
m_childDlg.Create(this);
m_childDlg.ShowWindow(SW_SHOW);
ShowWindow(SW_SHOW);
DrawWindow();
return true;
}
对话框的创建功能:
bool CChildDlg::Create(CWnd *pParentWnd)
{
if(!__super::Create(CChildDlg::IDD, pParentWnd))
return false;
return true;
}
演示VS2015项目:
https://www.dropbox.com/s/ha8o13hfz2kfn97/LayerDemo.zip?dl=0
答案 0 :(得分:1)
添加以下代码,它将起作用。
BOOL CChildDlg::OnInitDialog()
{
__super::OnInitDialog();
m_btnMFCButton.m_bDontUseWinXPTheme = TRUE; //<-This line specifically
return TRUE;
}