首页 > 代码库 > MFC 关闭窗口时候保存窗口位置

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

CWinApp::WriteProfileInt 

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

Copy
BOOL WriteProfileInt(   LPCTSTR lpszSection,   LPCTSTR lpszEntry,   int nValue );
CWinApp提供了一组用于读写应用程序配置的方法!
CWinApp::GetProfileIntCWinApp::WriteProfileStringCWinApp::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 关闭窗口时候保存窗口位置