我在主对话框的OnInitDialog中加入了CPropertySheet的创建代码,如下
m_propertySheet.AddPage(...)
m_propertySheet.Create( this, WS_CHILD | WS_VISIBLE );
来创建一个嵌入到主窗口的PropertySheet子窗口
但是在这之后如果调用MessageBox则主窗口和MessageBox都无法看见,只听到一声MessageBox创建的声音
我和别人讨论了一下发现只要加上SetFocus就可以了
之后发现在每个CPropertyPage(在m_propertySheet中的Page)的消息处理函数中也必须加上SetFocus,不然在切换窗口的时候也会发生类似的问题
如果不把Property Sheet作为子窗口(WS_CHILD)那么就没有上述问题请问这是为什么?
m_propertySheet.AddPage(...)
m_propertySheet.Create( this, WS_CHILD | WS_VISIBLE );
来创建一个嵌入到主窗口的PropertySheet子窗口
但是在这之后如果调用MessageBox则主窗口和MessageBox都无法看见,只听到一声MessageBox创建的声音
我和别人讨论了一下发现只要加上SetFocus就可以了
之后发现在每个CPropertyPage(在m_propertySheet中的Page)的消息处理函数中也必须加上SetFocus,不然在切换窗口的时候也会发生类似的问题
如果不把Property Sheet作为子窗口(WS_CHILD)那么就没有上述问题请问这是为什么?
{
if (wParam == WA_INACTIVE && NULL != HWND(lParam))
{
return ::DefWindowProc(m_hWnd,WM_ACTIVATE,wParam,lParam);
}
return CDialog::DefWindowProc(WM_ACTIVATE,wParam,lParam);
}
m_sheet.ModifyStyleEx(0, WS_EX_CONTROLPARENT);
尤其感谢flyelf给出解决方案。
我发现以后找问题还是要到网上的MSDN去找阿