×

mfc添加配置文件

mfc添加配置文件(mfc怎么添加对话框)

admin admin 发表于2023-03-23 12:41:09 浏览59 评论0

抢沙发发表评论

本文目录一览:

MFC 自定义 配置 文件

// .h

class myclass:public CObject

{

...

DECLARE_SERIAL(myclass)

virtual void Serialize(CArchive ar);

};

//.cpp

IMPLEMENT_SERIAL(myclass,CObject,0)

void myclass::Serialize(CArchive ar)

{

if (ar.IsStoring())

{

// TODO: 在此添加存储代码 //写文件

}

else

{

// TODO: 在此添加加载代码 //读文件

}

}

________________

从CObject继承, 添加DECLARE_SERIAL / IMPLEMENT_SERIAL,重载Serialize,就可以用MFC的保存了

如果要手动保存,参考CDocument类的OnOpenDocument和OnSaveDocument的代码

里面打开文件,关联到CArchive,然后调用Serialize等等

其他的情况你还不如自己直接读写文件呢,ini格式的配置文件可以直接用WritePrivateProfileString/GetPrivateProfileString/GetPrivateProfileInt读写-mfc添加配置文件

MFC对话框,想建立一个配置文件,如何做?

其实什么格式的都无所谓

txt log 什么的都可以

但是还是建议你用系统的默认配置文件格式 ini

说白了 这不是格式 这个只是文件后缀名 是什么都没关系

为了规范才用.ini后缀的

关键是你文件里的格式

然后用文件操作进行解析

我以前做过MFC的FTP 和邮件发送

这个的确要用到。

如果 配置参数多 文件大的话 推荐用微软的专门解析ini文件的库

如果少 自己解析一下就行了 没必要调用这么大的库

(1)WritePrivateProfileSection()用来在ini文件中直接向指定区域写入键和值的信息,其原型如下:

BOOL WritePrivateProfileSection(

LPCTSTR lpAppName, // 指向指定字段的字符串

LPCTSTR lpString, // 指向要写入的键与值字符串

LPCTSTR lpFileName // 指向文件名称字符串,如果不包含完整路径,则在windows目录下创建

);

用法示例:

WritePrivateProfileSection(_T(“windows”),_T(“load=c:\\winnt\\notepad.exe”),_T(“c:\\winnt\\win.ini”));-mfc添加配置文件

(2)WritePrivateProfileString()与上一个函数的不同点在于其将键和值分开了,原型如下:

BOOL WritePrivateProfileString(

LPCTSTR lpAppName, // 指向指定字段的字符串

LPCTSTR lpKeyName, // 指向指定键的字符串

LPCTSTR lpString, // 指向指定值的字符串

LPCTSTR lpFileName // 指向文件名称字符串

);

用法示例:

WritePrivateProfileString(_T(“windows”),_T(load”)_T(“c:\\winnt\\notepad.exe”),_T(“c:\\winnt\\win.ini”));-mfc添加配置文件

(3)WritePrivateProfileStruct()与前面两个的不同在于文件尾有校验和,原型如下:

BOOL WritePrivateProfileStruct(

LPCTSTR lpszSection, //指向指定字段的字符串

LPCTSTR lpszKey, //指向指定键的字符串

LPVOID lpStruct, //指向存放要加入的数据的缓冲区,如果为NULL,则删除键

UINT uSizeStruct, //缓冲区大小,以字节为单位

LPCTSTR szFile //以零结尾的文件名称字符串,如果为空,则向win.ini写入

);

用法示例:

WritePrivateProfileStruct(_T(“windows”),_T(“load”),pBuffer,sizeof(pBuffer),_T(“c:\\winnt\\win.ini”));-mfc添加配置文件

(4)还有两个函数,是专门用来向win.ini文件写入的,函数原型如下:

BOOL WriteProfileSection(

LPCTSTR lpAppName, //指向指定字段的字符串

LPCTSTR lpString //指向指定值的字符串

);

BOOL WriteProfileString(

LPCTSTR lpAppName, //指向指定字段的字符串

LPCTSTR lpKeyName, //指向指定键的字符串

LPCTSTR lpString //指向指定值的字符串

);

下面来看几个对应的从ini文件获取信息的API函数,上面已经说得很详细了,这里只说其中两个:

DWORD GetPrivateProfileString(

LPCTSTR lpAppName, //指向指定字段的字符串

LPCTSTR lpKeyName, //指向键的字符串

LPCTSTR lpDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量

LPTSTR lpReturnedString, //存放INI文件中值的目的缓存区

DWORD nSize, //目的缓冲区的大小,以字节为单位

LPCTSTR lpFileName //指向INI文件名称的字符串

);

UINT GetPrivateProfileInt(

LPCTSTR lpAppName, //指向指定字段的字符串

LPCTSTR lpKeyName, //指向键的字符串

INT nDefault, //如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量

LPCTSTR lpFileName //指向INI文件名称的字符串

);

程序示例1: 我们在这里建立了一个应用程序“App Name”,并且使用了一个INI文件“appname.ini”,在此INI文件中,我们写入如下内容:

[Section1]

FirstKey = It all worked out okay.

SecondKey = By golly, it works.

ThirdKey = Another test.

代码分析如下:

#include stdio.h

#include windows.h

//主函数

main()

{

//定义局部

CHAR inBuf[80];

HKEY hKey1, hKey2;

DWORD dwDisposition;

LONG lRetCode;

// 试图创建INI文件的键值

lRetCode = RegCreateKeyEx ( HKEY_LOCAL_MACHINE,

"SOFTWARE\\Microsoft\\Windows NT

\\CurrentVersion\\IniFileMapping\\appname.ini",

0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE,

NULL, hKey1,

dwDisposition);

//判断是否出错

if (lRetCode != ERROR_SUCCESS){

printf ("Error in creating appname.ini key\n");

return (0) ;

}

//试图设置一个节区的值

lRetCode = RegSetValueEx ( hKey1,

"Section1",

0,

REG_SZ,

"USR:App Name\\Section1",

20);

//判断是否出错

if (lRetCode != ERROR_SUCCESS) {

printf ( "Error in setting Section1 value\n");

return (0) ;

}

//试图创建一个应用名称键值

lRetCode = RegCreateKeyEx ( HKEY_CURRENT_USER,

"App Name",

0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE,

NULL, hKey2,

dwDisposition);

//判断是否出错

if (lRetCode != ERROR_SUCCESS) {

printf ("Error in creating App Name key\n");

return (0) ;

}

//强制系统重新读取映射区的内容到共享内存中,以便于将来对应用程序的调用可//以找到它,而不需要重新启动系统

WritePrivateProfileStringW( NULL, NULL, NULL, L"appname.ini" );

//向INI文件中添加一些键值

WritePrivateProfileString ("Section1", "FirstKey",

"It all worked out okay.", "appname.ini");

WritePrivateProfileString ("Section1", "SecondKey",

"By golly, it works.", "appname.ini");

WritePrivateProfileSection ("Section1", "ThirdKey = Another Test.",

"appname.ini");

//测试一下添加的正确性

GetPrivateProfileString ("Section1", "FirstKey",

"Bogus Value: Get didn't work", inBuf, 80,

"appname.ini");

printf ("%s", inBuf);

return(0);

}

程序示例2:通过修改win.ini中的字段[windows]中的键load或run,或者是为system.ini中的字段[boot]中的键 shell增加值,可以达到设置程序自动运行的目的。假设我们要自动运行notepad.exe,修改后的win.ini或system.ini文件象这 样就可以:-mfc添加配置文件

win.ini

[windows]

load=c:\winnt\notepad.exe

run=c:\winnt\notepad.exe

system.ini

[boot]

shell=c:\winnt\explorer.exe c:\winnt\notepad.exe

注意:system.ini文件的修改要特别注意,如果你单纯改成shell=c:\winnt\notepad.exe,则不能首先运行 explorer.exe,很明显你将看不到桌面和任务栏,呵呵,笔者在做实验时就曾因为粗心造成了这样的后果,不过不用害怕,只要你用我们下面提供的程 序,将它修改过来就可以了,默认时,系统在system.ini中的[boot]下是shell=c:\winnt\explorer.exe。很多非法 程序就是通过修改这两个文件来达到自启动的目的的。-mfc添加配置文件

下面这个程序可以在附书光盘中找到,名称为“AutoPlay”,使用VC++6.0写成,核心程序源代码如下:

void CAutoRunDlg::OnBrowse()

{

//只浏览exe文件

CfileDialog fileDlg(TRUE,_T("EXE"),_T("*.exe"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,(_T("Executable Files (*.exe) |*.exe ||")));//显示打开文件的对话框-mfc添加配置文件

//当操作者选择OK时,程序取得选择文件的全路径名(包括文件的路径及文件名称),并将相应的数值传输给相关的控件变量。

if(fileDlg.DoModal()==IDOK)

{

m_strFileName=fileDlg.GetPathName();

//向将变量中的数值传输给控件显示出来。

UpdateData(FALSE);

}

}

void CAutoRunDlg::OnApply()

{

//更新数据

UpdateData(TRUE);

//写入ini文件

LPCTSTR filename;

filename=m_strFileName;

WritePrivateProfileString(_T("windows"),_T("load"),filename,_T("c:\\winnt\\win.ini"));

}

您如果要更改system.ini,可以将WritePrivateProfileString(_T("windows"),_T("load"),filename,_T("c:\\winnt\\win.ini"));-mfc添加配置文件

改为 WritePrivateProfileString(_T("boot"),_T("shell"),filename,_T("c:\\winnt \\system.ini"));并且在输入文件名时输入c:\winnt\explorer.exe c:\winnt\notepad.exe。-mfc添加配置文件

写到这里,本文的意图基本达到,如果您可以把某些代码亲自实现,相信读者会有比较大的收获。

如何在MFC中读写配置文件

用这个写配置文件

WritePrivateProfileString();

用这个读配置文件

GetPrivateProfileString();

在MFC中如何添加库文件

项目属性-配置属性-链接器-输入-附加依赖项

vs 2013

兄弟MFC7340怎么把文件直接从打印机扫描到电脑上

1、首先在电脑中点击开始菜单,点击“设备和打印机”。

2、在打印机和传真中,就可以看见当前连接的扫描仪了,用右键点击它,选择“扫描配置文件”。

3、在打开的页面中,点击“编辑”修改配置,或者点击“添加”,新建一个扫描配置。

4、然后在其中勾选一下“将此配置文件设置为默认值”,点击“保存”,就设置好了,扫描时就会默认以该设置扫描所有文件了。

5、此时打开扫描仪盖板,放入文件后,合上盖板,按扫描仪上的“扫描”按钮,就开始扫描了。扫描得到的文件是图片格式的,只需剪切或者复制到所需要的地方就行了。