上次偶就怎样在DLL中使用串口控件MSCOMM请教诸位大虾, masterz() 大虾给予偶答复如下(深表感谢)问题以及回答如下
==========================================================================
==========================================================================
诸位大虾,偶想偷个懒,不用API函数,而直接用串口ActiveX控件MSCOMM在动态库中封装串口函数,请大家教个窍门,THANKS!---100分双手奉上  回复人: masterz() (  ) 信誉:96  2002-09-17 21:04:00  得分:0  
 
  use #import directive, here is codesnippet on winsock control
   #import "c:\winnt\system32\mswinsck.ocx" no_namespace
   ...
IMSWinsockControlPtr pWinsock;
_bstr_t pstr("mswinsock.winsock");
CLSID clsidwinsock;
CLSIDFromProgID(pstr,&clsidwinsock);
pWinsock.CreateInstance(clsidwinsock);
if(pWinsock)
{
pWinsock->RemotePort=13;
pWinsock->RemoteHost=_bstr_t("time-a.nist.gov");
_variant_t varoptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
HRESULT hr= pWinsock->Connect();
if(FAILED(hr))
MessageBox(NULL,"failed","failed",MB_OK);
......pWinsock->Close();
}
else
MessageBox(NULL,"can not create winsock","error",MB_OK);
 
============================================================
============================================================但是偶就是看不明白(希望masterz() 大虾不要吐血)
偶实在有点不明白:书上以及CSDN上好多文章说,对于ActiveX控件(MSCOMM是ActiveX控件啊!)只要加上如下两句话即可:
         ::CoInitalize(NULL) 
         AfxEnableControlContainer();
可是偶试了N多次,还是错误
情况简单描述如下:
偶做的DLL基于常规MFC,偶在theApp类的构造函数theApp::theApp()和初始化函数theApp::Initiate()分别添加了上面所说的两句话,然后再做了程序调用该DLL,结果程序运行与MSCOMM相关操作时候发生ASSERT异常,
ASSERT异常为表明为WINOCC。CPP中错误,查找相关源文件为not OLE控件错误其实偶知道只要用API函数即可解决偶DLL的问题,但是偶是一名初学者,希望能搞清楚ActiveX、DLL等基本概念,所以偶GGYY地说了一大堆,希望诸位过来人帮助偶,谢谢!问题有点长,也不知道说清楚了没有,还望各位大虾出手相助,感激不尽!