一個小巧、簡潔的 C 函式庫,可移植地呼叫本機檔案開啟、資料夾選擇和儲存對話框。 編寫一次對話方塊程式碼,即可在所有支援的平台上彈出本機對話框。 避免連結大型依賴項,例如 wxWidgets 和 qt。
特徵:
精實 C API、靜態函式庫-沒有 ObjC、沒有 C++、沒有 STL。
Zlib 已獲得許可。
所有平台上一致的 UTF-8 支援。
簡單的通用文件過濾器語法。
提供付費支援。
多文件選擇支援。
64 位元和 32 位元友好。
支援 GCC、Clang、Xcode、Mingw 和 Visual Studio。
沒有用於建置或連結的第三方相依性。
支援 Windows 上的 Vista 現代IFileDialog
。
支援 OS X 上未棄用的 Cocoa API。
Linux 上的 GTK3 對話框。
Linux 上可選的 Zenity 支援以避免連結 GTK。
經過測試,與 http://www.libsdl.org 一起在所有平台上為遊戲開發人員工作。
#include <nfd.h>#include <stdio.h>#include <stdlib.h>int main( void ) {nfdchar_t *outPath = NULL;nfdresult_t 結果 = NFD_OpenDialog( NULL, NULL, &outPath ); if ( 結果 == NFD_OKAY ) { puts("成功!"); puts(outPath); free(outPath); }else if ( result == NFD_CANCEL ) { puts("使用者按下了取消鍵。"); }else {printf("錯誤:%sn", NFD_GetError() ); }返回0; }
有關更多選項,請參閱自文件 API NFD.h。
主要版本增量表示 API 或 ABI 的離開。
次要版本增量表示建置或細微的偏離。
微版本增量只需重新編譯和插入即可。
發布 | 什麼是新的 | 日期 |
---|---|---|
1.0.0 | 最初的 | 2014 年 10 月 |
1.1.0 | 預製5; scons 已棄用 | 2016 年 8 月 |
1.1.1 | mingw 支持,建置修復 | 2016 年 8 月 |
1.1.2 | 新增了 test_pickfolder() | 2016 年 8 月 |
1.1.3 | 新增了 zenity Linux 後端 | 2017 年 11 月 |
修復 decls 中的 char 類型 | 2017 年 11 月 | |
1.1.4 | 修復 win32 memleaks | 2018 年 12 月 |
改進 win32 錯誤處理 | 2018 年 12 月 | |
macOS 修復焦點錯誤 | 2018 年 12 月 | |
1.1.5 | win32修復com重新初始化 | 2019 年 8 月 |
1.1.6 | 修復 osx 過濾器錯誤 | 2019 年 8 月 |
刪除已棄用的 scons | 2019 年 8 月 | |
修復 mingw 編譯 | 2019 年 8 月 | |
-Weextra警告清理 | 2019 年 8 月 |
NFD 使用 Premake5 產生的 Makefile 和 IDE 專案檔。 產生的專案檔案簽入到build/
下,因此大多數情況下您無需下載和使用 Premake。
如果您需要直接執行 Premake5,可以使用更多建置文件。
此前,NFD 使用 SCons 進行建置。 從 1.1.6 開始,SCons 支援已完全刪除。
nfd.a
將針對發布版本構建,而nfd_d.a
將針對調試版本構建。
makefile 提供最多四個選項, release_x64
為預設選項。
make config=release_x86 make config=release_x64 make config=debug_x86 make config=debug_x64
將src/include
新增至包含搜尋路徑。
將nfd.lib
或nfd_d.lib
加入要連結的靜態函式庫清單(分別用於發佈或除錯)。
將build/<debug|release>/<arch>
新增至庫搜尋路徑。
apt-get libgtk-3-dev
安裝用於函式庫編譯的 gtk 相依性。
在 Linux 上,您可以選擇針對 GTK 進行編譯和連結。 如果您使用它,建議的編譯方法是包含pkg-config --cflags --libs gtk+-3.0
的參數。
或者,您可以透過執行build/gmake_linux_zenity
中的 Makefile 來使用 Zenity 後端。 Zenity 在自己的位址空間中執行該對話框,但要求使用者在其係統上正確安裝和配置 Zenity。
在 Mac OS 上,將AppKit
新增至框架清單。
在 Windows 上,確保您連結的是comctl32.lib
。
有關 API 調用,請參閱NFD.h
有關範例程式碼,請參閱tests/*.c
。
編譯完成後, build/bin
包含編譯好的測試程式。 build/lib
下的對應子目錄包含建置的函式庫。
每個文件對話框 API 中都有一種文件過濾形式,但沒有一致的支援方法。 NFD 支援按副檔名組過濾文件,並為副檔名提供自己的描述(如果適用)。
通配符過濾器始終會新增到每個對話方塊中。
;
開始新的過濾器。
,
向過濾器新增單獨的類型。
txt
預設過濾器適用於文字檔案。 下拉式選單中有一個通配符選項。
png,jpg;psd
預設過濾器適用於 png 和 jpg 檔案。 第二個過濾器可用於 psd 檔案。 下拉式選單中有一個通配符選項。
僅限NULL
通配符。
請參閱 test_opendialogmultiple.c。
我接受高品質的程式碼補丁,或將透過支援解決這些問題和其他問題。 有關詳細信息,請參閱貢獻。
不支援 Windows XP 的舊版對話框,例如GetOpenFileName
。
不支援檔案過濾器名稱 - 例如:「圖片檔案」(*.png、*.jpg)。 但是,支援無名過濾器。
GTK Zenity 實現的程序執行錯誤處理無法優雅地處理大量錯誤情況,選擇中止而不是清理和返回。
GTK 3 垃圾郵件每建立一個對話框就會發出一個警告。
版權所有 © 2014-2019 Frogtoss Games, Inc. 檔案授權涵蓋此儲存庫中的所有檔案。
本機文件對話框,作者:Michael Labbe [email protected]
托馬斯·科諾傑基(Tomasz Konojacki)的 microutf8
Denis Kolodin 提供 mingw 支援。
Tom Mason 支持 Zenity。
根據付費協議,原作者可提供本作品的直接支援。
聯繫青蛙遊戲。