MFC中最小化后客户区的内容没有了~~怎么办(急!急!急!)

来源:百度知道 编辑:UC知道 时间:2024/06/17 06:05:40
void CMy02View::OnMiniTree()
{
// TODO: Add your command handler code here
CMiniTree dlg;
CDC *pDC=GetDC();
MGraph* G;
if(dlg.DoModal()==IDOK){

//Invalidate();
UpdateWindow();

G=Creat_Vexs_Arcs(dlg.m_nVexs,dlg.m_nArcs);

char u;
u=G->vexs[0];
MiniSpanTree_PRIM(pDC,G,u);//做最小生成树,并输出之

}

}

输出最小生成树后,最小化后在还原就没有了,为什么呢

我第一次用MFC,请大家帮忙

怎么才能让它不消失??

谢谢!!

当窗口大小改变时,窗口过程处理函数会收到一个WM_PAINT消息告诉程序窗口大小变化了,windows不会自动帮你重绘客户区内容,但是会发送这个消息,你需要拦截这个消息然后在里面添加每次窗口大小变化所需要重绘的内容。

注意,当窗口建立,最大化,最小化,拖动边框使其增大缩小,以及被其他窗口覆盖,都会发送这个WM_PAINT

拦截的方法在mfc中就是利用classwizard添加OnPaint函数,它就是MFC中WM_PAINT的消息响应函数,在里面添加你想在每次变化后想重新输出的东西

注意重绘

refresh()

需要在WM_PAINT(OnPaint)消息处理函数中来绘制,这样才能保证窗口被重绘后(最小化再还原就会导致重绘了),你的绘制代码被调用到。
而你上面的代码只有在点击MiniTree按钮才会被调用到。