CMFCButton在分层窗口的子对话框中未单击
CMFCButton not clicked when in a child dialog of a layered window
>Background:
- 创建一个使用 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;
}
相关文章:
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 表单显示对话框函数错误,并且不执行下面的语句
- 在 Win32 应用中,如果未选择文件夹并且用户单击"确定",则文件夹选择对话框将关闭
- CMFCButton在分层窗口的子对话框中未单击
- 对话框菜单不响应单击
- 如何使 UI 对象仅在单击按钮后显示在对话框中
- QT在菜单项上显示模态对话框(.UI)单击
- MFC单击并移动/拖动对话框窗口
- 如果我单击对话框中的项目(ListBox、CheckBox等),OnLButtonDown()不会被激发,但如果我单击背
- 如何修复OnRButtonDown()以检测对话框的右键单击?(使用mfc)
- 单击CEdit和CSpin按钮会导致在MFC对话框中丢失捕获
- 如何防止成员 QWidgets 或 QDialog 对象在鼠标单击对话框后从 QMainWindow 接管关键事件
- 如何告知用户单击了文件名选择对话框中的取消
- Windows 窗体 - 具有父级的 ShowDialog - 为什么在主窗口最大化时单击父级不激活对话框
- 单击对话框关闭按钮时,正确中止线程
- MS Visual C++通过单击按钮启动函数而不阻塞对话框
- 如何确定当用户单击""Cancel""时 FindText 对话框已关闭
- 当我在win32项目c++应用程序中单击菜单项时,如何编写代码来加载一个特殊的对话框?
- 打开一个对话框上的按钮单击
- 如何在 Visual Studio 2010 中单击"从 mfc 对话框"ok""后运行控制台应用程序?