比如我在我DLL 写了个函数 YANG() 里面使用了 MESSAGEBOX() 但我想让主应用程序调用YANG()的时候就把自己的主窗口传递给这个MESSAGEBOX 使这个MESSAGEBOX的主窗口为我设定的窗口我的问题在于我把YANG()加了个参数(CWND *)但它说没申明 我就把它需要的头文件AFXWIN。H加入 还是说什么已经申明 我糊涂了哪位能给个完整的代码(局部的调用过程的代码)  谢谢了

解决方案 »

  1.   

    估计是你的DLL工程里面已经include了Windows.h吧。如果你的DLL里面用不到MFC的函数,可以把你的参数改成HWND,用api的函数
      

  2.   

    参数类型的问题,可以加头文件,应该是windows.h调用的问题,可以从exe传入一个函数指针给dll,这样就不用传输数据。
      

  3.   

    楼主不要直接写CWnd*,改成void*,然后在函数内部再将指针类型转换为CWnd*就可。
      

  4.   

    只有MFC扩展DLL中导出的函数可以传递MFC类作为参数。你的问题,我想用HWND做参数就可以了
      

  5.   

    beijingshizi(北京石子)(★★★★★)   如何做 具体点 如何把EXE的函数发布给DLL
      

  6.   

    不是特别清楚你的用法,如果你是为了在窗口里面显示东西又不想传窗口句柄的话:回调函数  ,dll初始化的时候把函数指针给他。然后dll直接调用该函数,在该函数里面完成对窗口的操作。这样取窗口句柄就在你的工程里面。
      

  7.   

    我的意思是说 如果我在EXE里面写了个函数 如何给DLL用 比如DLL写的函数是通过EXPORTS发布的这样EXE  可以用LOADLIBRATY 去得到 但DLL 如何得到EXE里面的呢?
      

  8.   

    //要调用的函数
    BOOL WINAPI CMaxPlatApp::Work_Out( CString type, CString tel, CString para)
    {
      ..................
    }//动态库的函数
    typedef BOOL (*SETCALLBACK)( CString dsd , long query , CString path , OUTDIAL_CALLBACK call ) ;
    SETCALLBACK function_setpara ;//要调用的函数指针
    typedef BOOL (WINAPI *OUT_CALLBACK)( int type , CString tel , CString para ); //供动态链接库使用的函数指针//在这儿传入(最后一个参数)
    function_setpara ( "dsn=, 10000 , "" , (OUTDIAL_CALLBACK) Work_Trunk_OutDial ); 在动态库里面定义一个跟上面一样的函数指针,然后直接执行就可以了
      

  9.   

    还是很糊涂  能不能给点完整的 比如在EXE里面什么地方写下函数 在DLL里面的什么地方写函数指针 我是个新手不太清楚 如果给了完整一点的例子 我可以把分加多