怎么使动态弹出的非模式对话框的界面不被底层下层对话框中的控件(例如按钮,静态文字)重绘在它上面

如何使动态弹出的非模式对话框的界面不被底层下层对话框中的控件(例如按钮,静态文字)重绘在它上面
由于呢个对话框资源在用之前 在属性对话页面已经设置了 Border属性为None. Style属性为Child
因为我是把这种对话框放到我的CTab页面中

现在,我又有其他需要重新Create一个这样的对话框用做其他用途显示.
所以我在主对话框的一个按钮里这样做了:
void CMYmainDlg::::Onbutton1()
{
bool static bcreate=true; //只新建一个
static CSheetPage page1; //CSheetPage为用这对话框生成的类
page1.pagename=strTemp; //一个成员变量而已
if (bcreate )
{
page1.Create(CSheetPage::IDD,NULL);//在这里我用了this,GetParent(),NULL效果都一样
page1.ModifyStyle(WS_CHILD,WS_POPUP|WS_BORDER|WS_VISIBLE|WS_DLGFRAME|WS_MINIMIZEBOX,0 );//应该是这里,//但我也都尝试了好多种值了
page1.ModifyStyleEx(0,WS_EX_TOPMOST,0);

bcreate=false;
}

page1.ShowWindow(SW_HIDE);//这里我打算先把他隐藏再弹出都不行
  page1.ShowWindow(SW_SHOW);
page1.SetWindowText(strTemp);
page1.SetWindowPos(&wndTop,0,15,0,0,SWP_NOSIZE|SWP_SHOWWINDOW);
//page1.DrawList();//一个自己的函数不影响的,与题目无关
page1.Invalidate();//没用依然被下面的按钮覆盖那部分
}


现在就是弹出时,界面被下层的按钮画花了~就算移动后一点下层的主对话框,界面又花了,最小化还原有一样花~
应该如何解决~


------解决方案--------------------
在做一个对话框资源,不要设置child风格。
------解决方案--------------------
看样子是对话框的OnPaint里面的问题,将代码贴出;如果处理了WM_ERASEBKGND消息,也贴出代码。
------解决方案--------------------
就像放CTab中一样,简单地做一个标准的弹出对话框,把你的那个孩子放在上面
------解决方案--------------------
WM_CHILD风格在创建后再修改就没有作用了,除非SetParent把父窗口改掉,不过这样窗口之间失去了父子关系,就不能让子窗口保持在父窗口之前了。最好的做法就是添加一个对话框资源(复制粘贴一下就可以了),不要设置child风格。
------解决方案--------------------
RECT rt;
page1.GetWindowRect(&rt);
page1.ModifyStyle(WS_CHILD, ……
page1.SetParent(NULL);
page1.MoveWindow(&rt);
这种做法无法保证子窗口一直在父窗口前面。
重载函数都是在CreateWindow之后才被调用的,来不及去掉WS_CHILD风格。
不知道你为什么不再做个对话框资源,有这时间早就处理完了。