mfc 编辑框控件中值修改后,关闭程序。再度启动程序,编辑框显示修改后的值
mfc 编辑框控件中值修改后,关闭程序。再次启动程序,编辑框显示修改后的值
mfc 编辑框控件中值修改后,关闭程序。再次启动程序,编辑框显示修改后的值。这个怎么样才能达到这个效果?
比如编辑框控件有初始值6,把它改成10后。关闭程序。再次启动程序,编辑框控件显示的是10.
------解决思路----------------------
要保存到注册表:
------解决思路----------------------
不管保存在什么地方反正要保存,再打开
常用的比如注册表,ini文件一类的都可以。
------解决思路----------------------
程序 开始 : MyGetProfileString
程序 结束 : MyWriteProfileString
注册表 就是 系统的 , run regedit 可以 查看。
------解决思路----------------------
保存文件配置信息啊,在关闭应用程序的时候,取出值写入你自定义的配置文件当中(name——value)
程序启动的时候,读取配置文件内容显示即可
GetPrivateProfileInt/WritePrivateProfileInt
GetPrivateProfileString/WritePrivateProfileString
------解决思路----------------------
最简单的实现方法就是将数据保存到注册表中。程序初始化时从注册表读入初值,初值不存在则使用默认值,数据被修改后马上改写注册表中的值,比如:
MFC提供了6个注册表操作函数,可以完成读写,更高级的应用可使用API函数。
------解决思路----------------------
建议用6楼方法,保存到ini中,函数调用也简单
------解决思路----------------------
需求很广, 自己写了几个这样通用的函数
mfc 编辑框控件中值修改后,关闭程序。再次启动程序,编辑框显示修改后的值。这个怎么样才能达到这个效果?
比如编辑框控件有初始值6,把它改成10后。关闭程序。再次启动程序,编辑框控件显示的是10.
------解决思路----------------------
要保存到注册表:
// my own get using "LOCAL_MACHINE"
CString MyGetProfileString(LPCTSTR Section,LPCTSTR Entry)
{
HKEY hkey;
DWORD dwErrorCode;
DWORD dwType=REG_SZ;
char searchKey[MAX_PATH];
BYTE retValue[MAX_PATH];
DWORD size=MAX_PATH;
sprintf(searchKey,"SOFTWARE\\Siemens\\802 HMI Manager\\%s",Section);
dwErrorCode=RegOpenKeyEx(HKEY_LOCAL_MACHINE,searchKey,0,KEY_READ,&hkey);
if (dwErrorCode == ERROR_SUCCESS)
{ //"HKEY_LOCAL_MACHINE\\SOFTWARE\\Siemens\\802 HMI Manager" OK
dwErrorCode=RegQueryValueEx(hkey,Entry,0,&dwType,retValue,&size);
RegCloseKey(hkey);
if (dwErrorCode == ERROR_SUCCESS) return CString(retValue);
}
return CString("");
}
// my own write using "LOCAL_MACHINE"
BOOL MyWriteProfileString(LPCTSTR Section,LPCTSTR Entry,LPCTSTR Value)
{
HKEY hkey;
DWORD dwErrorCode;
char searchKey[255];
sprintf(searchKey,"SOFTWARE\\Siemens\\802 HMI Manager\\%s",Section);
dwErrorCode=RegCreateKeyEx(HKEY_LOCAL_MACHINE,searchKey,0,0,REG_OPTION_NON_VOLATILE,
KEY_WRITE,0,&hkey,0);
if (dwErrorCode == ERROR_SUCCESS)
{ //"HKEY_LOCAL_MACHINE\\SOFTWARE\\Siemens\\802 HMI Manager" OK
dwErrorCode=RegSetValueEx(hkey,Entry,0,REG_SZ,(BYTE *)Value,strlen(Value)+1);
if (dwErrorCode == ERROR_SUCCESS)
{ // set OK
RegCloseKey(hkey);
return TRUE;
}
}
return FALSE;
}
------解决思路----------------------
不管保存在什么地方反正要保存,再打开
常用的比如注册表,ini文件一类的都可以。
------解决思路----------------------
程序 开始 : MyGetProfileString
程序 结束 : MyWriteProfileString
注册表 就是 系统的 , run regedit 可以 查看。
------解决思路----------------------
保存文件配置信息啊,在关闭应用程序的时候,取出值写入你自定义的配置文件当中(name——value)
程序启动的时候,读取配置文件内容显示即可
GetPrivateProfileInt/WritePrivateProfileInt
GetPrivateProfileString/WritePrivateProfileString
------解决思路----------------------
最简单的实现方法就是将数据保存到注册表中。程序初始化时从注册表读入初值,初值不存在则使用默认值,数据被修改后马上改写注册表中的值,比如:
CString str=theApp.GetProfileStringW(_T(WORKER_PARAM),_T(THE_ONDUTY_MAN),_T(""));
MFC提供了6个注册表操作函数,可以完成读写,更高级的应用可使用API函数。
------解决思路----------------------
建议用6楼方法,保存到ini中,函数调用也简单
------解决思路----------------------
需求很广, 自己写了几个这样通用的函数
BOOL NDlg::DlgEdtInitText(CHAR *pSaveName, HWND hDlgWnd, int nEdtId, CHAR *pDefault)
{
CHAR szBuffer[4096];
CHAR szModulePath[MAXPATH];
CHAR szRegPath[MAXPATH];
CHAR szSavePath[MAXPATH];
BOOL bRetVal;
CHAR *pEdtText;
GetModuleFileNameA(NSys::GetModuleFromAddress(), szModulePath, sizeof(szModulePath));
NFile::SpliteFilePath(szModulePath, NULL, szSavePath);
sprintf(szRegPath, "YofooSave\\DlgEdt\\%s", szSavePath);
szBuffer[0] = 0;
bRetVal = NReg::GetReg(HKEY_CURRENT_USER, szRegPath, pSaveName, szBuffer, sizeof(szBuffer));
if(bRetVal == FALSE)
pEdtText = pDefault;
else
pEdtText = szBuffer;
SetDlgItemTextA(hDlgWnd, nEdtId, pEdtText);
return TRUE;
}
BOOL NDlg::DlgEdtGetText(CHAR *pSaveName, HWND hDlgWnd, int nEdtId, CHAR *pBuffer, int nBufSize)
{
CHAR szBuffer[4096];
CHAR szModulePath[MAXPATH];
CHAR szRegPath[MAXPATH];
CHAR szSavePath[MAXPATH];
GetDlgItemTextA(hDlgWnd, nEdtId, szBuffer, sizeof(szBuffer));
GetModuleFileNameA(NSys::GetModuleFromAddress(), szModulePath, sizeof(szModulePath));
NFile::SpliteFilePath(szModulePath, NULL, szSavePath);
sprintf(szRegPath, "YofooSave\\DlgEdt\\%s", szSavePath);
NReg::SetReg(HKEY_CURRENT_USER, szRegPath, pSaveName, szBuffer);
NStr::StrCopy(pBuffer, szBuffer, nBufSize);
return TRUE;
}
int NDlg::DlgEdtGetInt(CHAR *pSaveName, HWND hDlgWnd, int nEdtId)
{
CHAR szBuffer[4096];
CHAR szModulePath[MAXPATH];
CHAR szRegPath[MAXPATH];
CHAR szSavePath[MAXPATH];