调试追踪DoModal的执行过程发现对话框显示的位置在 CWnd::RunModalLoop(DWORD dwFlags)中
BOOL bShowIdle = (dwFlags & MLF_SHOWONIDLE) && !(GetStyle() & WS_VISIBLE);
……
if (bShowIdle)
{
ShowWindow(SW_SHOWNORMAL); //这里显示出来了
UpdateWindow();
bShowIdle = FALSE;
}
而CWnd::RunModalLoop(DWORD dwFlags)没有提供重载接口我们只能修改传入的参数
再返回到DoModal中我们发现 DWORD dwFlags = MLF_SHOWONIDLE;
于是我们修改DWORD dwFlags = 0;// MLF_SHOWONIDLE;
即达到了模态对话框也受WS_VISIBLE风格控制的效果