工控编程吧
标题:
173上位机VC MFC创建INI文件与保存参数
[打印本页]
作者:
qq263946146
时间:
2016-1-16 20:56
标题:
173上位机VC MFC创建INI文件与保存参数
[attach]1459[/attach]
(, 下载次数: 2)
上传
点击文件名下载附件
173上位机VC MFC创建INI文件与保存参数
功能展示
上位机程序的参数的保存可以说是必不可少的功能,参数的保存操作最简单的就是直接写入INI文件中,当前例程实现INI文件存在的判断,创建及参数写入功能,写入的参数为指定目录内的文件名称,效果如图;
要点提示
Ini文件的创建可以用函数CreateFile();
HANDLE CreateFile( LPCTSTR lpFileName, //pointer to name of the file
DWORD dwDesiredAccess, // access (read-write) mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTESlpSecurityAttributes,// pointer to security attributes
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to file with attributes tocopy );
dwCreationDisposition参数可选值有CREATE_NEW 创建文件如果文件存在会出错CREATE_ALWAYS创建文件会改写前一文件 OPEN_EXISTING 文件必须存在,同设备提出要求OPEN_ALWAYS 文件不存在,创建之TRUNCATE_EXISTING 将现有文件缩短为堆长度
Ini文件的写入可以用函数WritePrivateProfileString();
Ini文件的读取可以用函数GetPrivateProfileString();
INI文件存在与与否的判断可以用函数_access();
实现功能
1.新建基于对话框的应用程序
2.拖拽一编辑框ID为IDC_EDIT1用于显示要操作的文件夹路径;
拖拽一按钮关联函数用于选择要操作的文件夹路径 ;
拖拽一按钮关联函数用于创建INI文件及保存数据;
void CGkbc8Dlg::OnOpen()
{
//><获取桌面路径
LPITEMIDLIST pidl;
LPMALLOC pShellMalloc;
char szDir[MAX_PATH];
if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
{
if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,&pidl)))
{
SHGetPathFromIDList(pidl, szDir);
pShellMalloc->Free(pidl);
}
pShellMalloc->Release();
}
//><选择路径
BROWSEINFO bi;
bi.hwndOwner = this->GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = NULL;
复制代码
bi.lpszTitle = TEXT("请选择文件夹");
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
bi.lpfn = BrowseCallBackFun;NULL; // //回调函数
bi.lParam = (LPARAM)szDir;//= 0;//传给回调函数的参数,设置默认路径
bi.iImage = 0;
pidl = SHBrowseForFolder(&bi);
if (pidl == NULL)
return;
if (SHGetPathFromIDList(pidl, szDir))
{
CString sDir(szDir);
SetDlgItemText(IDC_EDIT1,sDir);
}
}
void CGkbc8Dlg::OnSave()
{
CString sDir,sFileName;
GetDlgItemText(IDC_EDIT1,sDir);
if(sDir.IsEmpty()) return;
//
sFileName=sDir+"\\工控编程吧.ini";//保存用文件名
if(_access(sFileName,0)==-1)//不存在就创建
{
HANDLE handle=CreateFile(sFileName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_WRITE,
NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(handle!=NULL)
CloseHandle(handle);
else
return;
}
//
CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
pListBox->ResetContent();
}
复制代码
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/f38381ef4f863ec9649dc912d7e27980/0/0/w_19rtdzchuh.swf-albumId=5194099509-tvId=5194099509-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4