VS2012創建ATL工程及使用MFC測試COM組件


一、創建ATL工程

1、創建ATL項目,取名為ATLMyCom

2、在ATL項目向導中,勾選【支持MFC】(利用MFC測試用)、【支持 COM+ 1.0】,其余的選項默認,點擊完成。

3、右鍵工程名稱,選擇添加類,接下來選擇【ATL簡單對象】。

4、在【ATL簡單對象向導】對話框中填入自己定義的類名,然后直接點擊完成。

5、切換到類視圖,為剛剛添加的接口IMyATLClass添加方法

6、現在來添加2個方法,分別用來計算兩個數之和和彈出MFC對話框,填寫方法名務必確定in(輸入)還是out(輸出) 返回指針要是retval。

 

 

 

7、切換到【解決方案資源管理器】,在ATLMyCom.idl文件中可以看到Sum和PopupDialog的定義。

 

 8、打開MyATLClass.cpp,實現添加的兩個方法。

 

STDMETHODIMP CMyATLCLass::Sum(LONG param1, LONG param2, LONG* pVal)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    // TODO: Add your implementation code here
    *pVal = param1 + param2; 
    return S_OK;
}


STDMETHODIMP CMyATLCLass::PopupDialog(CHAR* pstr)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());

    // TODO: Add your implementation code here


    CString str(pstr);
    AfxMessageBox((LPCTSTR)str);

return S_OK;
}

9、Build該工程,得到ATLMyCom.dll並在注冊表中注冊。

 

二、測試ATL組件

1、在上面的工程中添加測試項目。

2、添加用於測試的MFC工程TestATL。

3、運行MFC應用程序向導,為簡單起見,選擇對話框工程,其余默認,點擊完成。

4、將生成的對話框中【確定】修改為Sum、【取消】按鈕修改為PopupDialog。

5、雙擊上面的按鈕,在系統生成的函數里刪除掉代碼CDialogEx::OnBnClickedSum;如下。

void CTestATLDlg::OnBnClickedSum()
{
    // TODO: Add your control notification handler code here
}


void CTestATLDlg::OnBnClickedPopup()
{
    // TODO: Add your control notification handler code here
}

6、在TestATL工程中引入由MyATL工程中生成的“ATLMyCom_i.h”、“ATLMyCom_i.c”(這個文件主要用來查看CLSID_MyATLClass和IID_IMyATLClass的值),並在TestATLDlg.cpp中添加ATLMyCom_i.h的引用。

#include "..\ATLMyCom\ATLMyCom_i.h"
#include "..\ATLMyCom\ATLMyCom_i.c"

7、實現Sum按鈕的響應方法。

 

void CTestATLDlg::OnBnClickedSum()
{
    // TODO: Add your control notification handler code here
    HRESULT hr = S_OK;  
    hr = CoInitialize(NULL);

     IMyATLClass* pMyATLClass = NULL;
     hr = CoCreateInstance(CLSID_MyATLCLass, NULL, CLSCTX_INPROC_SERVER,__uuidof(IMyATLCLass), (void **)&pMyATLClass);

 
         

     int sum = 0;
     pMyATLClass->Sum(2, 3, (LONG*)&sum);
     CString str;
     str.Format(L"%d",sum);
     AfxMessageBox((LPCTSTR)str);

     pMyATLClass->Release();

     CoUninitialize();  

}


void CTestATLDlg::OnBnClickedPopup()
{
    // TODO: Add your control notification handler code here
    HRESULT hr = S_OK;
    hr = CoInitialize(NULL);
   
   IMyATLClass* pMyATLClass = NULL; 
   hr = CoCreateInstance(CLSID_MyATLCLass, NULL, CLSCTX_INPROC_SERVER,__uuidof(IMyATLCLass), (void **)&pMyATLClass); pMyATLClass
->PopupDialog("test ATL"); pMyATLClass->Release(); CoUninitialize(); }

 運行測試:

COM組件編譯選項(保證在第三方電腦上沒有VS運行環境也能正常運行)

測試工程:

結果:

    

 

VS2012創建ATL工程及使用C++測試COM組件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM