gpt4 book ai didi

c++ - 在分层窗口的子对话框中未单击 CMFCButton

转载 作者:行者123 更新时间:2023-11-28 04:16:00 28 4
gpt4 key购买 nike

背景:

  • 创建一个以 WS_EX_LAYERED 和 GetDesktopWindow() 作为父级的 CWnd
  • 创建一个以分层窗口为父级的CDialogEx
  • 在对话框中添加一个按钮并使用 DDX_Control 使其成为 CMFCButton

问题:

在分层窗口区域内单击,使对话框没有焦点,然后尝试单击对话框上的按钮。按钮不会响应该事件。

备注:

如果按钮只是 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

最佳答案

添加以下代码即可。

BOOL CChildDlg::OnInitDialog()
{
__super::OnInitDialog();

m_btnMFCButton.m_bDontUseWinXPTheme = TRUE; //<-This line specifically

return TRUE;
}

关于c++ - 在分层窗口的子对话框中未单击 CMFCButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56647800/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com