• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            concentrate on c/c++ related technology

            plan,refactor,daily-build, self-discipline,

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              37 Posts :: 1 Stories :: 12 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(9)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            在vc6里面一般都沒有這個頭文件的,在后面的版本(.NET)都有相關的說明,不過這個是CString包含的頭文件,我之前將open source的代碼移植到win32 application平臺下面,對方的編譯器是vc2003,而我的是用到了vc6,所以就遇到這個問題了,解決辦法有兩種:
            1)在工程里面加入MFCsupport,因為CString是MFC里面的內容。具體做法是project/settings/General/microsoft foundation class處選擇using MFC as a shared dll./ static library.
            在msdn上面有具體的說明。
            可能看起來比較麻煩,不過不好意思,就這樣弄過來防止msdn上面這個文章過舊了,又被刪除了。

            給 ATL EXE 項目添加 MFC 支持



            1. 在包括 Atlbase.h 之前,將以下 #include 指令添加到 StdAfx.h:
                  #include <afxwin.h>   // MFC core and standard components
                        #include <afxext.h>   // MFC extensions
                        #include <afxdisp.h>  // MFC Automation extensions
            2. 更改項目設置以使用 MFC。 在 Project Settings 對話框中,單擊 General 選項卡,然后將 Microsoft Foundation Classes 列表框中的設置更改為 MFC。
            3. 添加 CWinApp 衍生類,并聲明一個該類型的全局變量,如下所示:
            class CMyApp : public CWinApp
                        {
                        public:
                        virtual BOOL InitInstance();
                        virtual int ExitInstance();
                        protected:
                        BOOL m_bRun;
                        };
            4. 用以下 InitInstance 和 ExitInstance 代碼替換 _tWinMain 函數:
            BOOL CMyApp::InitInstance()
                        {
                        // Initialize OLE libraries.
                        if (!AfxOleInit())
                        {
                        AfxMessageBox(_T("OLE Initialization Failed!"));
                        return FALSE;
                        }
                        // Initialize CcomModule.
                        _Module.Init(ObjectMap, m_hInstance);
                        _Module.dwThreadID = GetCurrentThreadId();
                        // Check command line arguments.
                        TCHAR szTokens[] = _T("-/");
                        m_bRun = TRUE;
                        LPCTSTR lpszToken = FindOneOf(m_lpCmdLine, szTokens);
                        while (lpszToken != NULL)
                        {
                        // Register ATL and MFC class factories.
                        if (lstrcmpi(lpszToken, _T("Embedding"))==0 ||
                        lstrcmpi(lpszToken, _T("Automation"))==0)
                        {
                        AfxOleSetUserCtrl(FALSE);
                        break;
                        }
                        // Unregister servers.
                        // There is no unregistration code for MFC
                        // servers. Refer to <LINK TYPE="ARTICLE" VALUE="Q186212">Q186212</LINK> "HOWTO: Unregister MFC
                        // Automation Servers" for adding unregistration
                        // code.
                        else if (lstrcmpi(lpszToken, _T("UnregServer"))==0)
                        {
                        VERIFY(SUCCEEDED(_Module.UpdateRegistryFromResource(IDR_ServerS2B, FALSE)));
                        VERIFY(SUCCEEDED(_Module.UnregisterServer(TRUE)));
                        m_bRun = FALSE;
                        break;
                        }
                        // Register ATL and MFC objects in the registry.
                        else if (lstrcmpi(lpszToken, _T("RegServer"))==0)
                        {
                        VERIFY(SUCCEEDED(_Module.UpdateRegistryFromResource(IDR_ServerS2B, TRUE)));
                        VERIFY(SUCCEEDED(_Module.RegisterServer(TRUE)));
                        COleObjectFactory::UpdateRegistryAll();
                        m_bRun = FALSE;
                        break;
                        }
                        lpszToken = FindOneOf(lpszToken, szTokens);
                        }
                        if (m_bRun)
                        {
                        // Comment out the next line if not using VC 6-generated
                        // code.
                        _Module.StartMonitor();
                        VERIFY(SUCCEEDED(_Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE)));
                        VERIFY(COleObjectFactory::RegisterAll());
                        // To run the EXE standalone, you need to create a window
                        // and assign the CWnd* to m_pMainWnd.
                        LPCTSTR szClass = AfxRegisterWndClass(NULL);
                        m_pMainWnd = new CWnd;
                        m_pMainWnd->CreateEx(0, szClass, _T("SomeName"), 0, CRect(0, 0, 0, 0), NULL, 1234);
                        }
                        return TRUE;
                        }
                        int CMyApp::ExitInstance()
                        {
                        // MFC's class factories registration is
                        // automatically revoked by MFC itself.
                        if (m_bRun)
                        {
                        _Module.RevokeClassObjects();
                        Sleep(dwPause); //wait for any threads to finish
                        }
                        _Module.Term();
                        return 0;
                        }
            5. 對于 Unicode 版本,請確保進入點被設置為 wWinMainCRTStartup,該設置在 Project Settings 對話框中 Link 字段的 Output 類別中。 有關其它信息,請參見 Microsoft Knowledge Base 中的下列文章:
            125750 (http://support.microsoft.com/kb/125750/EN-US/) PRB: 錯誤 LNK2001: “_WinMain@16”: 不能解析的外部符號
            6. 將以下代碼行添加到 COM 接口、窗口過程和導出函數的每個成員函數的開頭:
            AFX_MANAGE_STATE(AfxGetAppModuleState());
            有關 AFX_MANAGE_STATE 的詳細信息,請查詢 VC++ 聯機文檔。
            有關將 MFC 支持添加到 ATL COM AppWizard 項目的詳細信息,請參見下面的 Microsoft Knowledge Base 文章:

            181505 (http://support.microsoft.com/kb/181505/EN-US/) PRB: ATL COM AppWizard 不提供對 .EXE 的 MFC 支持

            回到頂端

            將 MFC 支持添加到 ATL DLL 項目



            執行上面的步驟 1 到步驟 3。

            1. 將 AppWizard 生成的 DllMain 的 DLL_PROCESS_ATTACH 和 DLL_PROCESS_DETACH 中的代碼移到 CMyApp 的 InitInstance 和 ExitInstance,并刪除 DllMain,如下所示:
                  BOOL CMyApp::InitInstance()
                        {
                        _Module.Init(ObjectMap, m_hInstance);
                        return CWinApp::InitInstance();
                        }
                        int CMyApp::ExitInstance()
                        {
                        // MFC's class factories registration is
                        // automatically revoked by MFC itself.
                        if (m_bRun)
                        _Module.RevokeClassObjects();
                        
            2. 將以下代碼行添加到 COM 接口、窗口過程和導出函數的每個成員函數的開頭:
            AFX_MANAGE_STATE(AfxGetStaticModuleState());
            有關其它信息,請參見 Microsoft Knowledge Base 中的下列文章:
            140850 (http://support.microsoft.com/kb/140850/EN-US/) HOWTO: 轉換 DLLTRACE 以使用共享庫中的 MFC

            另外一種辦法就是將atlstr廢掉,采用其他辦法
            因為atlstr實際起作用的是CString,而如果能夠找到CString的替代方案,就可以了。
            替代方案在這里:
            http://www.codeguru.com/forum/showthread.php?t=402543
            一般建議用std::string來完成這些不依賴微軟某種技術的做法。
            在我的項目里面,因為采用的是win32 application工程,并且該項目已經很大了,不想因為這個而在那里增加一些方案1的處理,我采用了方案2。
            posted on 2008-04-29 10:14 jolley 閱讀(8256) 評論(0)  編輯 收藏 引用
            草草久久久无码国产专区| 久久只有这精品99| 久久综合给久久狠狠97色| 综合久久国产九一剧情麻豆 | 亚洲精品国产成人99久久| 韩国三级中文字幕hd久久精品| 日韩久久久久中文字幕人妻 | 久久久亚洲欧洲日产国码aⅴ| 久久精品国产亚洲av日韩| 成人亚洲欧美久久久久| 麻豆精品久久久久久久99蜜桃| 99久久人妻无码精品系列| 久久久久亚洲爆乳少妇无| 久久精品国产亚洲av水果派| 青青青青久久精品国产h久久精品五福影院1421 | 青青草原1769久久免费播放| 思思久久99热只有频精品66| 99re久久精品国产首页2020| 一级a性色生活片久久无| 国产午夜精品久久久久免费视| 日韩亚洲国产综合久久久| 91精品国产综合久久久久久| 亚洲国产天堂久久综合| 狠狠色婷婷综合天天久久丁香| 一级a性色生活片久久无少妇一级婬片免费放| 人妻少妇久久中文字幕一区二区| 久久精品国产精品亚洲艾草网美妙| 国内精品久久久久久99蜜桃| 综合人妻久久一区二区精品| 青青草原综合久久大伊人导航 | 久久99九九国产免费看小说| 久久精品成人| 精品多毛少妇人妻AV免费久久| 国产国产成人精品久久| 麻豆成人久久精品二区三区免费 | 久久99精品久久久久久 | 国产精品熟女福利久久AV| 99久久精品午夜一区二区| 久久w5ww成w人免费| 久久精品国产亚洲av日韩| 久久精品aⅴ无码中文字字幕不卡|