求助(如何保存多窗口布局信息?)

julymist 2005-12-09 11:17:45
我因为工作需要,学用mfc,现要实现多窗口环境下多个子窗口的布局保存功能,请问各位高手,能否提供一个解决方案,不胜感激!
...全文
223 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
julymist 2006-01-14
  • 打赏
  • 举报
回复
我在主窗口的oncreate事件里添加了设置子窗口大小的代码,但是它现在总是在创建主窗口的时候以我第一次设定的大小创建子窗口,根本没有理会改过的大小设置,请求帮助
julymist 2006-01-14
  • 打赏
  • 举报
回复
谢谢!
mintwlf 2006-01-13
  • 打赏
  • 举报
回复
用GetWindow 【GW_CHILD】可以得到子窗口的。
julymist 2006-01-13
  • 打赏
  • 举报
回复
我的程序是通过调用dll文件创建子窗口的,我在主程序里试过,没有办法在主程序里控制子窗口的大小,请问如何能在主窗口里改变子窗口的大小,谢谢!
julymist 2005-12-12
  • 打赏
  • 举报
回复
顶一下
lzzqqq 2005-12-09
  • 打赏
  • 举报
回复
在窗口的OnClose时保存窗口的Rect信息到注册表,注册表的键值可以用窗口ID.
然后在创口的OnCreate事件中从注册表调用位置信息,然后SetWindowPos就行.
这是我的一段程序,你参考一下:
//Load the saved stat.
BOOL CAlarmWatcherEx::LoadState(LPCTSTR lpszProfileName, int nIndex, UINT uiID)
{
COutputBarEx::LoadState();

//Title.
m_strTitle=theApp.GetProfileString(m_strSection,"Title","");
SetWindowText(m_strTitle);
//Filter
m_strFilter=theApp.GetProfileString(m_strSection,"Filter","");
ResetFilter();
//Visible.
bool bVisible=(theApp.GetProfileInt(m_strSection,_T("IsVisible"),0)==1);

FloatControlBar(m_recentDockInfo.m_rectRecentFloatingRect,DM_UNKNOWN,bVisible);
EqualSpaceList();
ShowControlBar(bVisible,FALSE,bVisible);

return TRUE;
}

//Save stat to registry.
BOOL CAlarmWatcherEx::SaveState(LPCTSTR lpszProfileName,int nIndex, UINT uiID)
{
this->UpdateData();
COutputBarEx::SaveState();

//Save Title.
theApp.WriteProfileString(m_strSection,_T("Title"),m_strTitle);
//Filter
theApp.WriteProfileString(m_strSection,_T("Filter"),m_strFilter);
//Visible.
theApp.WriteProfileInt(m_strSection,_T("IsVisible"),(int)IsVisible());
//Next create it.
theApp.WriteProfileInt(m_strSection,_T("IsCreate"),1);

return TRUE;
}
julymist 2005-12-09
  • 打赏
  • 举报
回复
谢谢你的回复,我的子窗口是一些没有caption的窗口,能告诉我一些与程序运行环境无关的特征吗?
菜牛 2005-12-09
  • 打赏
  • 举报
回复
你必须要有这些子窗口的“特征”,就是用以区分不同窗口的唯一信息,而且是与程序运行环境无关的特征,以此特征信息作为标志保存各个窗口的Rect,并且以此为标志在程序运行的时候能够重新创建窗口。

楼上的以ID为标志是一种方法,但是不一定适用MDI的子窗口。MDI子窗口可以考虑用各个文档作为标志。
julymist 2005-12-09
  • 打赏
  • 举报
回复
我对mfc不是很了解,我要实现的是在一个mdi中打开多个子窗口,然后自己拖拖拽拽地把他们摆在主窗口里,然后我在关闭程序的时候要保存这几个子窗口的位置,在下次打开这个程序的时候就能看到上次摆过子窗口已经在主窗口上摆好了,不知道你给我的这段程序能达到这种效果吗?不好意思,我是初学者,不是很懂。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧