0.前言
CodeBlocks是使用C++編寫程式的一個很好的開發環境,最大的好處是它是開源的、免費的,而不僅僅是因為它具有跨平臺的能力。還有一個很重要的原因是在CodeBlocks中可以使用wxWidget,wxWidget也是開源的、免費的。
儘管Qt和MFC也很優秀,Qt Creator和Visual Studio都是很優秀的開發環境,但是版權要求和商業化在一定程度上限制了他們的使用範圍。而這一點上,CodeBlocks + wxWidget正是一種最好的選擇。
- 在這篇文章裡,我主要講述以下幾個方面的內容:
- 安裝wxWidget前的準備工作
- 下載最新版的wxWidget
- 安裝、編譯wxWidget
- 在CodeBlocks中配置使用wxWidget的選項
- 修改CodeBlocks的檔案使它支援wxWidget3.2.6
- 測試在CodeBlocks中使用wxWidget編寫的第一個程式
- 結束語
1.安裝wxWidget前的準備工作
1.1安裝CodeBlocks
在安裝wxWidget之前,你應該確定你已經安裝了CodeBlocks並能夠正常使用。
在網上搜尋“CodeBlocks”可以找到很多介紹安裝CodeBlocks的文章。我以前曾經寫過一篇文章,介紹安裝CodeBlocks的方法和步驟。文章的網址是:
體驗Code::Blocks下的C++程式設計 - lexyao - 部落格園
使用codeblocks-17.12mingw-setup.exe安裝的CodeBlocks開發環境是32位的,搭配的編譯器也是32位的。點選以下連結可以找到最新版的CodeBlocks下載地址,在我寫這篇文章的時候可以下載的最新版本是CodeBlocks20.3,它的CodeBlocks開發環境也是32位的,但搭配的編譯器是64位的。
Binary releases - Code::Blocks
至於需要32位的還是64位的編譯器,一方面看你的需要,另一方面要看你的電腦是32位的還是64位。好在現在的新電腦基本都是64位的。
1.2安裝GCC
安裝了CodeBlocks之後,你還要為CodeBlocks安裝、配置編譯器。
如果你安裝CodeBlocks的安裝包中已經搭配了編譯器,你直接使用就行了。
如果你安裝CodeBlocks的安裝包沒有搭配編譯器或者你想把搭配的編譯器換成最新版本的,你就需要下載新的編譯器安裝包,安裝、配置編譯器。
開啟下面的網址,你會看到我寫的另一篇文章,裡面介紹了為CodeBlocks安裝、配置64位編譯器的方法。這適用於沒有安裝編譯器的人,也適用於想更換更高版本的編譯器的人。
體驗Code::Blocks下的Windows GUI程式設計(32 bit and 64 bit) - lexyao - 部落格園
2.下載最新版的wxWidget
在瀏覽器中百度一下“wxWidget”,你會找到多個可以下載wxWidget的網址。這些網址下載的檔案有與官網一致的,也有加入了我們不知道的內容的。為了保險起見,建議從官網下載,這樣使用起來更放心。
下載wxWidget的官方網站的網址是:Downloads - wxWidgets
這個網站提供了wxWidget最新穩定版本的下載,也有過去釋出的穩定版本的下載。如果沒有特殊的需要,通常都是下載最新的穩定版本的wxWidget。我在血這篇文章的時候,最新的穩定版本是wxWidget3.2.6,釋出日期是2024 年 9 月 9 日,API 穩定起始時間是2022 年 7 月 7 日。
官網釋出的wxWidget有已經編譯了的二進位制檔案包,也有沒有編譯的原始碼檔案包。二進位制檔案包下載後可以直接使用,但它不一定是你需要的。原始碼檔案包下載後需要你自己編譯成二進位制的,雖然麻煩一些,但好在你可以根據你的需要設定編譯引數。
開啟下載網頁,裡面有適合Windows和Linux、macOS 等的原始碼檔案包,而適合於Windows下的檔案包有Windows ZIP和Windows 7z,建議下載Windows 7z檔案包,兩者的內容是一樣的,而7z的檔案包要比ZIP的檔案包小的多,會節省下載時間和儲存檔案需要的磁碟空間。你不必擔心檔案包解壓的問題,Windows作業系統下的“檔案資源管理器”可以直接開啟、解壓這兩種格式的壓縮檔案包。
透過下面下載網頁的截圖你會看到我標註的除了下載wxWidget3.2.6原始碼檔案包的連結之外,還有一個“線上文件”連結,建議收藏這個連結,裡面有關於wxWidget3.2.6的所有文件,抽時間看一下,對你會有幫助。
3.安裝、編譯wxWidget
3.1 解壓wxWidget3.2.6原始碼檔案包
前面已經下載了wxWidget3.2.6原始碼檔案包,檔名應該是wxWidget-3.2.6.7z。
將下載的原始碼檔案包解壓到一個資料夾中。資料夾的名字你可以隨便取一個合法的名字,但需要注意兩點要求:資料夾名稱中不能包含漢字和空格。
我的檔案包解壓到了以下資料夾中,後面的敘述將會用到這個資料夾的名稱。你在操作的時候要將用到這個資料夾的地方替換成你解壓後的資料夾。
D:\CodeBlocks\wxWidgets-3.2.6
記住這個安裝路徑,在後面的操作中還會用到。
注:如果在作業系統的環境變數中新增WXWIN=“D:\CodeBlocks\wxWidgets-3.2.6\”,你就可以直接使用%WXWIN%代替D:\CodeBlocks\wxWidgets-3.2.6了。
設定的操作方法是:
①新建一個文字檔案,命名為setenv.bat
②用記事本開啟setenv.bat檔案,輸入以下內容:
setx wxwin "D:\CodeBlocks\wxWidgets-3.2.6"
echo %WXWIN%
cd %WXWIN%
pause
注意:使用的是setx而不是set
③在檔案資源管理器中用滑鼠雙擊setenv.bat檔案,你會看到“命令提示符”視窗出現以下畫面,你設定的操作就完成了。
第一行是設定wxwin 的命令,後面的echo %WXWIN%和cd %WXWIN%是兩個測試,pause是暫停的意思,讓你能夠看到測試的結果。
3.2 配置編譯器路徑
在執行編譯操作前,你要確定你已經將編譯器的路徑設定到了作業系統的環境變數的path中。
如果你是單獨安裝的編譯器,應該在安裝的時候已經由安裝程式將路徑新增到了path中,不需要你再設定。如果是CodeBlocks安裝包中包含的編譯器,則需要你自己去新增。
3.2.1 新增編譯器路徑到環境變數path中
新增的方法有兩種,你可以選擇任何一種方式。
我的編譯器的安裝路徑是C:\Program Files\CodeBlocks\MinGW\bin。你操作時要使用你的編譯器安裝路徑替換這個路徑。
第一種方式:親自動手設定環境變數。操作步驟如下:
這裡以Windows 11為例,你可以按著你的作業系統版本的操作步驟設定,具體可以透過百度一下“設定環境變數”找到操作方法。
①依次點選[設定->系統->系統資訊->高階系統設定],開啟[系統屬性]視窗
②依次點選[高階->環境變數…],開啟[環境變數]視窗
③依次點選[使用者變數欄中的path行->編輯],開啟[編輯環境變數]視窗
④點選[新建]按鈕,輸入編譯器路徑(可以貼上,這樣可以避免錯誤),然後點選[確定]按鈕,關閉[編輯環境變數]視窗,回到[環境變數]視窗
⑤點選[環境變數]視窗的確定,完成操作。
第二種方式:
①新建一個文字檔案,命名為setenv.bat
②用記事本開啟setenv.bat檔案,輸入以下內容:
setx path "C:\Program Files\CodeBlocks\MinGW\bin;%path%"
注意:使用的是setx而不是set
③在檔案資源管理器中用滑鼠雙擊setenv.bat檔案,你會看到“命令提示符”視窗一閃而滅,你設定path的操作就完成了。
你是不是覺得第二種操作要比第一種簡單一些啊?我是喜歡用第二種方式的。
3.2.2 檢視設定path的結果,確認操作完成了
採用第一種方式新增路徑到path變數中,操作比較直觀,再次開啟環境變數視窗看到你新增的路徑在環境變數的path中,就說明你的操作成功了。用這種方式也可以驗證第二種方式的操作結果是不是完成了。
當然,你也可以用類似第二種方式的方法驗證操作的結果。
新建一個檔案viewpath.bat,用記事本將以下程式碼新增到viewpath.bat檔案中。
path
pause
滑鼠雙擊viewpath.bat檔案,你會看到“命令提示符視窗”開啟,並顯示了path變數的內容,你從裡面找到你新增的編譯器路徑,就說明操作成功了。以下是我的“命令提示符視窗”中顯示的內容:
3.2.3 測試編譯器執行是否能正常執行
新建一個檔案testgcc.bat,用記事本將以下程式碼新增到testgcc.bat檔案中。
mingw32-make --v
pause
滑鼠雙擊testgcc.bat檔案,你會看到“命令提示符視窗”開啟,並顯示了編譯器版本相關的內容,就說明操作成功了。以下是我的“命令提示符視窗”中顯示的內容:
mingw32-make是編譯器的程式名,完整的檔名是mingw32-make.exe,後面的--v是命令列引數,意思是檢視編譯器mingw32-make的版本。圖中可以看到我的編譯器版本是4.2.1,這是Code Blocks 20.3安裝包中整合的編譯器。
如果你在上一步設定路徑失敗,滑鼠雙擊testgcc.bat檔案看到的則是下面的畫面:
只有編譯器路徑設定成功了,你才可以進行下一步操作。
3.3 編寫編譯命令檔案的準備工作
在編譯wxWidgets之前需要了解編譯生成檔案的形式和編譯需要的命令列引數,這樣你在執行編譯操作的時候可以根據自己的需要進行選擇。
以下網址是官方提供的安裝wxWidgets的操作說明,你可以仔細閱讀。這裡面除了介紹Microsoft Visual C++和Visual Studio的部分,其他的都要仔細閱讀。
wxWidgets: Installing wxWidgets for Windows
(注:還有一個關於加快編譯速度的文章,在編寫這篇文章的時候忘記它在什麼地方了,將來如果再看到時會加在這裡。那篇文章中提到了--jn引數,可以透過使用n個cpu編譯wxWidgets,編譯速度將會大大加快。)
以下是我摘錄的我認為比較重要或者說有用的部分。原文是英文的,翻譯可能存在不準確的,你可以對照英文原文閱讀,避免我的翻譯錯誤誤導了你。
從 Windows 命令列使用 makefile必須從 DOS 命令列視窗執行。
首先進入%WXWIN%\build\msw目錄,其中的%WXWIN%是指你解壓的wsWidgets所在的目錄。我的%WXWIN%是D:\CodeBlocks\wxWidgets-3.2.6。
在命令提示符視窗中%WXWIN%\build\msw就應該是D:\CodeBlocks\wxWidgets-3.2.6\build\msw。
基本的編譯命令如下:
mingw32-make -f makefile.gcc
makefile.gcc是D:\CodeBlocks\wxWidgets-3.2.6\build\msw下的一個檔案,在你明白其中的內容之前不用管它,將來你掌握的知識多了可能需要修改其中的設定,比如wxWidgets的那些檔案包需要編譯,哪一些不需要編譯。
庫配置:雖然沒有必要這樣做,但你可能想在構建 wxWidgets 之前更改檔案%WXWIN%\include\wx\msw\setup.h中的一些選項。這個檔案有大量的註釋,請閱讀它並啟用或停用你想要編譯 wxWidgets 的功能。
Makefile 引數:前面提到的基本編譯命令採用的是引數的預設值。如果你不想採用預設值,或者將引數顯式地寫在命令列中,你可以將引數新增在基本編譯命令的後面。
可能對你有用的命令列引數如下:
-
BUILD=release
生成庫的釋出版本,生成的庫名稱中沒有附加 'd'。預設的是BUILD=debug,生成庫的除錯版本,庫名稱中附加 'd'。請注意,預設情況下,即使是釋出版本也可以包含除錯資訊,請參閱DEBUG_FLAG瞭解更多資訊。
-
SHARED=1
構建共享庫 (DLL)。預設情況下,不構建 DLL (SHARED=0)。如果設定SHARED=1,將來你釋出你的應用程式時要把你的程式用到的DLL檔案一起釋出。
-
UNICODE=0
完全停用 Unicode 支援(預設為 UNICODE=1)。應該沒有必要這樣做。
此選項會影響庫的名稱(預設 Unicode 構建中附加了 'u')以及儲存庫和 setup.h 的目錄(同上)。
-
WXUNIV=1
構建 wxUniversal 而不是原生 wxMSW
-
MONOLITHIC=1
從版本 2.5.1 開始,wxWidgets 能夠構建為多個較小的庫,而不是像過去在 2.4 及更早版本中那樣構建為單個大庫。這稱為 “multilib build”,是 makefile 的預設行為。您仍然可以透過將 MONOLITHIC 變數設定為 1 來構建單個庫(“monolithic build”)。
-
USE_GUI=0
停用構建庫的 GUI 部分,僅構建控制檯應用程式使用的 wxBase 元件。請注意,如果您離開,則會構建 wxBase 和 GUI 庫。
USE_GUI=1
-
USE_$LIBRARY=0
不要構建相應的庫(預設情況下會構建所有庫)。可以以這種方式停用的庫有:AUI、HTML、MEDIA、GL(選項名稱用於此)、PROPGRID、QA、RIBBON、RICHTEXT、STC、WEBVIEW、XRC。
USE_OPENGL
DEBUG_FLAG=0
DEBUG_FLAG=1
-
DEBUG_FLAG=2
指定 wxWidgets 中的除錯支援級別。請注意,這與 BUILD 和 options 無關。預設情況下,始終設定為 1 表示啟用除錯支援。將其設定為 0 將完全停用 wxWidgets 中的所有除錯程式碼,而將其設定為 2 將會因為檢查而耗時較多。
DEBUG_INFO=0
-
DEBUG_INFO=1
此選項會影響是否生成除錯資訊。如果省略或設定為 'default',則其值將確定 BUILD 選項的值。
-
VENDOR=<your company name>
如果您計劃將 wxWidgets DLL 與應用程式一起分發,請將其設定為標識您的公司的短字串。預設值為 'custom'。此字串作為 DLL 名稱的一部分包含在內。wxWidgets DLL 包含編譯器名稱、版本資訊和供應商名稱。例如,是使用具有預設設定的 Visual C++ 構建的 DLL 之一。如果您設定 VENDOR=mycorp,則名稱將更改為
wxmsw311u_core_vc_custom.dll
wxmsw311u_core_vc_mycorp.dll.
-
CFG=<configuration name>
設定配置名稱,以便您可以在同一樹中共存具有不同 setup.h 設定的多個 wxWidgets 構建。此選項的值將附加到構建目錄名稱中。這對於在某些非預設配置中構建庫非常有用,例如
wxUSE_STL
,您可以在%WXWIN%\include\wx\msw\setup.h
中更改為 1,然後使用它構建。或者,你可以使用例如CFG=-stl
RUNTIME_LIBS=static CFG=-mt
使用 MSVC 時。wxUSE_STL
%WXWIN%\include\wx\msw\setup.h
CFG=-stl
RUNTIME_LIBS=static CFG=-mt
-
COMPILER_PREFIX=<string>
如果使用同一編譯器的多個版本進行構建,則可以將它們的輸出放入目錄(如
vc6_lib、
vc8_lib、
vc_lib、
vc6
),而不是使用變數設定。這只是一個方便的變數,您可以使用 CFG 選項實現相同的效果(但目錄名稱不同)。 - CFLAGS
- CXXFLAGS
- CPPFLAGS
-
LDFLAGS
分別用於 C 編譯器、C++ 編譯器、C 前處理器(用於 C 和 C++ 編譯)和連結器的其他標誌。
3.4 執行編譯操作
編譯wxWidgets的操作是在“命令提示符”視窗中以命令列的形式操作的,如果你不習慣命令列操作或者不熟悉dos命令,操作起來就會覺得比較困難。
我推薦的方法還是編寫一個檔案,把編譯操作需要執行的命令儲存在檔案中,用滑鼠雙擊這個檔案就行了,這樣就不用考慮其他的命令了。
編譯wxWidgets的操作步驟如下:
①在%WXWIN%\build\msw資料夾中新建一個檔案wxBuild.bat,用記事本將以下程式碼新增到testgcc.bat檔案中。
注1:如果wxBuild.bat不在%WXWIN%\build\msw資料夾中,需要將cd %WXWIN%\build\msw前面的::去掉,則cd命令得到執行可以設定cd %WXWIN%\build\msw為當前資料夾
注2:如果存在以前編譯的wxWidgets庫檔案,需要將mingw32-make -f makefile.gcc clean前面的::去掉,則clean引數起作用刪除以前編譯的wxWidgets庫檔案
@echo off
title Compile wxWidgets
echo Start Compile ...
echo ---------------------------------------------------------------------
::cd %WXWIN%\build\msw
::echo Clean Env
::mingw32-make -f makefile.gcc clean
echo Compile Release Version
mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=1 UNICODE=1
echo Compile Debug Version
mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=1 UNICODE=1
echo ---------------------------------------------------------------------
echo Compile Succeed.
pause
②滑鼠雙擊wxBuild.bat檔案,你會看到“命令提示符視窗”開啟,編譯wxWidgets操作開始執行。這個工作過程需要很長的時間,可能需要一個小時甚至更長的時間,請耐心等待,或者去幹點其他的事情。這個過程需不要你的參與,只要不停電、不關閉“命令提示符視窗”就行。
當你看到“命令提示符”視窗中出現了“請按任意鍵繼續…”時,說明編譯工作完成了。
完成編譯後,你在檔案資源管理器中開啟D:\CodeBlocks\wxWidgets-3.2.6\lib\gcc_lib資料夾,你會看到編譯後生成的wxWidgets庫檔案。資料夾中編譯生成的庫檔案的檔名有一個共同點,就是以libwx開頭,以.a為副檔名。其中有libwxmsw32ud.a、libwxmsw32u.a、libwxpng.a、libwxpngd.a,其中的msw表示適用於Windows作業系統的,32表示時wxWidgets的3.2.x版本,u表示使用了引數UNICODE=1,d表示使用了引數BUILD=debug,而沒有d的表示使用了引數BUILD=release。
從檔名的命名規則可以看出,在檔名中有與引數有關的字母,這也說明不同引數設定編譯生成的庫檔案是可以共存的,你可以根據需要採用多種引數組合生成庫檔案。
我在編譯引數中使用了MONOLITHIC=1,編譯形成的帶有32的庫檔案只有下圖中的四個,單個檔案的位元組數較多:
而使用MONOLITHIC=0編譯的庫檔案中檔名含有32的要有更多,單個檔案的位元組數很小。
MONOLITHIC引數的這兩種方式各有優缺點:
將庫檔案集中到單個檔案中,在編寫程式時把這個大的庫檔案連結到程式中,這樣會減少找不到函式的定義的錯誤,這對於不熟悉庫檔案的初學者來說會減少很多麻煩,缺點就是編譯生成的exe檔案有點大。
將庫檔案分散到多個小檔案中,用到哪一個就連結哪一個,這樣會減小生成的exe檔案,加快編譯速度,缺點是不熟悉庫檔案的初學者面對編譯時連續出現的錯誤手足無措。
文章寫到這裡,你應該直到你要怎麼選擇了吧?
4.在CodeBlocks中配置使用wxWidget的選項
要想在CodeBlocks中使用wxWidgets編寫程式,就要告訴CodeBlocks你編譯的wxWidgets庫檔案在哪裡。CodeBlocks使用$(#wx)來獲得wxWidgets庫檔案的位置,你只要設定全域性變數wx就可以了。
設定wx的操作步驟如下:
①在CodeBlocks中點選主選單[Settings->Global variables…]開啟[Global Variable Editor]視窗
②在Current Variable欄中點選[New]按鈕新增新增一個wx變數
③選中wx,在對應的Built-in fields:欄中的 base設定為儲存wxWidgets資料夾%WXWIN%,如下圖中的①所示。將來你的wxWidgets安裝目錄變化之後只需變更此變數的base路徑即可。
5.修改CodeBlocks的檔案使它支援wxWidget3.2.6
編譯wcWidgets並設定了wx變數後就可以建立使用wcWidgets的應用程式了。操作步驟你可以參考的另一篇文章《體驗Code::Blocks下的Windows GUI程式設計(32 bit and 64 bit)》中的“1.使用嚮導新建一個Windows GUI程式”。
區別只是在第二步選擇專案型別時要選擇“wcWidgets project”而不是“Win32 GUI project”,之後按嚮導提示完成即可。
不過,當嚮導進行到選擇wcWidgets 版本的時候,你會發現可以選擇的最高版本是wcWidgets 3.1.x,沒有3.2.x可供選擇。
選擇了 wcWidgets 3.1.x會有什麼結果呢?還記得前面我們看到的編譯生成的庫檔案中有版本號32,而選擇了wcWidgets 3.1.x後在編譯你的專案的時候編譯器會連結版本號為31的庫檔案,這樣就會因為找不到相應版本的庫檔案而導致編譯失敗。
怎麼解決這個問題呢?我們可以在編譯設定中將嚮導新增的庫檔案的版本由31改為32,這樣編譯就成功了。
這樣的修改在每個專案中都要做,很麻煩。有沒有一勞永逸的辦法呢?下面我們就來找一個一勞永逸的辦法。
下面我要說的方法參考了以下兩篇文章,也算是抄襲吧。如果你反對抄襲,可以在心中默默地罵我一聲,然後開啟下面的網址去看原文。
codeblocks20.3配置wxWidget3.2.2.1_codeblocks20.03 wxwidgets 3.2.4-CSDN部落格
Windows10下CodeBlocks20.3配置wxWidget3.2.2.1_codeblocks wxwidgets-CSDN部落格
新增wcWidgets 3.2.6版本支援的操作步驟如下:
第一步、找到CodeBlocks安裝目錄下的share\CodeBlocks\templates\wizard\wxwidgets\wizard.script檔案,將它備份。
第二步、在記事本中開啟wizard.script檔案,對它進行以下修改:
①搜尋“3.1”,參照3.1的設定新增3.2
②修改下述語句(大概755行),把WxVersion == 3改成WxVersion >= 3
if (WxVersion >= 3 && GetCompilerFactory().CompilerInheritsFrom(Wizard.GetCompilerID(), _T("gcc*")))
③儲存檔案。
經過這樣的修改之後在新建“wcWidgets project”專案的時候嚮導中就可以選擇wcWidgets 3.2.x,編譯器可以直接使用32版本的wcWidgets 庫檔案了。
注:關於上面文章中說的修改以下兩行把false改成true,如果你覺得有必要可以一併修改了。好像在我沒有修改這兩行的時候codeblocks20.3似乎預設新增了libwxjpegd.a、libwxtiffd.a。
LibWxJpeg <- true; // JPEG Lib
LibWxTiff <- true; //TIFF Lib
6.測試在CodeBlocks中使用wxWidget編寫的第一個程式
儘管建立“wxWidgets project”專案與《體驗Code::Blocks下的Windows GUI程式設計(32 bit and 64 bit)》中的“1.使用嚮導新建一個Windows GUI程式”描述的建立“Win32 GUI project”的操作相似,但嚮導階段的選擇還是有差別的,所以在這裡我將詳細介紹建立“wcWidgets project”專案的操作步驟。
第一步:開啟新建專案嚮導
這一步跟建立控制檯程式是相同的,後續就有差別了。有兩種方法:
①主選單:File->New->Projects
②點選Start Here頁面中的Create New Project
第二步:在視窗中選擇專案型別wcWidgets project
第三步、按嚮導的提示完成建立專案的過程
我重點介紹幾個嚮導介面,沒有介紹的嚮導頁面你直接點選Next按鈕就行了。
嚮導頁面①:選擇wxWidgets 3.2.x。有這個版本號可以選擇,正式我們修改wizard.script檔案的成果。
嚮導頁面②:輸入專案名稱。將來你編譯生成的exe應用程式將會使用這個名稱。儲存這個專案的資料夾也會預設使用這個名稱,不過你可以在這個頁面中修改儲存專案檔案的資料夾。
嚮導頁面③:這個介面有兩組選項,如何選擇很重要!!!
第一個選擇Preferred GUl Builder:選擇你編寫程式時構建GUI介面使用的方法。
- None:你將在專案中使用輸入程式碼的方式構建GUI介面。這種方式比較靈活、方便,但只有執行時才能看到構建的GUI介面的效果。
- wxSmith:你將在專案中使用介面設計器wxSmith以所見即所得的方式構建GUI介面。這種方式比較直觀,在設計時就看到GUI介面的效果。wxSmith一款基於wxWidgets的介面設計器,也是Code Blocks預設的介面設計器。
- wxFormBuilder:你將在專案中使用介面設計器wxFormBuilder以所見即所得的方式構建GUI介面。wxFormBuilder也是一款基於wxWidgets的介面設計器,需要你自己安裝了才可以使用。
第二個選擇Application Type:選擇你的應用程式的型別,也就是說你要基於哪一種型別建立你的應用程式的主介面。
- Dialog Based:基於wxDialog建立你的應用程式的主介面
- Frame Based:基於wxFrame建立你的應用程式的主介面
嚮導頁面④:wxWidgets庫檔案的位置。預設是wx。
如果你在電腦中同時存在多個型別的wxWidgets庫檔案,而且已經像設定wx那樣在[Settings->Global variables…]設定了不同的全域性變數,你可以根據需要將wx替換為指向你想要使用的庫檔案的全域性變數。
嚮導頁面⑤:這個介面有兩組選項,如何選擇很重要!!!
第一組選項wxWidgets Library Settings:
這是一組多選項,你可以選擇其中的任意一個或多個,但你選擇的必須是可用的。這一組選項中的每一個選項都對應著你編譯wxWidgets庫檔案時使用的命令列引數。
Use wxWidgets DLL:編譯引數SHARED=1時可用。如果沒有SHARED=0時編譯的庫檔案,這個選項就必須選中。
wxWidgets is built as a monolithic library:編譯引數MONOLITHIC=1。如果沒有MONOLITHIC=0時編譯的庫檔案,這個選項就必須選中。
Enable unicode:編譯引數UNICODE=1。如果沒有UNICODE=0時編譯的庫檔案,這個選項就必須選中。
第二組選項Miscellaneous Settings:這個雜項設定你可以不用管它。如果感興趣,你可以抽時間瞭解並測試這些選項。
至此,你已經完成了你第一個基於wxWidgets的專案的建立。下圖中顯示了嚮導為你建立的專案中包含的檔案的清單。
第四步、編譯執行你的專案
點選上圖中的編譯執行按鈕,就會執行編譯過程。Code::Blocks右下角的視窗中有兩個選項卡,分別是編譯日誌和編譯資訊。如果編譯出錯,會在這裡出現紅色的錯誤資訊。如果是程式碼錯誤,編譯結束後,點選錯誤資訊,程式碼視窗會跳轉到出錯的程式碼行。
只要不出現錯誤,編譯連結完成後就會執行程式,出現你的應用程式執行後的主介面視窗。
以下是基於wxFrame建立的應用程式的主介面:在嚮導的選擇GUI構建方式時,第一個選擇了wxSmith,第二個選擇了None
以下是基於wxDialog建立的應用程式的主介面:在嚮導的選擇GUI構建方式時,第一個選擇了wxSmith,第二個選擇了None
7.結束語
搭建是過程,使用是目的,為了達到目的需要學習、練習。在不斷的練習中積累經驗,熟練掌握,實現從模仿到創新的過程,最終寫出自己的應用程式。
在建立自己的應用程式時,你可以選擇適合於你的目標的方式用嚮導建立一個應用程式框架,然後在這個框架的基礎上新增你自己需要的元件和程式碼。
當你覺得你經驗已經非常豐富了之後,你可以先建立一個空專案,然後逐步新增你的介面和程式碼。
在使用wxWidgets程式設計之前,建議你係統地學習wxWdigets程式設計的知識。在這裡向你推薦一個完整的教程,學習了這個教程的全部內容,你將可以自豪地說,我已經學會了使用wxWidgets程式設計了。不過,你要成為高手,還需要進一步的努力。
如果你已經掌握了C++程式設計的知識,可以開啟下面的連結學習使用wxWidgets程式設計的知識:
wxWidgets 跨平臺 GUI 程式設計
如果你還沒有掌握程式設計的知識,建議你先開啟下面的連結學習C和C++的知識,然後再學習使用wxWidgets:
C 語言教程 | 菜鳥教程
C++ 教程 | 菜鳥教程
另外,關於學習C++程式設計是否需要先學習C語言程式設計的問題,沒有人知道那種答案是正確的。大家的觀點可謂是仁者見仁智者見智。
我個人覺得學習C++程式設計還是有必要了解C語言程式設計的,主要是基於以下理由:
- C語言的語法比C++更容易學會,有利於初學者入門。
- C++與C語言有相同的語法,掌握了C語言後可以更快地掌握C++。
- C++物件導向的程式設計方式對於初學者來說不容易理解,在C語言的基礎上去理解C++的物件導向的程式設計方式會容易一些。
- 兩者都學習了之後,瞭解了兩者的區別,在學習一些示例程式的時候可以減少迷茫,避免誤解。