共用方式為


建立專案 (ATL 教學課程,第 1 部分)

本教學課程會逐步引導您完成一個非屬性的 ATL 專案,該專案會建立一個顯示多邊形的 ActiveX 物件。 該物件包括允許使用者變更構成多邊形的邊數的選項以及重新整理顯示的程式碼。

注意

本教學課程會建立與 Polygon 範例相同的原始程式碼。 如果您想避免手動輸入原始程式碼,您可以從 Polygon 範例摘要下載它。 然後,您可以在進行本教學課程時參考 Polygon 原始程式碼,或用它來檢查您自己的專案中的錯誤。 若要進行編譯,請開啟 pch.h (在 Visual Studio 2017 及更早版本中為 stdafx.h) 並取代:

#ifndef WINVER
#define WINVER 0x0400
#endif

取代為

#ifndef WINVER
#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
#endif

編譯器仍會抱怨 regsvr32 未正確結束,但您仍應建置控制項的 DLL 並可供使用。

若要使用 ATL 專案精靈建立初始 ATL 專案

  1. 在 Visual Studio 2017 和更早版本中:選取 [檔案]>[新建]>[專案]。 然後,開啟 [Visual C++] 索引標籤並選取 [MFC/ATL]。 選取 [ATL 專案]

    在 Visual Studio 2019中:選取 [檔案]>[新建]>[專案],在搜尋方塊中輸入 "atl",然後選擇 [ATL 專案]

  2. 輸入 Polygon 作為專案名稱。

    原始程式碼的位置通常會預設為 \Users\<username>\source\repos,而且會自動建立新的資料夾。

  3. 在 Visual Studio 2019 中,接受預設值,然後按一下 [確定]。 在 Visual Studio 2017 中,按一下 [確定] 以開啟 [ATL 專案精靈]。 按一下 [應用程式設定] 以查看可用的選項。 因為此專案會建立一個控制項,而且該控制項必須是同處理序伺服程式,所以請將應用程式類型保留為 DLL。 按一下 [確定]

Visual Studio 將透過產生數個檔案來建立專案。 您可以在 [方案總管] 中展開 Polygon 物件來檢視這些檔案。 下面列出了這些檔案。

檔案 說明
Polygon.cpp 包含 DllMainDllCanUnloadNowDllGetClassObjectDllRegisterServerDllUnregisterServer 的實作。 也包含物件對應,它是您的專案中 ATL 物件的清單。 這一開始是空白的。
Polygon.def 此模組定義檔會為連結器提供有關 DLL 所需匯出的資訊。
Polygon.idl 介面定義語言檔,其描述特定於您的物件的介面。
Polygon.rgs 此登錄指令碼包含用於註冊程式的 DLL 的資訊。
Polygon.rc 資源檔,一開始包含版本資訊和包含專案名稱的字串。
偵錯工具 資源檔的標頭檔。
Polygonps.def 此模組定義檔為連結器提供有關支援跨單元呼叫的 Proxy 和存根程式碼所需的匯出的資訊。
stdafx.cpp 該檔案將 #include stdafx.h
stdafx.h 該檔案將 #include 並預先編譯 ATL 標題檔。
檔案 說明
Polygon.cpp 包含 DllMainDllCanUnloadNowDllGetClassObjectDllRegisterServerDllUnregisterServer 的實作。 也包含物件對應,它是您的專案中 ATL 物件的清單。 這一開始是空白的。
Polygon.def 此模組定義檔會為連結器提供有關 DLL 所需匯出的資訊。
Polygon.idl 介面定義語言檔,其描述特定於您的物件的介面。
Polygon.rgs 此登錄指令碼包含用於註冊程式的 DLL 的資訊。
Polygon.rc 資源檔,一開始包含版本資訊和包含專案名稱的字串。
偵錯工具 資源檔的標頭檔。
Polygonps.def 此模組定義檔為連結器提供有關支援跨單元呼叫的 Proxy 和存根程式碼所需的匯出的資訊。
pch.cpp 該檔案將 #include pch.h
pch.h 該檔案將 #include 並預先編譯 ATL 標題檔。
  1. 在 [方案總管] 中,以滑鼠右鍵按一下 Polygon 專案。

  2. 在捷徑功能表上按一下 [屬性]

  3. 按一下 [連結器]。 將 Per-UserRedirection 選項變更為 [是]

  4. 按一下 [確定]

在下一個步驟中,您會將控制項新增至您的專案中。

繼續步驟 2

另請參閱

教學課程