MFC的程序,如何支持ATL ?有一个ATL的类在另一个工程里,我现在的程序是MFC写的,怎样将那个ATL的工程移植到现在的MFC中?

解决方案 »

  1.   

    http://www.codeguru.com/cpp/com-tech/atl/atl/article.php/c63/
      

  2.   

    在stdafx.cpp中
    CComModule _Module;
    在stdafx.h中
    #include <atlbase.h>
    extern CComModule _Module;
    #include <atlwin.h>
    在app的InitInstance中
    ::CoInitialize(NULL);
    _Module.Init(NULL, NULL);
    在app的ExitInstance中
    _Module.Term();
    ::CoUninitialize();譬如一个基于对话框的mfc程序,在OnOK函数之前你如下写:
    class CXDialog:public CDialogImpl<CXDialog>
    {
    public:
    enum{IDD=IDD_DIALOG1};
    BEGIN_MSG_MAP(CXDialog)
    END_MSG_MAP()
    };
    void CMFCATLWindowDlg::OnOK() 
    {
    // TODO: Add extra validation here
    CXDialog about;
    about.DoModal();
    CDialog::OnOK();
    }在点击OK按钮时,就可以显示XDialog,当然了,你得在资源中加入一个ID为IDD_DIALOG1的对话框。