Visual Studio 的 MFC 精靈原生支援建立對話方塊型應用程式,但 Win32 精靈卻缺少此選項。雖然 Visual Assist X (VAX) 可插入對話方塊程式碼片段,但無法像精靈那樣直接產生完整專案架構。本文將手把手教您修改 Visual Studio 2012 (VS11) 的 Win32 專案精靈,新增「對話方塊型 Windows 應用程式」選項。
請先備份原始精靈檔案。Win32 精靈檔案位於:
VS安裝目錄\VC\VCWizards\AppWiz\Generic\Application\
以 VS2012 為例,路徑為:
D:\Program Files\Microsoft Visual Studio 11.0\VC\VCWizards\AppWiz\Generic\Application\
此目錄下有四個資料夾,不同語言版本依 LCID 命名(英文 1033、簡體中文 2052)。


使用編輯器開啟 html\1033\AppSettings.htm,依序在指定行號插入程式碼:
關鍵插入代碼片段:
<DIV CLASS="SMALL" ID="WIN_DLG_APP_IMAGE" STYLE="DISPLAY:NONE;">
<IMG CLASS="SMALL" SRC="..\..\Images\Dialog.gif" ALT="" BORDER="0">
</DIV>
將 MFC 精靈的 Dialog.gif 複製至 Generic\Application\images 目錄。
開啟 html\1033\default.htm:
<SYMBOL NAME="WIN_DLG_APP" TYPE=checkbox VALUE=false>WIN_DLG_APP 分支開啟 scripts\1033\default.js:
strAppType = "WIN_DLG" 判斷templates\1033\readme.txt:第 22、73、88 行條件編譯加入 WIN_DLG_APP
templates\1033\resource.h:第 6-17 行重寫資源 ID 定義,區分視窗與對話方塊專案
templates\1033\CmnHdr.h:新建此檔,包含對話方塊訊息處理巨集 chHANDLE_DLGMSG 與圖示設定函式 chSETDLGICONS
templates\1033\root.cpp:修改條件編譯與新增對話方塊專案進入點 _tWinMain、訊息處理 Dlg_Proc、初始化 Dlg_OnInitDialog、命令處理 Dlg_OnCommand
templates\1033\stdafx.h:新增 WindowsX.h 與 Common Controls 6.0 資訊清單支援
templates\1033\Templates.inf:修改檔案複製條件,加入 CmnHdr.h
templates\1033\root.rc:完整重寫資源腳本,支援對話方塊範本與設計資訊
修改完成後重啟 Visual Studio,建立新專案即可看到新選項:



提供現成修改檔案下載:
Generic_for_VS10.7zGeneric_for_VS11.7z其他版本請參考本文步驟自行修改測試。完整原始碼與原文連結見文末。