首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

exe与dll的参数传递?该如何解决

2012-02-21 
exe与dll的参数传递?我用dll导出一个类:CArraySerial.h#ifdefDLL_FILEclass_declspec(dllexport)CArraySer

exe与dll的参数传递?
我用dll导出一个类:

CArraySerial.h

#ifdef   DLL_FILE
class   _declspec(dllexport)   CArraySerial     //导出类CArraySerial
#else
class   _declspec(dllimport)   CArraySerial     //导入类CArraySerial
#endif
{
public:
BOOL   InitializeDevice(   CWnd*   pPortOwner,   UINT   portnr   =   1,   UINT   baud   =   9600,   char   parity   =   'N ',   UINT   databits   =   8,   UINT   stopsbits   =   2   );
}


CSerialArray.cpp
BOOL   CArraySerial::InitializeDevice(   CWnd*   pPortOwner,//   the   owner   (CWnd)   of   the   port   (receives   message)
  UINT   portnr,//   portnumber   (1..4)
  UINT   baud,//   baudrate
  char   parity,//   parity  
  UINT   databits,//   databits  
  UINT   stopsbits//   stopbits  
  )
{
HWND   hTest   =   *pPortOwner;
CString   strTemp;
strTemp.Format(   "%d ",   hTest   );
AfxMessageBox(   strTemp   );

return   TRUE;
}

exe文件中引用:

void   CSerialMFCDEMODlg::OnConnect()  
{
//   TODO:   Add   your   control   notification   handler   code   here
HWND   hTest   =   *this;
CString   strTemp2;
strTemp2.Format(   "%d ",   hTest   );
AfxMessageBox(   strTemp2   );

m_SerialDevice.InitializeDevice(   this,   m_unPort,   m_unBaudRate,   *(   m_sParity.c_str()   ),   m_unDataBit   );
}

结果dll中弹出的窗口指针和exe弹出的窗口指针值不一样,不知是什么原因,改如何解决,谢谢!!


[解决办法]
搞定了,原来指针是一样的,但是指针所指向的m_hWnd是不一样的。至于具体原因我不清楚。
解决方法:在传递CWnd*时,再加一个参数把m_hWnd也直接穿过来,而不是在dll中调用CWnd-> m_hWnd。

收分 ^_^

热点排行