对于同一个Dialog资源,在不同的环境中可能需要显示的方式不一样。本人在开发中遇到的就是这种问题,在一种环境中需要的是对话框做嵌入式child显示,而另一处环境需要的是popup弹出式显示,有的人说弄两个资源,一个是子对话内嵌另一个是弹出式对话框,这样又不免重复了。
首先,资源里的对话框设置为CHILD类型嵌入式对话框,对话框类重写虚函数virtual void PreSubclassWindow(),类中增加一个标识变量(是否模态显示) BOOL m_bIsModal,
void CMyDlg::PreSubclassWindow()
{
if ( m_bIsModal)
{
if(m_hWnd != NULL)
{
//获得当前的风格
LONG lStyle = GetWindowLong(m_hWnd, GWL_STYLE);
lStyle &