问题描述
- mfc mdi窗口最小化状态恢复后没有自动刷新
-
程序刚运行时的界面
可能是垂直工具条加上以后导致的,之前好像没有这种情况
垂直工具条时用CDockablePane里面嵌一个CMFCToolbar做的,代码为#include "stdafx.h"
#include "ToolboxPane.h"
#include "resource.h"CToolboxPane::CToolboxPane(void)
{
}CToolboxPane::~CToolboxPane(void)
{
}IMPLEMENT_DYNAMIC(CToolboxPane,CDockablePane)
BEGIN_MESSAGE_MAP(CToolboxPane, CDockablePane)
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_PAINT()
END_MESSAGE_MAP()int CToolboxPane::OnCreate( LPCREATESTRUCT lpCreateStruct )
{
if (!m_toolbar.CreateEx(this, TBSTYLE_FLAT, CBRS_ORIENT_VERT | WS_CHILD | WS_VISIBLE | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_toolbar.LoadToolBar(IDR_TOOLBOX,0,0,TRUE,0,0,IDB_TOOLBOX))
{
TRACE0("未能创建工具栏n");
return -1; // 未能创建
}CSize sz = m_toolbar.CalcSize( TRUE ); m_toolbar.StretchPane( sz.cx, FALSE ); m_toolbar.AdjustLayout(); return 0;
}
void CToolboxPane::OnSize( UINT nType, int cx, int cy )
{
CDockablePane::OnSize(nType, cx, cy);CSize sz = m_toolbar.CalcSize( TRUE ); m_toolbar.StretchPane( sz.cx, FALSE ); m_toolbar.AdjustLayout();
}
void CToolboxPane::OnPaint()
{}
是不是少什么事件处理了?
解决方案
你需要在OnDraw,OnPaint中重绘控件
解决方案二:
在OnSize中刷新窗口。否则不会触发OnDraw