日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC++ MFC中如何将应用程序的配置信息保存到注册表中(一)

發(fā)布時(shí)間:2025/6/15 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC++ MFC中如何将应用程序的配置信息保存到注册表中(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

注冊(cè)表(Registry,繁體中文版Windows稱之為登錄檔)是Microsoft Windows中的一個(gè)重要的數(shù)據(jù)庫,用于存儲(chǔ)系統(tǒng)和應(yīng)用程序的設(shè)置信息。比如我們打開一個(gè)記事本,調(diào)整其窗口大小,使用完畢后關(guān)閉記事本,下次打開時(shí)大小和上次關(guān)閉前的大小和在屏幕上的位置是相同。這些位置和大小信息就是在記事本關(guān)閉時(shí)保存到注冊(cè)表中,下次打開時(shí)我們從注冊(cè)表中取出這些數(shù)據(jù),并按照這些數(shù)據(jù)顯示記事本程序的大小和位置信息。

下面教你如何使用GetProfileInt,WriteProfileInt,GetProfileString,WriteProfileString,SetRegistryKey這5個(gè)函數(shù)把你想要保存的應(yīng)用程序信息保存到注冊(cè)表中,如何從注冊(cè)表中取出來。

UINT WINAPI GetProfileInt( LPCTSTR lpAppName, LPCTSTR lpKeyName, int nDefault);BOOL WriteProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue);BOOL WINAPI WriteProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString);BOOL WriteProfileInt(LPCTSTR lpszSection,LPCTSTR lpszEntry,int nValue );

上面4個(gè)函數(shù)是CWinApp類中提供了一組用于讀寫應(yīng)用程序配置的方法的接口,可方便的用于讀寫應(yīng)用程序配置。具體的函數(shù)聲明和參數(shù)解釋可以參考MSDN。

下面就教你如何才能夠把你想要保存的一些信息保存到注冊(cè)表中。

1.??? 用VC++的向?qū)Ы⒒趯?duì)話框的MFC項(xiàng)目之后,在CClassApp::InitInstance()函數(shù)定義中添加這樣的語句:

SetRegistryKey(_T("應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序"));

該函數(shù)將為以上提到的幾個(gè)方法建立工作環(huán)境,此時(shí)如果用WriteProfileInt寫入數(shù)據(jù),將會(huì)被寫入到如下注冊(cè)表位置:

HKEY_CURRENT_USER\Software\應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序\應(yīng)用程序名稱\

你可以打開注冊(cè)表查看一下是否有了對(duì)應(yīng)的鍵值項(xiàng)。

如果在InitInstance中不執(zhí)行SetRegistryKey,則用WriteProfileInt寫入數(shù)據(jù)時(shí),將寫入到%windir%\應(yīng)用程序名稱.ini中。

2.??? 向注冊(cè)表中寫入需要保存的數(shù)據(jù)

a. ? 如果在InitInstance中執(zhí)行了SetRegistryKey("應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序");??? 則對(duì)于:

WriteProfileInt("section","val1",10);

將在注冊(cè)表中如下路徑寫入數(shù)據(jù):
[HKEY_CURRENT_USER\Software\應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序\應(yīng)用程序名稱\section]????? "val1"=dword:0000000a

b. ? 如果在InitInstance中沒執(zhí)行SetRegistryKey 則對(duì)于:

將在“%windir%\測(cè)試應(yīng)用程序.ini”中寫入:
[section]?

val1=10

3.從注冊(cè)表中讀取需要的值

GetProfileInt("section","val1",10);

最后一個(gè)參數(shù)是默認(rèn)值,如果沒有從注冊(cè)表中取得任何值,將使用這個(gè)默認(rèn)的值。

對(duì)于取得字符串類型的值用法大致相同使用的是GetProfileString和WriteProfileString接口。

下面是一個(gè)測(cè)試?yán)?#xff0c;你可以放到工程中測(cè)試一下!

先在CTestClassApp::InitInstance()中添加SetRegistryKey函數(shù)

BOOL CTestClassApp::InitInstance() {SetRegistryKey(_T("Test Regedit Solutions"));AfxEnableControlContainer();............. //此處代碼省略 .............return FALSE; }

可以在對(duì)話框的OK按鈕的響應(yīng)函數(shù)中添加下面的測(cè)試代碼

void CTestClassDlg::OnOK() { AfxGetApp()->WriteProfileInt("Settings", "Int", 21);AfxGetApp()->WriteProfileString("Settings", "String", _T("Welcome you come here!")); int nGetInt = AfxGetApp()->GetProfileInt("Settings", "Int", 21);CString strGetString = AfxGetApp()->GetProfileString("Settings", "String", _T("Welcome you come here!")); TCHAR szBuffer[256];wsprintf(szBuffer,_T("int:%d string:%s"),nGetInt,strGetString);AfxMessageBox(szBuffer);//CDialog::OnOK(); }

運(yùn)行程序點(diǎn)擊OK按鈕彈出對(duì)話框

取得的值和我們程序中寫入的值相同。

讓后在查找程序中輸入regedit打開注冊(cè)表,按上面的路徑找到響應(yīng)的位置,查看鍵值和對(duì)應(yīng)的數(shù)據(jù)如下圖所示

發(fā)現(xiàn)保存的值也是正確的。

有了這些我們就可以在注冊(cè)表中保存我們需要保存的一些簡單的程序配置信息數(shù)據(jù)了。

總結(jié)

以上是生活随笔為你收集整理的VC++ MFC中如何将应用程序的配置信息保存到注册表中(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。