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 }
运行程序,出现窗口,把窗口拖到指定位置关闭,下次启动会出现在指定