界面组件停靠位置状态保存和加载如何实现?

振翅高飞 2014-09-02 10:08:56
各位,我在BCG的一个见面里做了几个组件就是类似ToolBar的各种DockingControlBar,还有DialogBar,现在我在创建后,加入用户改变了某个组件的位置,整体布局状态可以说就是变化了,我怎么把这种状态给保存下来,我想的是在程序退出CMainFrame::OnClose时保存,然后在下次程序初始化时加载,可是尝试一直不成功,请问有谁有个示例代码?

还有一个问题,就是这些组件有没有什么办法让它们固定位置?我的意思就是:有个菜单,我单击选择该菜单时,程序就锁定各个组件的位置和状态,无法拖动和改变。我选择另一个菜单,就恢复可拖动和改变状态!

各位同仁希望能帮我一下,急切盼望。
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
振翅高飞 2014-09-10
  • 打赏
  • 举报
回复
自己解决了。我把方法说一下:

void CMainFrame::SaveDefaultLayout()
{//默认布局状态,该函数需要在CMainFrame::OnCreate调用结束时加上
	theApp.SaveState (this, DefLayout);//DefLayout是一个你自己定义的常量字符串theApp是你的程序CXXXXApp的全局变量
}

void CMainFrame::SaveCurrentLayout()
{//在程序关闭前保存当前布局状态,参数与上面类似 ,该函数需要在CMainFrame::OnClose调用结束时加上
	theApp.SaveState (this, PreLayout);
	return;
}

void CMainFrame::OnDefaultLayout()
{//命令执行显示默认布局状态
	CRect rectOld;
	GetWindowRect (rectOld);
	theApp.m_bLoadUserToolbars = FALSE;
	SetRedraw (FALSE);
	theApp.LoadState (this, DefLayout);
	SetRedraw (TRUE);
	RedrawWindow (NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | 
		RDW_ERASE | RDW_ALLCHILDREN);
	GetDesktopWindow ()->RedrawWindow (rectOld, NULL, RDW_INVALIDATE | RDW_UPDATENOW | 
		RDW_ERASE | RDW_ALLCHILDREN);
	CSmartWatchView* pView = NULL;
	GetSmartWatchView(pView);
	pView->UpdateWindow();
}

void CMainFrame::OnIdsPanelRestorePrelayout()
{//命令执行显示上一次保存的布局状态
	CRect rectOld;
	GetWindowRect (rectOld);
	theApp.m_bLoadUserToolbars = FALSE;
	SetRedraw (FALSE);
	theApp.LoadState (this, PreLayout)	;
	SetRedraw (TRUE);
	RedrawWindow (NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | 
		RDW_ERASE | RDW_ALLCHILDREN);
	GetDesktopWindow ()->RedrawWindow (rectOld, NULL, RDW_INVALIDATE | RDW_UPDATENOW | 
		RDW_ERASE | RDW_ALLCHILDREN);
	CSmartWatchView* pView = NULL;
	GetSmartWatchView(pView);
	pView->UpdateWindow();
}
振翅高飞 2014-09-02
  • 打赏
  • 举报
回复
writeprofilestring() readprofiestring() getwindowplacement() setwindowplacement() 我试过了不成功。 有Demo吗?
引用 2 楼 mlqxj35674 的回复:
写配置读配置啊
mlqxj35674 2014-09-02
  • 打赏
  • 举报
回复
写配置读配置啊
振翅高飞 2014-09-02
  • 打赏
  • 举报
回复
没人给指点一下吗?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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