求一例子程序:主工程与DLL模块之间的通信,交互。RT~~多谢!!

解决方案 »

  1.   

    通信?
    dll有接口就行了吧
      

  2.   

    主工程(dlg)发消息给DLL收,DLL发消息给主工程(dlg)收。如何让DLL得到主程序dlg的句柄等等~~因为得到句柄才好发消息和数据啊~
      

  3.   

    只要知道窗口句柄,直接postmessage就行
    DLL也可以直接发向NULL,也表示发到主消息循环
      

  4.   

    能不能给几句实现的代码例子呢?
    主对话框中以下语句向DLL中传递了主对话框的句柄hparent:
                  info.pPlug->CreateForm(hparent);DLL中如下函数接受了该句柄hparent:
    void CClass1DataReadPlugin::CreateForm(HWND hParent)
    {

    }现在hparent就是主窗口的句柄,要在DLL中通过这个句柄调用主窗口类的函数怎么写?要向主窗口发消息怎么写?谢谢~
      

  5.   


    DLL中
    #define WM_GETMESSAGE      WM_USER+112 //自定义消息
    HANDLE hMapping;   
    LPWSTR lpData;   
    hMapping=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x1000,"MYSHARE");   
    if(hMapping!=NULL)
    {
    lpData=(LPWSTR)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0);
    if(lpData!=NULL)
    {
    swprintf(lpData,L"%s","你要写的数据");
    //给主线程发送消息 g_hMain是目标进程的窗口句柄
    PostMessage(g_hMain,WM_GETMESSAGE,NULL,NULL);
                                    
    }
    UnmapViewOfFile(lpData); 
    }
    主窗口进程添加自定义消息WM_GETMESSAGE代码省略接收函数
    LRESULT CMainDlg::OnReceiveMessage(WPARAM wParam, LPARAM lParam)
    {
        HANDLE hMapping; 
        LPWSTR lpData; 
        hMapping=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x1000,"MYSHARE");
        if(hMapping!=NULL)
        {
            lpData=(LPWSTR)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0);
            if(lpData!=NULL)
            {
               CString strText(lpData);
                       //处理接收到的数据
                      .......
            }
            UnmapViewOfFile(lpData);
        }
        return true;
    }