wxwidgets是一個(gè)C++的跨平臺(tái)的開發(fā)包,主要做圖形界面的開發(fā),它自己也集成了很多庫,像socket之類的也都有。當(dāng)然我自己用這個(gè)開發(fā)包也就是奔著圖形界面來的。
wxwidgets vs MFC:這兩風(fēng)格很像,在源代碼中用了很多的宏定義,誰模仿誰我就不去關(guān)心了,反正對(duì)于MFC比較熟悉的人應(yīng)該對(duì)wxwidgets感覺不錯(cuò)。MFC中大量運(yùn)用虛函數(shù),而wxwidgets中大量用重載,理論上說wxwidgets的運(yùn)行效率要比MFC高一些。
wxWidgets的一些基礎(chǔ)知識(shí):
● wxWidgets不僅僅使用C++,而且能夠使用python、perl、java、lua、eiffel、C#(.NET)、basic、ruby,甚至是javascript(見General Information)(豆子:有些語言連聽都沒聽說過,呵呵);
● wxWidgets是一個(gè)完整的GUI工具庫,提供了很多工具類;
● 有很多文檔(雖然一些只是文檔片段);
● 免費(fèi)供個(gè)人使用或者商業(yè)使用;
● 只要可能,wxWidgets就會(huì)使用本地平臺(tái)的SDK。也就是說,同一段代碼,在Windows下編譯將具有Windows程序的外觀,在Linux下編譯將具有Linux程序的外觀;
○ 這樣做的優(yōu)點(diǎn)是,wxWidgets程序看上去和本地程序差不多,有時(shí)也會(huì)有一些本地組件的行為——例如在OS X上所有的文本域(text area)都將獲得內(nèi)建的拼寫檢查的能力;
○ 這樣做的缺點(diǎn)是,wxWidgets程序在不同平臺(tái)的行為可能會(huì)不一致;那些使用輕量級(jí)組件的GUI庫或許會(huì)丟失一些特定平臺(tái)的特性,但會(huì)將平臺(tái)相關(guān)的代碼減到最少(因此,這樣做也能夠?qū)⒉煌脚_(tái)組件的行為差異降到最小,并且減少了特定平臺(tái)的bugs)。另外,由于使用本地感官風(fēng)格,使得wxWidgets不適合于那些希望具有不同于系統(tǒng)界面風(fēng)格的程序的開發(fā)。
wxWidgets 文件/文件夾函數(shù)
所屬頭文件
<wx/filefn.h>
參見
wxPathList
wxDir
wxFile
wxFileName
::wxDos2UnixFilename
::wxFileExists
::wxFileModificationTime
::wxFileNameFromPath
::wxFindFirstFile
::wxFindNextFile
::wxGetDiskSpace
::wxGetFileKind
::wxGetOSDirectory
::wxIsAbsolutePath
::wxDirExists
::wxPathOnly
::wxUnix2DosFilename
wxCHANGE_UMASK
::wxConcatFiles
::wxCopyFile
::wxGetCwd
::wxGetWorkingDirectory
::wxGetTempFileName
::wxIsWild
::wxMatchWild
::wxMkdir
::wxParseCommonDialogsFilter
::wxRemoveFile
::wxRenameFile
::wxRmdir
::wxSetWorkingDirectory
::wxSplitPath
::wxTransferFileToStream
::wxTransferStreamToFile
::wxDos2UnixFilename
void wxDos2UnixFilename(wxChar *s)
通過將反斜杠(\)替換為正斜杠(/)來實(shí)現(xiàn)DOS格式的文件名到Unix格式的轉(zhuǎn)換。
::wxFileExists
bool wxFileExists(const wxString& filename)
檢測(cè)文件是否存在, 當(dāng) filename 存在并且為文件時(shí)返回 true 。
::wxFileModificationTime
time_t wxFileModificationTime(const wxString& filename)
返回給定文件的最后一次修改時(shí)間。
函數(shù)返回 (time_t)-1 表示遇到錯(cuò)誤(例如: 文件未找到時(shí))。
::wxFileNameFromPath
wxString wxFileNameFromPath(const wxString& path)
char * wxFileNameFromPath(char *path)
注意: 該函數(shù)已被廢棄, 請(qǐng)使用 wxFileName::SplitPath 代替。
從完整路徑中返回分離出的文件名。第二種形式返回一個(gè)指向臨時(shí)存儲(chǔ)區(qū)的指針, 該臨時(shí)存儲(chǔ)區(qū)域所占用的空間不應(yīng)該被釋放。
::wxFindFirstFile
wxString wxFindFirstFile(const char *spec, int flags = 0)
該函數(shù)用于在所指定的目錄中做搜索, 返回符合通配符 spec 的第一個(gè)文件路徑, 或空字符串。使用 wxFindNextFile 匹配符合條件的下一個(gè)文件。所匹配的結(jié)果不會(huì)包含當(dāng)前目錄 "." 或上級(jí)目錄 ".."。
警告
從 wx 2.5.2 版本起, 這兩個(gè)函數(shù)會(huì)令線程變得不安全! (它們使用靜態(tài)變量)。你或許會(huì)使用 wxDir::GetFirst 或 wxDirTraverser 來進(jìn)行替代。
spec 為可能需要包含的通配符。
flags 為允許匹配的類型標(biāo)識(shí), wxDIR 匹配子目錄, wxFILE 匹配文件。
例如:
wxString f = wxFindFirstFile("/home/project/*.*"); while ( !f.empty() ) { ... f = wxFindNextFile(); }
::wxFindNextFile
wxString wxFindNextFile()
返回符合 wxFindFirstFile 函數(shù)中匹配條件的下一個(gè)文件路徑。
參見 wxFindFirstFile 中的示例。
::wxGetDiskSpace
bool wxGetDiskSpace(const wxString& path, wxLongLong *total = NULL, wxLongLong *free = NULL)
該函數(shù)以字節(jié)為單位返回目錄路徑 path (路徑應(yīng)當(dāng)存在) 所在盤符的總空間和剩余空間大小。 當(dāng)你不需要其中某個(gè)相應(yīng)的信息時(shí), total 和 free 參數(shù)可以設(shè)為 NULL。
返回值
返回 true 表示成功, false 表示遇到錯(cuò)誤 (例如, 目錄路徑不存在)。
可移植性
該函數(shù)僅應(yīng)用于 Win32 平臺(tái), Mac OS 和 通用 Unix 系統(tǒng)提供有 statfs() 函數(shù)。
該函數(shù)首次添加于 wxWidgets 2.3.2。
::wxGetFileKind
wxFileKind wxGetFileKind(int fd)
wxFileKind wxGetFileKind(FILE *fp)
返回一個(gè)已經(jīng)打開的文件的類型?赡艿闹等缦:
enum wxFileKind { wxFILE_KIND_UNKNOWN, wxFILE_KIND_DISK, // 支持求任意偏移量的文件 譯者注: 磁盤文件 wxFILE_KIND_TERMINAL, // 終端設(shè)備文件 wxFILE_KIND_PIPE // 管道文件 };
所屬頭文件
<wx/filefn.h>
::wxGetOSDirectory
wxString wxGetOSDirectory()
返回當(dāng)前 Windows 系統(tǒng)所在的目錄; 其他平臺(tái)返回一個(gè)空的字符串。
::wxIsAbsolutePath
bool wxIsAbsolutePath(const wxString& filename)
判斷是否為絕對(duì)路徑, 是絕對(duì)路徑時(shí)返回 true, 例如, 帶有斜杠或者以盤符開始的路徑。
::wxDirExists
bool wxDirExists(const wxChar *dirname)
檢測(cè)目錄是否存在, 當(dāng)路徑 dirname 存在且為目錄時(shí)返回 true 。
::wxPathOnly
wxString wxPathOnly(const wxString& path)
返回完整文件路徑 path 的目錄部分。
::wxUnix2DosFilename
void wxUnix2DosFilename(wxChar *s)
該函數(shù)已被廢棄, 使用 wxFileName 代替。
通過斜杠替換為反斜杠的方式將 Unix 路徑轉(zhuǎn)為 Dos 路徑。
wxCHANGE_UMASK
wxCHANGE_UMASK(int mask)
在 Unix 下, 使用該宏將可以將當(dāng)前文件權(quán)限的掩碼更改為給定值, 當(dāng)值為 -1 時(shí)表示什么也不做, 將值恢復(fù)為默認(rèn)值范圍后退出。它的工作原理是聲明一個(gè)對(duì)象, 在對(duì)象調(diào)用構(gòu)造函數(shù)時(shí)設(shè)定 umask 為 mask, 當(dāng)析構(gòu)函數(shù)被調(diào)用時(shí)進(jìn)行復(fù)位。
在其他平臺(tái)上該宏無擴(kuò)展。
::wxConcatFiles
bool wxConcatFiles(const wxString& file1, const wxString& file2, const wxString& file3)
合并 file1 and file2 到 file3, 成功時(shí)返回 true 。
::wxCopyFile
bool wxCopyFile(const wxString& file1, const wxString& file2, bool overwrite = true)
復(fù)制 file1 到 file2, 成功時(shí)返回 true 。如果目標(biāo)文件已經(jīng)存在, 當(dāng) overwrite 參數(shù)為 true (默認(rèn)), 文件將被覆蓋, 為 false 時(shí), 不進(jìn)行復(fù)制, 函數(shù)執(zhí)行失敗。
::wxGetCwd
wxString wxGetCwd()
返回一個(gè)包含當(dāng)前路徑(或工作路徑)的字符串。
::wxGetWorkingDirectory
wxChar* wxGetWorkingDirectory(char *buf=NULL, int sz=1000)
注意: 該函數(shù)已被廢棄: 使用 wxGetCwd 代替。
當(dāng) buf 存在時(shí), 復(fù)制當(dāng)前工作路徑到 buf; 當(dāng) buf 不存在時(shí), 復(fù)制當(dāng)前工作路徑到自動(dòng)分配的存儲(chǔ)區(qū)(這時(shí)你必須自己手動(dòng)釋放)。
sz 為緩沖區(qū)大小, 如果 buf 存在的話。
//譯者注: 該函數(shù)提供的函數(shù)原型與文檔中不同, 譯者采用 .h 頭文件中的原型, 文檔中的函數(shù)原型為: wxString wxGetWorkingDirectory(char *buf=NULL, int sz=1000)
::wxGetTempFileName
char * wxGetTempFileName(const wxString& prefix, char *buf=NULL)
bool wxGetTempFileName(const wxString& prefix, wxString& buf)
注意: 該函數(shù)已被廢棄, 請(qǐng)使用 wxFileName::CreateTempFileName 代替。
::wxIsWild
bool wxIsWild(const wxString& pattern)
判斷是否包含通配符, 當(dāng) pattern 中包含通配符時(shí)返回 true 。 令見 wxMatchWild。
::wxMatchWild
bool wxMatchWild(const wxString& pattern, const wxString& text, bool dot_special)
當(dāng) text 能夠被 pattern 匹配時(shí)返回 true; 若 dot_special 為 true, 以點(diǎn)('.')開始的文件名將不會(huì)被匹配。另見 wxIsWild。
::wxMkdir
bool wxMkdir(const wxString& dir, int perm = 0777)
創(chuàng)建一個(gè)目錄 dir, 返回 true 時(shí)表示成功。
perm 參數(shù)為訪問掩碼, 該參數(shù)指定了 dir 目錄的具體的訪問權(quán)限, 被 Unix 系統(tǒng)所支持, 在其他平臺(tái)上沒有影響。
::wxParseCommonDialogsFilter
int wxParseCommonDialogsFilter(const wxString& wildCard, wxArrayString& descriptions, wxArrayString& filters)
用于解析通配符 wildCard, 返回解析出的數(shù)量。 返回 0 表示沒有一個(gè)或者出現(xiàn)了問題。 在發(fā)現(xiàn)錯(cuò)誤前, 數(shù)組中將包含已解析到的相等數(shù)目的元素。 在本地通用對(duì)話框中, 每個(gè)條目只有一個(gè)過濾器, 所給定的數(shù)組元素?cái)?shù)目會(huì)自動(dòng)調(diào)整。 wildCard 通配符形式:
"All files (*)|*|Image Files (*.jpeg *.png)|*.jpg;*.png"
::wxRemoveFile
bool wxRemoveFile(const wxString& file)
刪除 file 文件, 返回 true 表示成功。
::wxRenameFile
bool wxRenameFile(const wxString& file1, const wxString& file2, bool overwrite = true)
重命名 file1 為 file2, 返回 true 表示成功。
當(dāng)目標(biāo)文件已經(jīng)存在時(shí), 若 overwrite 參數(shù)為 true (默認(rèn)), 文件將被覆蓋, overwrite 為 false, 不進(jìn)行重命名, 函數(shù)返回失敗。
::wxRmdir
bool wxRmdir(const wxString& dir, int flags=0)
刪除 dir 目錄, 翻譯 true 表示成功。 在虛擬機(jī)下使用無效。
參數(shù) flags 目前為保留參數(shù), 在以后可能會(huì)使用到。
請(qǐng)注意還有一個(gè) wxRmDir 函數(shù), 該函數(shù)是可移植性操作系統(tǒng)接口標(biāo)準(zhǔn)函數(shù) rmdir() 的封裝, 它會(huì)返回一個(gè) int 型的錯(cuò)誤標(biāo)識(shí)代替 bool 型( 但是在其他方面目前與 wxRmdir 相同 ), 不要將這兩個(gè)函數(shù)弄混淆。
::wxSetWorkingDirectory
bool wxSetWorkingDirectory(const wxString& dir)
設(shè)置當(dāng)前工作目錄, 返回 true 表示操作成功。 在 Windows 下, 若 dir 所在的磁盤分區(qū)與當(dāng)前使用的分區(qū)格式不同, 那么磁盤驅(qū)動(dòng)器也將發(fā)生改變。
::wxSplitPath
void wxSplitPath(const char * fullname, wxString * path, wxString * name, wxString * ext)
注意: 該函數(shù)已被廢棄, 請(qǐng)使用 wxFileName::SplitPath 代替。
該函數(shù)用于從完整的文件路徑中分離出不同的成分: 路徑 path (在 Windows 下可能包含磁盤驅(qū)動(dòng)器名), 基礎(chǔ)文件名和文件擴(kuò)展名。如果只對(duì)其中特定的成分感興趣, 其中不需要的參數(shù) (path, name 或 ext) 都可以為空。
在 Windows 中, wxSplitPath() 能夠正確的處理 DOS 和 Unix 路徑中的文件名, 但是在 Unix 中, 函數(shù)不會(huì)以反斜杠作為路徑分離標(biāo)識(shí)( 例如反斜杠在文件名中是有效的字符 )。
在使用時(shí), fullname 應(yīng)該不為空 (雖然它可能為空)。
在獲得的值中, path 中包含的是文件路徑 (不含結(jié)尾處的分隔符), name 為文件名; ext 為不含點(diǎn)('.')的擴(kuò)展名。 如果相應(yīng)成分不存在, 那么三個(gè)參數(shù)都有可能得到空值。在這種情況下, 參數(shù)中所指向的舊的內(nèi)容將被重寫 (如果指針不為空).
::wxTransferFileToStream
bool wxTransferFileToStream(const wxString& filename, ostream& stream)
拷貝給定的文件轉(zhuǎn)換為 stream 流形式。 當(dāng)需要用流去改寫舊式的應(yīng)用程序時(shí)是非常有用的。 (例如, 在文檔/視圖的框架中)。//譯者注: 該句的翻譯可能存在問題
所屬頭文件
<wx/docview.h>
::wxTransferStreamToFile
bool wxTransferStreamToFile(istream& stream const wxString& filename)
拷貝給定的 stream 流轉(zhuǎn)換到一個(gè)文件 filename 。當(dāng)需要用流去改寫舊式的應(yīng)用程序時(shí)是非常有用的。 (例如, 在文檔/視圖的框架中)。//譯者注: 該句的翻譯可能存在問題
所屬頭文件
<wx/docview.h>