2022年11月8日 星期二

Association File 範例

這是用 CodeBlocks 製作的專案,並須備好 C++ 編譯器和 wxWidgets,主要在介紹幾個 wxWidgets 強大的功能。程式雖然在 Windows 系統環境下寫的,但因 wxWidgets  是跨平台的程式庫,因此在其他系統環境下也應該可行。

程式的主要目的在達成程式與關聯檔案(Association File)的聯結,只要對關聯資料檔案點兩下,就可以叫出程式來虙理。

這主要依賴 wxTheMimeTypesManager 這個 wxWidgets 元件來完成,可以看看範例中的 DblClickDialog::On_AssociateClick() 和 DblClickDialog::On_UnassociateClick() 是如何做到聯結與取消聯結。

當使用者對關聯資料檔案點兩下時系統就會執行程式,並把關聯資料檔案的完整 path/filename.ext 作為第一個參數傳給程式,對於 Command Line 參數的解析處理可交給 wxCmdLineParser 來做。

wxWidgets 的 wxApp::OnInitCmdLine() 及 wxApp::OnCmdLineParsed() 兩個虛擬函數就是規畫好作為處理的程序,只要 override 就行了,可參考 class DblClickApp 的做法。有點要注意, 在 DblClickApp::OnInit() 中須叫用 wxApp::OnInit(),那兩個虛擬函數才會被執行。

除此之外還有一些須要的功能,wxStandardPaths 可得到程式執行時各相關目錄的訊息,wxFileName 可以解析完整目錄檔名以方便取用。

還有一點程式是用 wxStaticText 來顯示訊息,wxStaticText 一般都在設計之初就已經安排好了大小,為了在執行時期能容納不同的訊息量,於是在 DblClickDialog::SetText() 中用 Fit() 叫 Dialog 再對各元件做機動調整。

另外 Icon 只要在 resource.rc 指定好,編譯程式會自動處理好。比較麻煩的是 Icon 製作,不過只要上網找 free icon 就會有一堆免費的圖案可下載,然後再交給 PNG轉ICO - 在線轉換圖標文件 (aconvert.com) 製作就行了。


參考資料 File associations - wxWidgets Discussion Forum

範例下載 DblClick_Test.zip






沒有留言:

張貼留言