码迷,mamicode.com
首页 > 编程语言 > 详细

MFC 关闭窗口时候保存窗口位置

时间:2015-01-06 18:00:56      阅读:413      评论:0      收藏:0      [点我收藏+]

标签:

CWinApp::WriteProfileInt 

Call this member function to write the specified value into the specified section of the application‘s registry or .INI file.

BOOL WriteProfileInt(
   LPCTSTR lpszSection,
   LPCTSTR lpszEntry,
   int nValue 
);
CWinApp提供了一组用于读写应用程序配置的方法!
CWinApp::GetProfileInt
CWinApp::WriteProfileString
CWinApp::SetRegistryKey
还有上面的WriteProfileInt
Call this member function to write the specified value into the specified section of the application‘s registry or .INI file.
这句话告诉我们可以保存到注册表或者系统的INI文件当中
 
1:保存到注册表:
关于CWinApp::SetRegistryKey方法
技术分享
 
如果在Inistance当中执行了 SetRegisterKey()方法
那么在调用 WriteProfileInt的时候,写入的数据将会保存到注册表当中
如果没有执行SetRegisterKey()方法,则写入的数据将会保存到INI文件当中
 
 
LPCTSTR m_pszProfileName; 应用程序的.INI文件名,一般和执行文件名相同。
LPCTSTR m_pszRegistryKey; 用于确定保存应用程序主要设置的完整注册表键
UINT GetProfileInt( LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault ); 从应用程序的配置文件(.INI)的一个配置项中获取一个整数
CString GetProfileString(LPCTSTR szSection, LPCTSTR szEntry, LPCTSTR szDefault = NULL ); 从应用程序的配置文件(.INI)的一个配置项中获取一个字符串
BOOL WriteProfileInt(LPCTSTR szSection, LPCTSTR szEntry, int nValue ); 将一个整数写到应用程序的配置文件(.INI)文件的配置项中
BOOL WriteProfileString(LPCTSTR szSect, LPCTSTR szEntry, LPCTSTR lpszValue ); 将一个字符串写到应用程序的配置文件(.INI)文件的配置项中
void SetRegistryKey( LPCTSTR lpszRegistryKey ); 使应用程序的配置保存在注册表中,而不保存于(.INI)文件中
 
 
用法:
//窗口摧毁时候保存窗口的位置
void CNotePadDlg::OnDestroy()
{
	CDialog::OnDestroy();
	CRect rect;
	GetWindowRect(rect);
	theApp.WriteProfileInt("SETTING","left",rect.left);
	theApp.WriteProfileInt("SETTING","right",rect.right);
	theApp.WriteProfileInt("SETTING","top",rect.top);
	theApp.WriteProfileInt("SETTING","bottom",rect.bottom);
}
//初始化窗口的位置,上次关闭时候所在的位置
void CNotePadDlg::InitRect()
{

	int nLeft = theApp.GetProfileInt("SETTING","left",-1);
	if(nLeft < 0)
		return;
	int nRight = theApp.GetProfileInt("SETTING","right",-1);
	if(nRight < 0)
		return;

	int nTop = theApp.GetProfileInt("SETTING","top",-1);
	if(nTop < 0)
		return;

	int nBottom = theApp.GetProfileInt("SETTING","bottom",-1);
	if(nBottom < 0)
		return;

	MoveWindow(nLeft,nTop,nRight-nLeft,nBottom - nTop);
	
}


 
记得在InitDialog中加入InitRect()函数的调用
BOOL CNotePadDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	InitRect();
	LoadFont();
	m_hAccel = ::LoadAccelerators(AfxGetInstanceHandle(),(LPCTSTR)IDR_ACCELERATOR1);
	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}
 
运行程序,出现窗口,把窗口拖到指定位置关闭,下次启动会出现在指定

 
 

MFC 关闭窗口时候保存窗口位置

标签:

原文地址:http://blog.csdn.net/djb100316878/article/details/42461101

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!