2013年5月19日 星期日

在 Dev C++ 中自訂一個範本 (Template)


不久之前為了在 Dev C++ 加入一個 dialog box base 的 Windows 程式範本 (Template),參照原來就存在於 Dev_cpp\template 目錄下的範本,自行新增範本檔案 "winapp_dialog.template"。

[Template]
ver=1
Name=Dialog Box Application
IconIndex=0
Description=A Dialog Box Application with Resource File
Catagory=Windows

[Unit0]
CName=main.c
CppName=main.cpp
C=winapp_c.txt
Cpp=winapp_c3.txt

[Unit1]
CName=resource.h
CppName=resource.h
C=WinApp_resource_1.txt
Cpp=WinApp_resource_1.txt

[Unit2]
CName=maindialog.rc
CppName=maindialog.rc
C=WinApp_maindialog.txt
Cpp=WinApp_maindialog.txt

[Project]
UnitCount=3
Type=0
Name=Windows App

  • 範本內容設定載入三個檔案,分別是主程式 main.cpp,資源引入檔 resource.h、以及 dialog box 資源描述檔 maindialog.rc
  • 三個載入的檔案的定義分別描述在 [Unit0]、[Unit1]、[Unit2]
  • 在 [Template] 中說明了此範本的應用是一個 dialog box base 的 Windows 程式
  • 雖然範本定義了 C 及 C++ 的載入的檔案,但實際上目前也只有 C++ 是可以使用的
這個範本的定義雖然可行,也在 Dev C++ 的 New Project 中出現此範本的建立項目,而且第一次 compile 也順利產出我需要的程式。
 


不過在重新進行此專案編輯時卻發現程式確實有被執行,但 dialog box 卻沒有出現。花時間檢視整個專案設定才終於瞭解到問題所在,是因為專案檔案 xxxx.dev 中有一項應該要有設定的,它卻是空白的,導致再一次重新 compile 時沒有抓取到 dialog box resource,所以雖然程式有被執行,而 dialog box 沒有出現的窘態。


xxxx.dev 中有一項是關於 resource 檔案的定義,必須在 PrivateResource= 後加入專案設定的 resource 檔案 (xxxx_private.rc)。在這裡的專案名稱為 mydialog,因此 resource 檔案全名就是 mydialog_private.rc。


這個系統自動產生的 xxxx_private.rc 內容不過就是指定引入我自訂的 resource 而已。只要手動完成 PrivateResource 定義,就不會出現 dialog box 莫名其妙神隱的狀況。

另外還有一個一勞永逸的方法,是在看 wxWidgets 範本設定時看到的;當中把 PrivateResource 設定為 newFrameproject_private.rc,就可以在每次重新 compile 都可以產出正確的執行檔。


沒有留言:

張貼留言