天天进步2015 2015-09-18 02:21 采纳率: 75%
浏览 2668
已采纳

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()
{

}

是不是少什么事件处理了?

  • 写回答

2条回答 默认 最新

  • oyljerry 2015-09-18 05:14
    关注

    你需要在OnDraw,OnPaint中重绘控件

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 我想在一个软件里添加一个优惠弹窗,应该怎么写代码
  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流