dockablepane-mfc mdi窗口最小化状态恢复后没有自动刷新

问题描述

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

时间: 2024-12-30 07:47:07

dockablepane-mfc mdi窗口最小化状态恢复后没有自动刷新的相关文章

关于在MFC中将窗口最小化到托盘实现原理及操作步骤_C 语言

步骤/方法 (一) 原理 1.最小化的原理:首先要将窗口隐藏,然后在右下角绘制图标. 2.恢复的原理:将窗口显示,再将托盘中的图片删除. (二)程序实现 1.自定义消息WM_SHOWTASK: #define WM_SHOWTASK (WM_USER +1) 2.在MFC的 ::OnSysCommand(UINT nID, LPARAM lParam) 函数体中增加一个命令响应 if(nID==SC_MINIMIZE) ToTray(); //最小化到托盘的函数 3.在消息映射中添加 ON_ME

如何用代码来最小化或恢复程序

你能够用下面三种方法之一来实现它. 方法一:发送一条Windows消息到主窗口的Handle属性或 Application->Handle.这条消息就是 WM_SYSCOMMAND,将 wParam 设为 SC_MINIMIZE 或 SC_RESTORE.你可以调用SendMessage API函数来发送消息. // 设置WPARAM为SC_MINIMIZE来最小化窗口 SendMessage(Application->Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0

.net 主窗口最小化后屏幕区域出现影像错乱

问题描述 .net 主窗口最小化后屏幕区域出现影像错乱 用vb.net写了一个监控程序,在tablelayoutpanel 中加入了多个模块化的自定义控件,自定义控件带有timer定时刷新,平时最大化应用没出现过什么问题,但是当有其他窗口覆盖或者当该程序最小化之后,原来的自定义控件区域(此时该区域应该不存在焦点之类的问题)就会出现匪夷所思的影像错乱,若果点击该区域的图标位置也会出现失焦. 如图,此时监控程序最小化,同时打开我的文档(为当前活动窗口),黑块部分是原监控程序最大化时tablelayo

C#窗口最小化后还原窗口时TableLayoutPanel画屏

问题描述 如题所示,C#窗口最小化后还原窗口时TableLayoutPanel里面所有的东西都花了盼望大神指点. 解决方案 解决方案二:自己顶一下,求大神指点解决方案三:控件放多了吧.导至刷不过来了.解决方案四:如图所示,就那么几个,不至于太多吧最下面那个表格还是另一个自定义空间呢解决方案五:什么花?是闪烁吗?http://www.cnblogs.com/wuhenke/archive/2012/09/26/2704081.html解决方案六:引用4楼ajianchina的回复: 什么花?是闪烁

关于窗口最小化后、还原的问题

问题描述 需求:我自己写的一个程序(暂且叫From1),来调用第三方程序(aaa.exe)第三方程序的主画面的某个button按下后会呼出一个popUp画面,此时主画面关闭,只剩下popUp画面.然后popUp画面上按下最小化按钮.此时,在任务栏上有个矩形的"图标按钮"(别理解错了,不是指托盘图标).问题:在我的程序上怎么实现,让这个第三方程序的popUp画面显示成最小化按钮按下前popUp画面显示的状态.这里有个神奇的现象,如果你按任务栏上的"图标按钮"进行最小化

各种窗口最小化快捷键详解

  一.ALT+Esc 可以使当前窗口最小化. 二.Win+D 最小化所有窗口,再按一下就可以还原窗口. 三.Windows+M 最小化所有窗口 . 四.Windows+Shift+M 还原最小化的窗口. 五.Alt+空格+N 最小化当前窗口(和浏览器的最小化一样) 六.ALT+TAB 这个是切换窗口的按钮,切换到另外一个窗口,这个窗口自然也可以最小化.

c# richtextbox 在窗口最小化后,最大化后数据不显示

问题描述 看上图,c#写的Activex控件,继承子userContrl类.在1图上赋值后都能显示,但是我把窗口最小化,在最大化后richtextbox数据就不显示了,需要用鼠标在里面选中才能显示数据.还有我把窗口左移出桌面也是相同状况,我重写了一下onPaint()函数就可以了protectedoverridevoidOnPaint(PaintEventArgse){this.richTextBox1.Invalidate();base.OnPaint(e);}但是现在最小化,在最大化还是不行

VC 制作系统托盘程序实现将窗口最小化到系统托盘

VC 制作系统托盘程序实现将窗口最小化到系统托盘 2008年01月11日 星期五 10:24 前段时间因为要用到系统拖盘,所以研究了一下,在这里记录一下,免得以后忘了 ^_^先在类中定义一个结构变量NOTIFYICONDATA pnid;然后在OnInitDialog进行初始化    pnid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);//该结构体大小    pnid.hWnd=m_hWnd;    //窗口句柄    pnid.uID=(UINT)m_hIcon

解决Win10个性化设置最小化任务栏后不能弹出问题的方法

方法如下: 1.打开任务管理器(或者点击CTRL+Shift+ESC) 2.点击"文件" - "运行新任务" 3.请确保勾选"使用管理员身份创建这个任务" 4.输入"Powershell" (忽略"")xitonghe.com 5.在Powershell中,输入以下两条命令:(第二条命令需要点击回车) manifest = (Get-AppxPackage Microsoft.WindowsStore).I