體驗Code::Blocks下的Windows GUI編程(32 bit and 64 bit)

  • 2019 年 10 月 7 日
  • 筆記

0. 前言

不知道為什麼,幾乎所有的C++編程教程都是從命令行版(控制台應用程式)的Hello World開始的。然而,對於現在的年輕人來說,從小就用滑鼠點擊窗口或圖標操作電腦,對於那個神秘黑色的窗口中的文字就像天書。對於我們這些從DOS時代走來的人,或許那個黑色窗口會喚起很多記憶,但是,對於當前的GUI化的時代來說,那個窗口已經沒有多少意義了。除非為了顯示我的知識淵博和高深莫測,通常我不會給年輕人講述那個黑色窗口中的東西。

既然現在學習C++編程的都是年輕人,我還是講一下怎樣構建GUI版的Hello World吧。

如果你還沒有搭建Code::Blocks平台,請先看一下我的另一篇文章:《利用Code::Blocks搭建64位C++開發平台》。

下面我要講述的內容包括:在Code::Blocks中用C++編寫一個Windows GUI程式,並編譯生成32 bit 和64 bit兩個版本。

1.使用嚮導新建一個Windows GUI程式

創建Windows GUI程式和創建Console application的操作幾乎是相同的,所以在看以下步驟之前,先看一下我的另一篇文章《體驗Code::Blocks下的C++編程》。

在下面的描述中,只要與創建控制台程式相同的操作我將簡述或省略。這樣做不僅僅是為了節省我時間,也是為了給伺服器節省一點空間。

第一步:打開新建項目嚮導

這一步跟創建控制台程式是相同的,後續就有差別了。有兩種方法:

①主菜單:File->New->Projects

②點擊Start Here頁面中的Create New Project

第二步:在嚮導中選擇項目類型Win32 GUI project

第三步:選擇窗口類型,點擊Next

提供兩種窗口類型,具體意義以後解釋,現在隨便選擇一個就可以了(比如選擇Dialog based)。

第四步:輸入項目名稱、文件

選擇文件保存位置,輸入項目標題後,項目文件名自動按標題生成。

介面及操作與控制台程式相同,程式名設置為ghello。

第五步:選擇編譯器

這一步介面、內容及操作與控制台程式相同,還是保持默認就可以了,直接點擊Finish就行了。

生成的文件比控制台文件要多一些,包括源程式碼、頭文件、資源文件等。

第六步:編譯運行

點擊上圖中的編譯運行按鈕,就會執行編譯過程。只要不出現錯誤,編譯鏈接完成後就會運行程式,出現以下窗口。這只是一個空窗口,儘管沒有內容,但外觀跟平時使用的程式的窗口是一樣的。

到這一步,你的第一個windouows GUI應用程式已經創建完成了,是不是很簡單?

2. 改為Hello World

儘管生成的是一個空窗口,起碼說出現了熟悉的樣貌了。以後根據需要,添加程式碼,就可以實現更多的功能。

現在先把窗口的標題由Dialog改為Hello World

雙擊Code::Blocks左邊管理欄中的文件resource.rc,你會在右邊的程式碼編輯區看到以下程式碼

// Generated by ResEdit 1.5.10  // Copyright (C) 2006-2012  // http://www.resedit.net    #include <windows.h>  #include <commctrl.h>  #include <richedit.h>  #include "resource.h"      //  // Dialog resources  //  LANGUAGE 0, SUBLANG_NEUTRAL  DLG_MAIN DIALOG 0, 0, 186, 95  STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU  CAPTION "Dialog"  FONT 8, "Ms Shell Dlg"  {  }      //  // Manifest resources  //  LANGUAGE 0, SUBLANG_NEUTRAL  1                  RT_MANIFEST    ".\manifest.xml"

將其中的CAPTION “Dialog”修改為CAPTION “Hello World”。然後按第六步的操作編譯運行。運行結果窗口的標題是不是編程Hello World了?

儘管這個修改沒有實際意義,但是,起碼說,它按著我們的意圖改變了。以後,我們可以通過修改或增加程式碼,實現我更多的、有意義的功能。

 3. 分別編譯為32bit和64bit程式

對於原生的程式碼來說,編譯生成32bit和64bit程式是很簡單的。

如果你使用的是32bit的TDM-GCC,編譯結果一定是32bit的應用程式。如果你使用的是64bit的TDM-GCC,按以下步驟操作,可編譯生成32bit和64bit程式。

 3.1 編譯生成32bit應用程式

第一步:在Code::Blocks左邊管理欄中的項目名稱ghello上右擊滑鼠,從彈出菜單中選擇Build options打開項目構建選項窗口。

第二步:選擇構建目標,然後點擊[OK]

如圖所示,你看到在項目構建選項窗口中有構建目標選項。勾選32bit選項,則編譯生成的程式為32bit的,勾選64bit或者兩個都不選,則編譯生成的程式為64bit的。

勾選其中32bit的,然後點擊[OK],關閉構建目標選項窗口。

第三步:重新編譯

在Code::Blocks左邊管理欄中的項目名稱ghello上右擊滑鼠,從彈出菜單中選擇Rebuild,開始重新編譯程式。然後,耐心等待直到編譯完成。

第四步:運行並驗證編譯結果

點擊Code::Blocks上部工具欄中的運行按鈕(綠色三角)運行程式,出現標題欄中顯示Hello World的窗口。

右擊電腦螢幕左下角的作業系統主菜單按鈕,從彈出菜單中選擇“任務管理器”,打開任務管理器窗口。

從窗口的“應用”欄中找到gheloo.exe,你會發現後面有(32位)標記,表示應用程式是32bit的。

3.2 編譯生成64bit應用程式

重複執行4.1中的第一步至第四步,不同之處是在第一步的構建目標選項窗口中勾選64bit,其他操作完全相同。

你會發現重新編譯後在第四步的任務管理器窗口中gheloo.exe後的括弧沒有了,說明編譯生成的應用程式是64bit的了。

4 結束語

感覺怎麼樣?很簡單吧?

其實,學會編寫程式是一件很簡單的事情,不過,要想學好、學精,就需要多學多練,逐步積累經驗。可以從簡單的程式開始,逐步增加功能。也可以選用別人的一個程式,嘗試著修改,實現自己需要的功能。

就像學習語文一樣,學會了單個字詞,然後組成語句。語句多了就成了文章,語句間有了好的邏輯關係就成了好文章了。