• <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>
            posts - 72,  comments - 4,  trackbacks - 0
            由于想在游戲中(非mfc程序)調(diào)用一個(gè)dll用來(lái)監(jiān)控游戲中一些數(shù)據(jù)變化,而這些數(shù)據(jù)可以觸發(fā)式變動(dòng),所以想到用mfc來(lái)弄,
            但網(wǎng)上查的
            “非mfc程序調(diào)用mfc擴(kuò)展dll”似乎有點(diǎn)麻煩,也沒(méi)有什么成樣的例子。
            后來(lái)還是自己對(duì)比正常的mfc程序加載方式修改出來(lái)了,步驟如下:
            1.  
            exe工程要設(shè)置成Use Standard Windows Libraries或者Use MFC in a Shared DLL(因?yàn)槲覀儾挥胢fc,所以設(shè)置成前者)
            2. 
            dll工程用vc向?qū)?chuàng)建mfc擴(kuò)展dll
            3. 在dll工程中拷貝相關(guān)的app,mainfrm和view以及doc框架(可以用vc向?qū)?chuàng)建一個(gè)正常mfc框架程序用來(lái)拷貝)
            然后在dllmain的attach中加入如下語(yǔ)句即可:
            //----------------------------------------
            // AFX internal initialization
            if (!AfxWinInit(hInstance, 0, "", 1))
            return 0;
            // Register the doc templates we provide to the app
            CWinApp* pApp = AfxGetApp();
            ENSURE(pApp != NULL);
            pApp->InitApplication();
            pApp->InitInstance();
            //----------------------------------------
            4. 如果是隱式調(diào)用的話,在exe中加入:
            #define AFX_EXT_API  __declspec(dllexport)
            #include "..\mfcdll\mfcdll.h"  // 這個(gè)是dll要導(dǎo)出的東西
            這樣就可以了

            5.顯式調(diào)用的話,用LoadLibrary先裝載,再獲取對(duì)應(yīng)導(dǎo)出函數(shù)調(diào)用就應(yīng)該也可以了(這個(gè)沒(méi)試)

            6.上述處理后只能顯示,但按鍵接收還不行,因?yàn)橄⒀h(huán)沒(méi)有地方調(diào)用。。。它原來(lái)是系統(tǒng)調(diào)用app->run(),在其中循環(huán)處理的。
            如果直接在dll中調(diào)用app的run()的話,mainfrm的PreTranslateMessage就能收到按鍵消息了。但這樣由于是主線程中調(diào)用app->run(),而run()中
            是消息死循環(huán),所會(huì)exe會(huì)沒(méi)機(jī)會(huì)響應(yīng)。。。所以解決辦法是模擬app->run()寫(xiě)一個(gè)runoneframe()函數(shù),然后每次刷新一下(或者創(chuàng)建新線程來(lái)刷新, 臨時(shí)試了一下會(huì)crash,我沒(méi)用這種辦法,先不查了,不過(guò)理論上應(yīng)該可以的)
            這樣就ok了(view中按鍵自己再處理吧,這里不提了)
            posted on 2012-09-14 15:56 flipcode 閱讀(1334) 評(píng)論(0)  編輯 收藏 引用

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


            亚洲国产精品一区二区三区久久| 亚洲欧洲中文日韩久久AV乱码| 久久久久综合中文字幕 | 93精91精品国产综合久久香蕉| 久久99精品久久久久久动态图 | 久久精品国产亚洲av瑜伽| 久久亚洲国产成人影院网站| 久久99热这里只频精品6| 久久亚洲精品无码AV红樱桃| 久久se精品一区精品二区国产 | 天天综合久久久网| 久久夜色精品国产网站| 久久777国产线看观看精品| 伊人久久大香线蕉亚洲五月天| 久久99国产精品一区二区| 久久影院午夜理论片无码 | 一级做a爰片久久毛片毛片| 69国产成人综合久久精品| 久久精品国产色蜜蜜麻豆| 免费一级做a爰片久久毛片潮 | 精品久久久久久国产牛牛app| 久久亚洲国产精品成人AV秋霞 | 中文字幕久久欲求不满| 伊人久久精品无码av一区| 久久精品国产亚洲5555| 9久久9久久精品| 无码人妻精品一区二区三区久久久 | 婷婷综合久久中文字幕蜜桃三电影| 久久精品国产精品国产精品污| 99久久精品国产一区二区| 久久久久九国产精品| 亚洲国产成人久久综合碰碰动漫3d| 色偷偷偷久久伊人大杳蕉| 国产精品久久婷婷六月丁香| 久久无码一区二区三区少妇| 青青草原1769久久免费播放| www.久久热| 国产精品免费久久久久久久久| 久久国产午夜精品一区二区三区| 99精品国产在热久久无毒不卡| 亚洲欧美成人综合久久久|