青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-250  評論-20  文章-55  trackbacks-0

概述

?? 在程序中經常要用到設置或者其他少量數據的存盤,以便程序在下一次執行的時候可以使用,比如說保存本次程序執行時窗口的位置、大小、一些用戶設置的數據等等,在 Dos 下編程的時候,我們一般自己產生一個文件,由自己把這些數據寫到文件中,然后在下一次執行的時候再讀出來使用。在 Win32 編程中當然你也可以這樣干,但 Windows 已經為我們提供了兩種方便的辦法,那就是使用注冊表或者 ini 文件(Profile)來保存少量數據。本文中先介紹一下 .ini 文件的使用。

ini 文件是文本文件,中間的數據格式一般為:
[Section1 Name]
KeyName1=value1
KeyName2=value2
...

[Section2 Name]
KeyName1=value1
KeyName2=value2

?? ini 文件可以分為幾個 Section,每個 Section 的名稱用 [] 括起來,在一個 Section 中,可以有很多的 Key,每一個 Key 可以有一個值并占用一行,格式是 Key=value,Win32 對 ini 文件操作的 api 中,有一部分是對 win.ini 操作的,有一部分是對用戶自定義的 ini 文件操作的。Win.in 和 system.ini 是Windows的兩個非常重要的初始化文件,Windows將用戶所作的選擇以及各種變化的系統信息記錄在這兩個文件中。System.ini 描述了系統硬件的當前狀態,Win.ini 文件則包含了Windows 系統運行環境的當前配置。由于 Win.ini 文件的重要性和常用性,Win32 中有專門對 Win.ini 進行操作的 api,它們是:

GetProfileInt - 從 Win.ini 文件的某個 Section 取得一個 key 的整數值,它的原形是:

GetProfileInt(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱的字符串地址
INT nDefault // 如果 Key 值沒有找到,則返回缺省的值是多少
);

?? 如果 Key 值沒有找到的話,返回值是 nDefault 指定的缺省值,如果 Key 中的值是負數,則返回 0,如果 Key 指定的是數字和字符串的混合,則返回數字部分的值,比如說 x=1234abcd,則返回 1234


GetProfileString - 從 Win.ini 文件的某個 Section 取得一個 key 的字符串,它的原形是:

GetProfileString(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱的字符串地址
LPCTSTR lpDefault, // 如果 Key 值沒有找到,則返回缺省的字符串的地址
LPTSTR lpReturnedString, // 返回字符串的緩沖區地址
DWORD nSize // 緩沖區的長度
);

?? 返回的字符串在緩沖區內,返回的 eax 值是返回的字符串的長度(不包括尾部的0)


GetProfileSection - 從 Win.ini 文件中讀出整個 Section 的內容,它的原形是:

GetProfileSection(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPTSTR lpReturnedString, // 返回數據的緩沖區地址
DWORD nSize // 返回數據的緩沖區長度
);


WriteProfileSection - 將一個整個 Section 的值 寫入 Win.ini 文件的指定 Section 中,它的原形是:

WriteProfileSection(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPCTSTR lpString // 要寫入的數據的地址
);

?? 如果 Win.ini 沒有指定的 Section,API 會新建立一個并寫入數據,如果已經存在,則先刪除原來 Seciton 中所有的 Key 值然后寫入新的。


WriteProfileString - 將一個 Key 值寫入 Win.ini 文件的指定 Section 中,它的原形是:

WriteProfileString(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱的字符串地址
LPCTSTR lpString // 要寫的字符串地址
);

?? 如果 Win.ini 沒有指定的 Section,API 會新建 Section,如果沒有指定的 Key 則新建一個 Key 并寫入數據,如果已經存在,則用字符串代替原來的值。
?? 以上的 Api 是對 Win.ini 操作的,當然對于我們來說,用的更多的是在程序運行的目錄中建立自己的 ini 文件,如果需要對自己的 ini 文件操作,就要用到另一組 Api,這一組 api 和上面的很象,只要把上面一組的 Profile 換成 PrivateProfile(私有的)就可以了,參數中也相應的多了一個 ini 文件名的參數。例如 GetPrivateProfileInt、GetPrivateProfileSection、WritePrivateProfileString 等等, 下面分別介紹:

GetPrivateProfileInt - 從 ini 文件的某個 Section 取得一個 key 的整數值,它的原形是:

GetPrivateProfileInt(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱的字符串地址
INT nDefault // 如果 Key 值沒有找到,則返回缺省的值是多少
LPCTSTR lpFileName // ini 文件的文件名
);

?? 中間參數和返回值的定義和 GetProfileInt 是一樣的。


GetPrivateProfileString - 從 ini 文件的某個 Section 取得一個 key 的字符串,它的原形是:

GetPrivateProfileString(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱的字符串地址
LPCTSTR lpDefault, // 如果 Key 值沒有找到,則返回缺省的字符串的地址
LPTSTR lpReturnedString, // 返回字符串的緩沖區地址
DWORD nSize // 緩沖區的長度
LPCTSTR lpFileName // ini 文件的文件名
);


GetPrivateProfileSection - 從 ini 文件中讀出整個 Section 的內容,它的原形是:

GetPrivateProfileSection(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPTSTR lpReturnedString, // 返回數據的緩沖區地址
DWORD nSize // 返回數據的緩沖區長度
LPCTSTR lpFileName // ini 文件的文件名
);

?? 這個 api 可以讀出整個 section 的內容,當你不知道 section 中有哪些 key 的時候,可以使用這個 api 將整個 section 讀出后再處理。


GetPrivateProfileSectionNames - 從 ini 文件中獲得 Section 的名稱,它的原形是:

GetPrivateProfileSectionNames(
LPTSTR lpszReturnBuffer, // 返回數據的緩沖區地址
DWORD nSize // 返回數據的緩沖區長度
LPCTSTR lpFileName // ini 文件的文件名
);

如果 ini 中有兩個 Section: [sec1] 和 [sec2],則返回的是 'sec1',0,'sec2',0,0 ,當你不知道 ini 中有哪些 section 的時候可以用這個 api 來獲取名稱


WritePrivateProfileSection - 將一個整個 Section 的內容入 ini 文件的指定 Section 中,它的原形是:

WritePrivateProfileSection(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPCTSTR lpString // 要寫入的數據的地址
LPCTSTR lpFileName // ini 文件的文件名
);


WritePrivateProfileString - 將一個 Key 值寫入 ini 文件的指定 Section 中,它的原形是:

WritePrivateProfileString(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱的字符串地址
LPCTSTR lpString // 要寫的字符串地址
LPCTSTR lpFileName // ini 文件的文件名
);

?? 如果 ini 中沒有指定的 Section,API 會新建 Section,如果沒有指定的 Key 則新建一個 Key 并寫入數據,如果已經存在,則用字符串代替原來的值。當指定的 ini 也不存在的時候,API 會自動建立一個新的文件,所以使用 ini 的好處是我們不必為了保存少量的數據涉及到文件操作,就連查找文件是否存在的操作都不必要。

使用要點:

?? 在我們實際使用的時候,用的最多的是 GetPrivateProfileString 和 WritePrivateProfileString,但在對自定義 ini 文件操作的時候要注意的是,如果 lpFileName 指定的文件沒有路徑的話,Api 會去 Windows 的安裝目錄去找而不會在當前目錄找,但是每次用到 ini 函數要獲取當前路徑顯然太麻煩了,這里有一個變通的辦法,你只要在 ini 文件名前面加上 .\ 就可以了,比如說要對本目錄下的 user.ini 操作,那么文件名就是 '.\user.ini' 這樣顯然比較方便。另外,當你要把一個 Key 清除的時候,可以使用把 lpString 指向一個空的字符串然后使用 WritePrivateProfileString。當你要把一個 section 的全部內容清空的時候,也不必把 key 一個個的清除,可以使用把 lpString 指向一個空的字符串然后使用 WritePrivateProfileSection。

posted on 2007-03-10 17:56 jay 閱讀(4335) 評論(0)  編輯 收藏 引用 所屬分類: Win32
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜日韩福利| 在线观看91精品国产入口| 宅男噜噜噜66国产日韩在线观看| 亚洲人成网站777色婷婷| 久久久久久噜噜噜久久久精品 | 欧美韩日视频| 亚洲国产一区二区在线| 欧美国产一区视频在线观看| 亚洲人成在线观看一区二区 | 免费亚洲电影在线| 亚洲激情另类| 亚洲一卡久久| 欧美中文字幕第一页| 宅男噜噜噜66一区二区66| 欧美激情精品久久久久久黑人| 欧美影院视频| 欧美高清视频在线播放| 日韩午夜一区| 欧美精品免费播放| 最近看过的日韩成人| 欧美精品免费在线| 久久久久久夜精品精品免费| 国产麻豆精品在线观看| 欧美在线播放一区二区| 国产欧美日韩三级| 亚洲国产精品999| 欧美日韩精品一本二本三本| 亚洲激情另类| 国产欧美日韩视频| 亚洲美女av电影| 亚洲韩日在线| 香蕉国产精品偷在线观看不卡| 国产精品日本| 亚洲电影免费观看高清完整版在线观看| 一本一本久久a久久精品综合妖精| 国产精品一级久久久| 久久不射2019中文字幕| 欧美成ee人免费视频| 国产一区日韩一区| 一区二区高清在线| aa级大片欧美三级| 国产精品一区二区三区乱码| 亚洲国产91精品在线观看| 一本一本久久| 在线免费观看一区二区三区| 欧美**人妖| 欧美金8天国| 欧美中文字幕| 亚洲午夜三级在线| 久久久久久久国产| 亚洲国产视频一区| 欧美一区二区性| 欧美国产精品劲爆| 亚洲天堂视频在线观看| 国产亚洲欧美一区二区| 欧美久久在线| 国内精品久久国产| 国产精品稀缺呦系列在线| 久久影音先锋| 亚洲精品裸体| 亚洲男人av电影| 久久精品首页| 91久久线看在观草草青青| 欧美日韩一区三区四区| 久久久噜久噜久久综合| 美女久久一区| 国产精品一区二区在线| 国产亚洲在线观看| 亚洲欧美一区二区三区久久| 亚洲一区视频在线| 久久精品99| 美腿丝袜亚洲色图| 亚洲剧情一区二区| 欧美不卡视频| 毛片一区二区| 美女啪啪无遮挡免费久久网站| 一区二区三区国产盗摄| 久久精品国内一区二区三区| 亚洲大片av| 久久久蜜桃一区二区人| 久久青草福利网站| 国产伦精品一区二区三区视频孕妇 | 欧美日韩精品二区| 欧美高清在线一区| 欧美成人午夜影院| 国产日韩欧美在线视频观看| 在线观看不卡| 久久精品国产一区二区电影| 亚洲成人在线视频播放| 老妇喷水一区二区三区| 亚洲图片自拍偷拍| 久久www成人_看片免费不卡| 欧美日韩不卡合集视频| 欧美成人精品在线| 欧美在线亚洲| 欧美日韩一二区| 亚洲成色777777女色窝| 午夜免费电影一区在线观看| 亚洲欧美在线免费| 亚洲欧美文学| 国产日韩欧美视频| 亚洲专区一区| 欧美亚洲在线| 亚洲第一精品在线| 亚洲国产美女| 久久aⅴ国产欧美74aaa| 欧美日韩国产限制| 久久精品国产一区二区三| 欧美伊人精品成人久久综合97| 欧美日韩视频| 一本色道久久综合亚洲精品不| 久久综合影音| 国产精品午夜久久| 亚洲日本中文| 亚洲一级黄色片| 久久亚洲国产精品一区二区| 亚洲日本在线观看| 亚洲一区二区高清| 一区二区在线视频播放| 亚洲激情视频在线| 国产日产欧产精品推荐色| 亚洲影视在线播放| 欧美高清视频一区二区| 亚洲网站啪啪| 欧美与欧洲交xxxx免费观看| 亚洲精品中文在线| 免费美女久久99| 蜜臀久久久99精品久久久久久| 久久影院午夜论| 亚洲精品网址在线观看| 欧美视频在线观看视频极品 | 久久高清一区| 在线播放日韩| 久久久青草青青国产亚洲免观| 欧美日韩国产综合久久| 麻豆av一区二区三区| 男人的天堂亚洲在线| 国产亚洲精品美女| 亚洲综合999| 亚洲精品日韩在线| 欧美黄色网络| 欧美激情第二页| 亚洲精品久久久久| 国产欧美日韩激情| 欧美一区二区三区的| 亚洲国产精品一区制服丝袜 | 欧美激情精品久久久久久久变态| 亚洲视频免费在线| 欧美日韩免费观看中文| 亚洲午夜视频在线观看| 亚洲欧美日韩网| 国语自产偷拍精品视频偷 | 国语精品一区| 国产精品久久久久9999吃药| 欧美精品日韩一本| 午夜日韩在线观看| 欧美有码在线视频| 亚洲日韩欧美一区二区在线| 黄色一区二区三区| 亚洲激情亚洲| 午夜精品久久久久久久99水蜜桃| 国产一区清纯| 欧美午夜a级限制福利片| 欧美在线一二三四区| 妖精视频成人观看www| 欧美成ee人免费视频| 欧美福利在线| 欧美一级在线播放| 亚洲欧美日韩综合国产aⅴ| 亚洲国产你懂的| 国产精品免费电影| 国产精品成人一区二区三区夜夜夜 | 亚洲韩国一区二区三区| 欧美日韩国产一区二区| 久久精品国产91精品亚洲| 亚洲欧洲日产国产综合网| 性久久久久久久久久久久| 亚洲欧洲av一区二区| 欧美在线free| 亚洲综合精品四区| 亚洲一区二区三区乱码aⅴ| 黑人极品videos精品欧美裸| 国产日韩欧美一区二区| 国内精品视频在线播放| 91久久久久久久久| 久久久999精品视频| 美腿丝袜亚洲色图| 欧美一区2区三区4区公司二百| 羞羞色国产精品| 国产精品乱码一区二三区小蝌蚪| 国产美女精品一区二区三区| 国产精品免费一区二区三区观看| 亚洲国产一区在线| 一区二区三区日韩欧美| 亚洲免费视频网站| 亚洲欧美在线播放| 亚洲精品小视频| 久久久久久69| 狠狠色香婷婷久久亚洲精品| 国产一区再线|