我创建了一个模态对话框CTestDlg,CTestDlg上面有个static控件,我用static控件的dc在CTestDlg::Onpaint()里画图,在CTestDlg模态对话框上创建了一个非模态对话框CChildDlg,CChildDlg非模态对话框的大小位置和CTestDlg上的static控件位置一样,我现在写的代码在刚开始显示对话框时,子对话框的onpaint里的画图和static控件上的画图能同时显示出来,但是当我按下鼠标,在非模态对话框的OnLButtonDown里调用了Invalidate()重画窗口后,static控件里的画图就没有了,怎样使static控件和非模态子窗口上的画图一直同时显示?还有如果static控件dc的画图如果我不在CTestDlg::Onpaint()里画图,而是用一个线程来画图,它会不会挡住子窗口的画图,使子窗口的内容无法显示?要怎样让两个窗口的内容能同时叠加显示?

解决方案 »

  1.   

    1.在非模态的对话框中调用InvalidateRect()将父窗口的句柄传给这个函数就可以了,同时将来两个窗口强制刷新。
    2.不会,两个对话框各有自己的DC,不管你用不用线程,都一样,DC没变
      

  2.   

    在非模态对话框里加InvalidateRect()后虽然鼠标按下后能显示父窗口内容,但是窗口会一直闪,而且在非模态对话框上画图,如果static控件里的这个位置也有内容要显示,static控件的内容会挡住非模态对话框的内容,按理不是应该非模态对话框的内容挡住static控件吗?