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

 在進(jìn)行DLL開發(fā)過(guò)程中,尤其在進(jìn)行底層硬件開發(fā)過(guò)程中,比如實(shí)時(shí)接收數(shù)據(jù),進(jìn)程需要和應(yīng)用程序進(jìn)行交互,而DLL和應(yīng)用程序最好的交互就是發(fā)消息了,在DLL中定義消息的方式和在應(yīng)用程序中定義消息的方式非常相似。下面談?wù)勥@兩種定義的方法:

 

  一、在應(yīng)用程序自定義消息方法:

        一般自定義消息有一定的范圍,雖然說(shuō)自定義消息從WM_USER開始,但是由于我們的工程里面一般還有很多其他的控件,他們也要占用一部分WM_USER消息范圍,所以我們必須為他們留出一部分范圍,這里,我們保留100個(gè)消息,一般情況下,這可以滿足我們的要求。

  (1)    定義消息的值。在我們要發(fā)生消息的地方(例如CMyView.cpp的開始部分)或者stdafx..h文件,進(jìn)行如下定義:


#define WM_MSG  (WM_USER+101)

 

        接下來(lái)的工作其實(shí)很簡(jiǎn)單,我們?cè)谇懊嬲f(shuō)了,消息正常工作有3個(gè)部分必須協(xié)調(diào):消息聲明、消息映射、消息體。我們就一次進(jìn)行手工加入。

        (2)首先在AFX_MSG塊中加入消息聲明:在CMyView.h中,找到如下部分,并加入消息聲明:


         protected:       

            // {{AFX_MSG(CMyView)

            ......

            afx_msg LRESULT OnMyMsg(WPARAM wParam,LPARAM lParam);

            file://}}AFX_MSG

 

        (3)在MESSAGE_MAP塊中添加ON_MESSAGE宏指令:


           BEGIN_MESSAGE_MAP(CMyView, CView)

              file://{{AFX_MSG_MAP(CMyView)

               .....

              ON_MESSAGE(WM_MSG, OnMyMsg)

             file://}}AFX_MSG_MAP

           END_MESSAGE_MAP()

 

        (4)添加消息函數(shù)體:


      LPESULT CMyView::OnMyMsg(WPARAM wParam, LPARAM lParam)

          {

    


             AfxMessageBox("消息已經(jīng)收到!");

             return 0;

          }

 

        消息至此就已經(jīng)定義完畢,接下來(lái)我們就可以激活消息了,就可以用我們前面所說(shuō)的PostMessage/SendMessage來(lái)發(fā)送消息了。

    如:::PostMessage(hwnd,WM_MSG,0,1);

       PostMessage:不用等消息返回。

    SendMessage:需要等消息返回。

  二、從DLL中傳遞消息到EXE

   在DLL中定義消息和上面的方法很相似,有兩點(diǎn)不同的地方:

  1、  在DLL和應(yīng)用程序中兩個(gè)地方定義相同的消息。

  2、  應(yīng)用程序調(diào)用DLL程序之后,需要將應(yīng)用程序的窗口句柄傳遞給DLL,以便DLL中的消息返回。

  在DLL工程中:

  (1)       在stdafx.h頭文件中添加消息定義:


 #define WM_MSG WM_USER + 102

       

  (2)       添加啟動(dòng)消息的輸出函數(shù):


       CMessageDLLApp theApp;

  //發(fā)送消息

extern "C" _declspec(dllexport) void StartSendMessage(HWND hwnd)

{

                 theApp.SendMessage(hwnd);

}     

 

            其中hwnd是接收消息的窗口句柄。

  (3)       添加啟動(dòng)消息的實(shí)現(xiàn)函數(shù):

在頭文件中添加函數(shù)聲明:


  void SendMessage(HWND hwnd);

 

  在CPP文件中添加函數(shù)實(shí)現(xiàn)

  //啟動(dòng)發(fā)送消息


void CMessageDLLApp::SendMessage(HWND hwnd)

{

                   ::PostMessage(hwnd,WM_MSG,0,1);

}

  在應(yīng)

用程序中:

  (1)       在stdafx.h頭文件中添加消息定義:


#define WM_MSG WM_USER + 102

       

  (2)       首先在AFX_MSG塊中加入消息聲明:在CTestMessageDLLDlg.h中,找到如下部分,并加入消息聲明:

。。。。。。


        afx_msg LRESULT OnMyMsg(WPARAM wParam,LPARAM lParam);

                 DECLARE_MESSAGE_MAP()

 

  (3)       在MESSAGE_MAP塊中添加ON_MESSAGE宏指令:


        BEGIN_MESSAGE_MAP(CTestMessageDLLDlg, CDialog)

          。。。。。。

          ON_MESSAGE(WM_MSG, OnMyMsg)

          //}}AFX_MSG_MAP

          END_MESSAGE_MAP()

 

  (4)       添加消息函數(shù)體:


       LRESULT CTestMessageDLLDlg::OnMyMsg(WPARAM wParam, LPARAM lParam)

 {

                AfxMessageBox("消息已經(jīng)收到!");

                 return 0;

     }

?。?)       在對(duì)話框上添加一個(gè)按鈕,在按鈕事件中,先調(diào)用DLL文件,然后發(fā)送一個(gè)測(cè)試消息響應(yīng)的命令:


void CTestMessageDLLDlg::OnBnClickedButton1()

{

    // TODO: 在此添加控件通知處理程序代碼

    //定義函數(shù)

    typedef void (_cdecl*STARTSENDMESSAGE)(HWND hwnd);

    HMODULE hmessage = NULL;

    STARTSENDMESSAGE StartSendMessage = NULL;

  //導(dǎo)入DLL庫(kù)文件

    hmessage = LoadLibrary("MessageDLL.dll");

    if(hmessage==NULL)

    {

        FreeLibrary(hmessage);

        exit(0);

    }

  //導(dǎo)入DLL中測(cè)試消息函數(shù)

    StartSendMessage = (STARTSENDMESSAGE)GetProcAddress(hmessage,"StartSendMessage");

    if(StartSendMessage==NULL)

    {

        FreeLibrary(hmessage);

        exit(1);

    }

    //獲取對(duì)話框的窗口句柄

    HWND hwnd = this->GetSafeHwnd();

    //發(fā)送測(cè)試消息函數(shù)

    (*StartSendMessage)(hwnd);

}

 

運(yùn)行應(yīng)用程序,就可以看到測(cè)試結(jié)果了。
 









Posted on 2007-11-20 12:18 艾凡赫 閱讀(4392) 評(píng)論(0)  編輯 收藏 引用 所屬分類: MFC技術(shù) 、DLL 技術(shù)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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精品国产| 久久精品国产69国产精品亚洲| 亚洲特级毛片| 亚洲资源av| 午夜精品成人在线| 欧美14一18处毛片| 久久婷婷丁香| 亚洲黄网站黄| 国产精品99久久久久久久久| 国产精品99久久久久久有的能看| 亚洲美女尤物影院| 亚洲欧美韩国| 久久一日本道色综合久久| 久久久久国产一区二区三区四区 | 欧美日韩不卡一区| 欧美精品网站| 欧美特黄一级大片| 国产日产欧美精品| 国产在线观看一区| 91久久亚洲| 亚洲一线二线三线久久久| 久久久久久久久综合| 91久久久久久久久久久久久| 亚洲一区二区三区在线看| 久久亚洲精品网站| 国产精品私房写真福利视频| 在线视频国产日韩| 亚洲婷婷在线| 欧美二区不卡| 午夜在线视频一区二区区别| 欧美另类综合| 亚洲人成人一区二区在线观看| 先锋影院在线亚洲| 免费日韩精品中文字幕视频在线| 亚洲国产精品专区久久| 午夜精品久久久久久| 欧美区一区二| 在线观看欧美日韩国产| 亚洲欧美日韩一区二区在线| 美女啪啪无遮挡免费久久网站| 亚洲五月婷婷| 欧美日韩一区二区三区高清| 国内外成人在线| 亚洲欧美自拍偷拍| 亚洲二区精品| 欧美在线免费播放| 国产精品久99| 一本色道久久综合精品竹菊| 免费在线观看成人av| 亚洲在线成人| 国产精品久久久久久久浪潮网站| 亚洲精品乱码久久久久久日本蜜臀 | 卡一卡二国产精品| 亚洲一级免费视频| 欧美日韩欧美一区二区| 亚洲激情国产精品| 亚洲高清免费| 欧美精品18+| 亚洲视频网在线直播| 一本色道久久综合| 欧美肉体xxxx裸体137大胆| 亚洲精品久久视频| 亚洲人体大胆视频| 欧美人与禽猛交乱配视频| 亚洲精品一区二区三区99| 欧美大片一区二区| 免费成人黄色片| 亚洲欧洲综合| 欧美顶级艳妇交换群宴| 久久影音先锋| 日韩天堂av| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美在线视频不卡| 久久不射网站| 欧美成人免费全部| 99这里只有久久精品视频| 亚洲国产精品久久人人爱蜜臀| 久久综合给合久久狠狠色| 黄色成人av在线| 亚洲国产欧美精品| 国产精品日韩久久久久| 久久综合99re88久久爱| 免费一区二区三区| 欧美日韩亚洲高清| 久久九九全国免费精品观看| 亚洲欧美中文另类| 亚洲电影免费在线| 亚洲精品国产精品久久清纯直播 | 欧美激情bt| 亚洲欧美日韩精品久久奇米色影视| 性高湖久久久久久久久| 亚洲国产91色在线| 亚洲永久视频| 最新日韩av| 亚洲欧美精品一区| 日韩亚洲欧美中文三级| 亚洲欧美日本另类| 亚洲日韩成人| 亚洲欧美美女| 夜夜嗨av一区二区三区四区| 久久精品99| 亚洲欧美日韩国产综合精品二区| 久久久xxx| 香港久久久电影| 欧美高清在线视频观看不卡| 亚洲免费影视| 欧美国产在线电影| 久久精品国产精品亚洲综合| 欧美日韩国产高清| 欧美国产日本高清在线| 国产精品亚洲综合色区韩国| 欧美高清在线播放| 国产真实久久| 亚洲一区二区精品视频| 亚洲激情综合| 久久精品视频在线看| 欧美一区二区网站| 欧美日韩在线一区| 亚洲精品国精品久久99热| 激情综合久久| 午夜精品福利视频| 亚洲自拍偷拍色片视频| 欧美激情1区2区| 欧美激情一区二区三区高清视频| 国产欧美一区二区三区视频| 亚洲先锋成人| 性欧美videos另类喷潮| 国产精品区一区二区三| 亚洲日韩中文字幕在线播放| 亚洲国产精品欧美一二99| 久久精品在线视频| 久久久久网站| 国产一区二区三区直播精品电影| 午夜久久久久久| 欧美在线视频播放| 国产视频亚洲精品| 午夜免费日韩视频| 久久se精品一区精品二区| 欧美午夜欧美| 亚洲一区在线看| 欧美日韩在线第一页| 日韩一区二区精品视频| 9色国产精品| 欧美三级韩国三级日本三斤| 一区二区欧美亚洲| 新67194成人永久网站| 国产精品网曝门| 一区二区三区免费观看| 亚洲永久精品国产| 国产欧美一区二区三区久久人妖| 亚洲欧美国产日韩中文字幕| 久久久久青草大香线综合精品| 国内综合精品午夜久久资源| 久久久九九九九| 亚洲精品免费在线观看| 亚洲手机在线| 国产区精品视频| 亚洲综合视频在线| 欧美成人黑人xx视频免费观看| 黄色成人在线观看| 欧美精品尤物在线| 欧美一级网站| 亚洲黄网站黄| 久久久久成人精品| 亚洲精一区二区三区| 国产精品日韩欧美一区二区三区 | 欧美精品xxxxbbbb| 亚洲欧美影院| 亚洲国产成人久久综合| 亚洲欧美日韩精品久久久久| 在线观看中文字幕亚洲| 欧美体内she精视频| 久久精品电影| 9i看片成人免费高清| 久热成人在线视频| 亚洲一区二区三区高清| 一区二区在线免费观看| 欧美另类69精品久久久久9999| 欧美一区亚洲二区| 一本久久a久久免费精品不卡| 久久久91精品国产一区二区精品| 夜夜嗨av色综合久久久综合网| 国产伦精品一区| 欧美日韩精品久久久| 久久综合图片| 久久精品国产欧美激情| 中文在线一区| 亚洲精品欧美在线| 欧美高清在线| 免费观看成人www动漫视频| 午夜精品在线观看| 99视频精品免费观看| 亚洲福利视频一区| 国产一区二区久久精品| 国产精品羞羞答答xxdd| 欧美视频网站| 欧美日韩国产一区二区|