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

隨筆-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>
            99pao成人国产永久免费视频| 久久精品成人一区二区三区| 久久精品99国产精品| 国产日韩在线看| 亚洲欧美一区二区激情| 久久国产婷婷国产香蕉| 国产综合av| 欧美日韩一区三区四区| 宅男精品视频| 久久精品国产欧美激情| 狠狠色丁香久久婷婷综合丁香| 欧美一级黄色录像| 欧美jizzhd精品欧美喷水| 影视先锋久久| 国产精品中文在线| 欧美激情亚洲激情| 亚洲视屏一区| 最近中文字幕日韩精品 | 久久亚洲综合色| 亚洲高清资源| 欧美日韩二区三区| 午夜欧美大片免费观看 | 狠狠色综合播放一区二区| 欧美国产视频在线| 午夜精品久久久久久久99樱桃| 韩国福利一区| 国产日韩欧美在线看| 久久综合精品国产一区二区三区| 欧美国产激情二区三区| 国产精品99久久久久久白浆小说| 国产精自产拍久久久久久| 欧美va天堂在线| 亚洲一区二区高清| 亚洲大胆在线| 欧美一级片一区| 中国女人久久久| 亚洲美女尤物影院| 国产一级揄自揄精品视频| 欧美日韩激情小视频| 欧美精品久久久久久久| 久久频这里精品99香蕉| 久久综合999| 久久久久成人精品| 美女在线一区二区| 久久久精品国产一区二区三区| 欧美在线看片| 久久综合九色欧美综合狠狠| 久久久久久婷| 欧美另类极品videosbest最新版本| 欧美www视频在线观看| 欧美成年人在线观看| 欧美日韩精品欧美日韩精品一 | 性伦欧美刺激片在线观看| 性做久久久久久久免费看| 牛夜精品久久久久久久99黑人| 免费在线亚洲欧美| 国产精品高潮呻吟| 在线观看成人av| 欧美专区第一页| 亚洲三级视频在线观看| 亚洲欧美国产精品桃花| 久久精品99无色码中文字幕| 美女脱光内衣内裤视频久久影院 | 久久国产精品黑丝| 欧美 日韩 国产在线| 国产女主播在线一区二区| 影音先锋国产精品| 午夜影视日本亚洲欧洲精品| 裸体歌舞表演一区二区| 日韩视频一区二区三区| 先锋a资源在线看亚洲| 久久影院午夜论| 国产一区二区三区四区| 亚洲欧美日韩区| 亚洲欧洲精品一区二区三区波多野1战4 | 久久久精彩视频| 国产免费成人av| 亚洲国产你懂的| 久久国产免费| 欧美在线一区二区| 欧美日韩免费观看一区=区三区| 国产一区二区激情| 欧美在现视频| 午夜精品视频| 国产一区二区三区的电影 | 亚洲国产日韩欧美| 欧美成人午夜免费视在线看片| 国产女主播一区| 欧美福利网址| 欧美日韩久久| 午夜亚洲性色视频| 久久理论片午夜琪琪电影网| 亚洲国产日韩一区二区| 亚洲国产精品久久91精品| 欧美精品性视频| 欧美影院视频| 久久一二三国产| 欧美成人午夜免费视在线看片| 日韩小视频在线观看| av成人天堂| 精品不卡视频| 一区二区激情| 亚洲二区在线视频| 午夜精品国产更新| 99re66热这里只有精品3直播| av成人国产| 亚洲电影免费观看高清| 亚洲男女毛片无遮挡| 亚洲精品男同| 久久久另类综合| 夜夜嗨av一区二区三区四季av| 午夜天堂精品久久久久| 久久米奇亚洲| 久久久国际精品| 国产精品久久久爽爽爽麻豆色哟哟 | 国产精品乱码妇女bbbb| 久久久综合视频| 国产精品视频一二| 99视频超级精品| 在线午夜精品自拍| 久色婷婷小香蕉久久| 久久久精品动漫| 国产精品视频免费一区| 一区二区日韩欧美| 一本色道久久综合| 欧美激情一二区| 亚洲国产婷婷综合在线精品| 亚洲成人自拍视频| 久久久成人网| 欧美国产高潮xxxx1819| 亚洲精品国产精品国自产在线| 欧美激情一区二区三级高清视频 | 国产视频精品免费播放| 午夜精品亚洲一区二区三区嫩草| 久久本道综合色狠狠五月| 国产日韩精品在线播放| 欧美在线观看一区| 亚洲黄色av一区| 亚洲欧美日本日韩| 国内精品一区二区三区| 久久久欧美一区二区| 亚洲电影一级黄| 欧美理论电影在线播放| 亚洲欧美日韩爽爽影院| 美女主播精品视频一二三四| 91久久综合亚洲鲁鲁五月天| 欧美精品精品一区| 亚洲免费中文| 亚洲国产日韩欧美综合久久| 午夜精品一区二区三区电影天堂| 国产一区二区久久久| 欧美福利在线观看| 久久精品综合一区| 最新国产乱人伦偷精品免费网站| 亚洲午夜成aⅴ人片| 伊人成人在线视频| 国产精品wwwwww| 欧美激情网友自拍| 美日韩精品视频| 久久国产精品99精品国产| 亚洲日本免费电影| 欧美国产精品v| 牛夜精品久久久久久久99黑人| 亚洲欧美日韩国产一区二区三区| 亚洲成人在线免费| 国产一区导航| 国产一区二区三区久久久久久久久 | 永久免费精品影视网站| 国产精品jizz在线观看美国 | 激情av一区二区| 国产亚洲免费的视频看| 欧美噜噜久久久xxx| 久久精品国产清高在天天线 | 欧美亚日韩国产aⅴ精品中极品| 欧美永久精品| 欧美在线视频观看| 午夜欧美精品久久久久久久| 99re热精品| 亚洲制服av| 亚洲色图自拍| 亚洲欧美制服另类日韩| 午夜精品一区二区三区电影天堂 | 亚洲天堂成人| 新67194成人永久网站| 久久激情综合网| 欧美国产日韩精品免费观看| 蜜臀av国产精品久久久久| 日韩视频一区二区三区在线播放| 最新国产成人在线观看| 亚洲视屏在线播放| 亚洲欧美综合网| 老司机一区二区三区| 欧美日韩亚洲视频| 国产区亚洲区欧美区| 亚洲成人自拍视频| 欧美影院在线| 老司机67194精品线观看| 亚洲第一区在线| 欧美伊人久久大香线蕉综合69| 欧美风情在线|