青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

concentrate on c/c++ related technology

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

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

常用鏈接

留言簿(9)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

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

給 ATL EXE 項(xiàng)目添加 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. 更改項(xiàng)目設(shè)置以使用 MFC。 在 Project Settings 對(duì)話框中,單擊 General 選項(xiàng)卡,然后將 Microsoft Foundation Classes 列表框中的設(shè)置更改為 MFC。
3. 添加 CWinApp 衍生類,并聲明一個(gè)該類型的全局變量,如下所示:
class CMyApp : public CWinApp
            {
            public:
            virtual BOOL InitInstance();
            virtual int ExitInstance();
            protected:
            BOOL m_bRun;
            };
4. 用以下 InitInstance 和 ExitInstance 代碼替換 _tWinMain 函數(shù):
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. 對(duì)于 Unicode 版本,請確保進(jìn)入點(diǎn)被設(shè)置為 wWinMainCRTStartup,該設(shè)置在 Project Settings 對(duì)話框中 Link 字段的 Output 類別中。 有關(guān)其它信息,請參見 Microsoft Knowledge Base 中的下列文章:
125750 (http://support.microsoft.com/kb/125750/EN-US/) PRB: 錯(cuò)誤 LNK2001: “_WinMain@16”: 不能解析的外部符號(hào)
6. 將以下代碼行添加到 COM 接口、窗口過程和導(dǎo)出函數(shù)的每個(gè)成員函數(shù)的開頭:
AFX_MANAGE_STATE(AfxGetAppModuleState());
有關(guān) AFX_MANAGE_STATE 的詳細(xì)信息,請查詢 VC++ 聯(lián)機(jī)文檔。
有關(guān)將 MFC 支持添加到 ATL COM AppWizard 項(xiàng)目的詳細(xì)信息,請參見下面的 Microsoft Knowledge Base 文章:

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

回到頂端

將 MFC 支持添加到 ATL DLL 項(xiàng)目



執(zhí)行上面的步驟 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 接口、窗口過程和導(dǎo)出函數(shù)的每個(gè)成員函數(shù)的開頭:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
有關(guān)其它信息,請參見 Microsoft Knowledge Base 中的下列文章:
140850 (http://support.microsoft.com/kb/140850/EN-US/) HOWTO: 轉(zhuǎn)換 DLLTRACE 以使用共享庫中的 MFC

另外一種辦法就是將atlstr廢掉,采用其他辦法
因?yàn)閍tlstr實(shí)際起作用的是CString,而如果能夠找到CString的替代方案,就可以了。
替代方案在這里:
http://www.codeguru.com/forum/showthread.php?t=402543
一般建議用std::string來完成這些不依賴微軟某種技術(shù)的做法。
在我的項(xiàng)目里面,因?yàn)椴捎玫氖莣in32 application工程,并且該項(xiàng)目已經(jīng)很大了,不想因?yàn)檫@個(gè)而在那里增加一些方案1的處理,我采用了方案2。
posted on 2008-04-29 10:14 jolley 閱讀(8302) 評(píng)論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲午夜黄色| 亚洲高清视频一区| 国产精品你懂的在线欣赏| 欧美精品一区二区三区蜜桃 | 欧美一区二区性| 欧美一区二区黄色| 小处雏高清一区二区三区| 久久精品论坛| 欧美激情一区二区三区在线| 欧美特黄一级| 在线成人激情黄色| 国产精品99久久久久久久久久久久| 亚洲视频专区在线| 亚洲视频综合在线| 国产一区二区三区直播精品电影| 91久久精品国产91久久| 亚洲男人第一av网站| 蜜桃久久精品一区二区| 亚洲人体大胆视频| 在线一区亚洲| 免费在线观看精品| 欧美日韩国产123区| 亚洲第一久久影院| 久久久久欧美精品| 亚洲一区二区三区影院| 欧美激情亚洲一区| 亚洲欧美日韩中文播放| 久久全球大尺度高清视频| 国产精品日韩| 亚洲在线视频| 一区二区冒白浆视频| 欧美成人中文字幕在线| 国产日韩在线看片| 欧美资源在线观看| 亚洲综合精品四区| 国产乱肥老妇国产一区二| 亚洲免费视频中文字幕| 久久久久久9| 在线看无码的免费网站| 99热免费精品| 欧美日韩1区| 免费在线国产精品| 欧美一区在线看| 国产一区二区精品在线观看| 亚洲激情婷婷| 欧美日韩一区在线| 亚洲无限乱码一二三四麻| 99在线视频精品| 亚洲第一在线| 欧美一区二区三区四区在线观看地址 | 欧美日韩一区二区三区免费看| 99亚洲一区二区| 亚洲日本电影| 伊人久久婷婷色综合98网| 亚洲私拍自拍| 亚洲丝袜av一区| 欧美大片一区| 亚洲电影第1页| 欧美激情视频在线播放| 久久综合九色99| 欧美成人精品在线播放| 美女视频一区免费观看| 国产午夜精品久久久久久久| 亚洲婷婷国产精品电影人久久| 日韩一区二区精品视频| 亚洲一二三级电影| 亚洲一级二级在线| 欧美日韩免费网站| 亚洲乱码视频| 国产亚洲一级| 性色av一区二区三区| 午夜精品久久久久久久久久久久久| 亚洲综合欧美日韩| 亚洲欧美日韩精品久久奇米色影视| 欧美日本精品一区二区三区| 亚洲人成网站在线播| 亚洲精品乱码久久久久久| 一区二区日韩精品| 亚洲一区二区成人在线观看| 欧美精品激情blacked18| 亚洲欧洲日本一区二区三区| 亚洲精品美女久久久久| 欧美伦理视频网站| 99国产精品久久久久老师| 亚洲欧美日本国产有色| 国产精品亚洲一区| 久久黄色网页| 亚洲女人天堂av| 国产精品区一区二区三区| 欧美亚洲综合在线| 蜜桃av噜噜一区二区三区| 亚洲精品在线观看视频| 午夜精品在线| 久久天天躁狠狠躁夜夜av| 伊人久久大香线蕉综合热线| 免费久久久一本精品久久区| 欧美亚洲视频在线观看| 欧美电影电视剧在线观看| 亚洲人午夜精品免费| 亚洲网站在线观看| 黄色成人av网站| 亚洲一区在线免费| 免费在线亚洲| 一区二区欧美激情| 国产一区二区三区四区| 麻豆乱码国产一区二区三区| 久久激情综合网| 国产精品va在线| 99亚洲视频| 久久婷婷蜜乳一本欲蜜臀| 亚洲日本欧美| 国产喷白浆一区二区三区| 亚洲深夜福利| 亚洲女ⅴideoshd黑人| 国产专区综合网| 久久久久**毛片大全| 日韩一级黄色av| 在线视频欧美日韩精品| 国产一区二区欧美| 欧美午夜视频在线观看| 久久影音先锋| 亚洲国产日韩一区| 9久re热视频在线精品| 国产亚洲日本欧美韩国| 国产精品成人aaaaa网站| 日韩视频在线免费| 麻豆精品一区二区综合av| 激情五月***国产精品| 久久综合久久综合这里只有精品 | 久久亚洲免费| 亚洲小说欧美另类社区| 亚洲国产视频直播| 欧美国产日韩一区| 亚洲伦理在线观看| 欧美激情女人20p| 亚洲精品一区中文| 极品日韩av| 国产一区欧美日韩| 国产美女精品在线| 国产精品黄色在线观看| 欧美三区美女| 欧美涩涩网站| 欧美日韩免费高清一区色橹橹| 美女国内精品自产拍在线播放| 欧美一区二区三区四区在线| 亚洲一区自拍| 午夜免费日韩视频| 久久成人18免费网站| 亚洲欧美日韩精品久久久| 欧美成人dvd在线视频| 看片网站欧美日韩| 久久香蕉国产线看观看av| 久久精品一区二区三区不卡牛牛| 亚洲福利视频网站| 亚洲国产欧美在线人成| 亚洲第一久久影院| 亚洲欧洲日产国产网站| 亚洲精品少妇网址| 99精品久久久| 亚洲一区久久久| 亚洲欧美在线磁力| 久久久久国产精品午夜一区| 久久久99国产精品免费| 葵司免费一区二区三区四区五区| 久久午夜视频| 亚洲国产欧美在线| 国产精品99久久久久久白浆小说 | 亚洲最新视频在线| 亚洲一二三四区| 欧美一区二区三区免费视频| 久久精品国产免费看久久精品| 欧美在线一区二区| 欧美mv日韩mv亚洲| 国产精品久线观看视频| 激情久久影院| 一区二区三区鲁丝不卡| 篠田优中文在线播放第一区| 美女任你摸久久| 亚洲激情一区二区| 亚洲一区二区在线播放| 久久一区免费| 欧美日韩不卡视频| 国产一区二区三区电影在线观看 | 国产精品夫妻自拍| 一区二区视频欧美| 中文一区二区| 榴莲视频成人在线观看| 亚洲日本中文字幕| 欧美在线免费一级片| 欧美激情日韩| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美国产一区视频在线观看| 欧美色视频一区| 在线免费观看日本欧美| 亚洲女优在线| 亚洲国产欧美在线| 久久久午夜精品| 国产精品美女午夜av| 最新国产精品拍自在线播放| 久久精品动漫|