如何使视图每次打开时保持关闭时的位置?
来源:互联网 发布:自学编程入门先学什么 编辑:程序博客网 时间:2024/06/05 16:54
主应用程序的 视图窗口 在应用程序的主框架窗口内位置 相对保持不变增加了用户接口的易操作性,步骤如下:
以在CChildFrame类内部为例说明:
第一步:关闭视图窗口时,保存该视图窗口相对于MDIClient窗口的位置到注册表中
void CChildFrame::OnClose()
{
CRect rect,rectClient,rectChild;
//1、求出Child子窗口相对于 屏幕左上角 的坐标
GetWindowRect(&rectChild);
//2、求出MdiClient窗口相对于 屏幕左上角 的坐标
GetParent()->GetWindowRect(&rectClient);
//3、求出Child子窗口相对于MdiClient窗口的位置
rect.top = rectChild.top - rectClient.top ;
rect.left =rectChild.left - rectClient.left ;
//4、把该位置保存到注册表中
AfxGetApp()->WriteProfileInt("Settings" , "DrawViewRect.top" , rect.top );
AfxGetApp()->WriteProfileInt("Settings" , "DrawViewRect.left" , rect.left );
//5、默认OnClose()调用
CMDIChildWnd::OnClose();
}
第二步:在Child窗口显示之前,把视图窗口相对于MDIClient窗口的位置从注册表中读出来,并设置其位置
int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
return -1;
//1、读取注册表
int y=AfxGetApp()->GetProfileInt("Settings" , "DrawViewRect.top",0);
int x=AfxGetApp()->GetProfileInt("Settings" , "DrawViewRect.left",0);
//2、设置窗口位置
SetWindowPos(NULL,x,y,0,0,SWP_NOSIZE|SWP_NOZORDER);
return 0;
}
- 如何使视图每次打开时保持关闭时的位置?
- 设置窗体的起始位置,并检查配置文件是否存在,存在使用配置文件,不存在创建配置文件,在每次打开窗体时保持窗体上一次关闭的位置。
- 如何让vi每次打开文件时直接跳到上次退出时的光标位置?
- 已解决:让虚拟机每次打开时保持之前设置过的屏幕分辨率
- adobe pdf文件每次打开时正好是上次关闭的页面
- 3.4如何在每次创建新文档时打开2个(或多个)特定视图?
- rcp(插件开发)如何让一个视图在多个透视图保持一样的位置
- Acrobat里打开时怎么快速转到上次看的位置,每次都是从0页开始,很麻烦
- 打开资源视图时-提示在另一个编辑器中打开,但是已经关闭所有的打开文件还是这样
- 打开资源视图时-提示在另一个编辑器中打开,但是已经关闭所有的打开文件还是这样
- 打开资源视图时-提示在另一个编辑器中打开,但是已经关闭所有的打开文件还是这样
- 程序窗口按用户上次关闭时的位置大小打开程序
- 使word打开时保持上次阅读
- tinyMce每次插入图片时显示窗口关闭的提示
- 让每次弹出的div随页面的卷动而保持相对位置不变
- 让每次弹出的div随页面的卷动而保持相对位置不变
- 除非有特殊的原因要关闭缓冲,否则使其保持打开
- 3.6如何编程来关闭一个打开文档的所有视图?
- 算法:冒泡排序的实现
- sql2000远程连接不上问题
- JOJ 1182: Lotto
- Navicat 软件介绍
- joj 1197: Sum It Up
- 如何使视图每次打开时保持关闭时的位置?
- 软件模式详解-UML图
- 左右添加删除SELECT-获得页面值,
- come on!boy and girl
- .NET面试题
- Eclipse 修改tomcat路径地址
- 光学软件代理
- .net连接oracle
- 敏捷开发中高质量 Java 代码开发实践