首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

Visual C++ 定制 AppWizard 入門實作 (二):建立預設為 SDI 自動化專案的簡易精靈

     編輯:關於VC++

Custom AppWizard 建立流程回顧

  1. Ctrl+N → Custom AppWizard 專案
  2. 步驟 1:選擇基準類型
    • Existing project:以現有專案為藍圖 (缺點:檔案/類名固定)
    • Standard MFC AppWizard steps:最通用、彈性最大 (本文採用)
    • Your own customized steps:完全自訂步驟 (適合非 MFC 專案)
  3. 步驟 2:命名精靈 (顯示在專案類型清單)、設定額外步驟數 (本例 0)、選擇 EXE/DLL、語言支援

範例:SDIAutomationWiz — 預設建立支援自動化的 SDI 專案

  • 專案名:SDIAutomationWiz
  • 顯示名:自訂
  • 額外步驟:0
  • 類型:MFC AppWizard Executable
  • 語言:中文

核心類別:CCustomAppWiz 衍生類

編譯後為 .awx (實為 DLL)。關鍵點:


// DLL 入口點
extern "C" int APIENTRY DllMain(HINSTANCE hInst, DWORD dwReason, LPVOID) {
  if (dwReason == DLL_PROCESS_ATTACH) {
    AfxInitExtensionModule(SDIAutomationWizDLL, hInst);
    new CDynLinkLibrary(SDIAutomationWizDLL);
    SetCustomAppWizClass(&SDIAutomationWizaw); // 向 MFCAPWZ.DLL 註冊
  } else if (dwReason == DLL_PROCESS_DETACH) {
    AfxTermExtensionModule(SDIAutomationWizDLL);
  }
  return 1;
}

MFCAPWZ.DLL 才是真正的控制者,自定義精靈只負責:顯示步驟順序、設定預設選項、修改專案模板設定。

五大可覆寫虛擬函式

Dictionary 巨集操作實戰

m_Dictionary 為 CMapStringToString,鍵值皆為 CString。


// 在 InitCustomAppWiz() 末尾加入:
m_Dictionary.SetAt(_T("PROJTYPE_SDI"), _T("1"));  // SDI
m_Dictionary.SetAt(_T("PROJTYPE_MDI"), _T("0"));  // 非 MDI
m_Dictionary.SetAt(_T("AUTOMATION"), _T("1"));    // 支援自動化

Build 後 .awx 自動部署,新建專案即可見預設選為 SDI+Automation。

發布部署

僅需複製 .awx 至 Visual Studio Template 目錄 (...\Microsoft Visual Studio\Common\MSDev98\Template)。

下一步預告

第三部分將實作完整企業級精靈:新增步驟對話框收集資訊 → 生成客製「關於」對話框 (含超連結/圖示) → 所有原始檔自動加入版權註釋 → 註冊表記憶輸入免重複填寫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
函式用途
InitCustomAppWiz()初始化:設定 Dictionary 巨集預設值
ExitCustomAppWiz()卸載時清理
Next()控制「下一步」按鈕啟用/下一步驟 ID
Back()控制「上一步」
CustomizeProject()專案建立前修改 .mak 設定 (最後介入點)