关于M SComm控件的问题?

godzhwei 2008-05-23 01:05:34
从下面函数以外的一个文件中调用该函数,怎么会出现内存之类的错误?
void CRemoteMSDlg::SendData(CString data)
{
int len;
CString m_Ascii;
m_Ascii=data;
CByteArray m_Array;
len=String2Hex(m_Ascii,m_Array);
m_comport.SetOutput(COleVariant(m_Array));
m_comport.SetOutBufferCount(0);
}
在该函数中设断点则进了了下面的函数中。。。
void AFX_CDECL CWnd::InvokeHelper(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
void* pvRet, const BYTE* pbParamInfo, ...)
{
ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)

if (m_pCtrlSite == NULL)
return;

va_list argList;
va_start(argList, pbParamInfo);
m_pCtrlSite->InvokeHelperV(dwDispID, wFlags, vtRet, pvRet, pbParamInfo,
argList);
va_end(argList);
}
大家知道是什么原因吗?该如何解决??
...全文
128 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
godzhwei 2008-05-26
  • 打赏
  • 举报
回复
...help
godzhwei 2008-05-26
  • 打赏
  • 举报
回复
hepl me!
godzhwei 2008-05-26
  • 打赏
  • 举报
回复
去掉m_comport.SetOutBufferCount(0); 这句还是错误啊!~
alan001 2008-05-24
  • 打赏
  • 举报
回复
UP
zgl7903 2008-05-23
  • 打赏
  • 举报
回复
m_comport.SetOutBufferCount(0); 把这句去掉看看
godzhwei 2008-05-23
  • 打赏
  • 举报
回复
String2Hex处应该没有问题,我设断点过,是
m_comport.SetOutput(COleVariant(m_Array));
m_comport.SetOutBufferCount(0);
这两语句产生错误...拿掉这两句就没错误的!
zgl7903 2008-05-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 godzhwei 的帖子:]
从下面函数以外的一个文件中调用该函数,怎么会出现内存之类的错误?
void CRemoteMSDlg::SendData(CString data)
{
int len;
CString m_Ascii;
m_Ascii=data;
CByteArray m_Array;
len=String2Hex(m_Ascii,m_Array);
m_comport.SetOutput(COleVariant(m_Array));
m_comport.SetOutBufferCount(0);
}
在该函数中设断点则进了了下面的函数中。。。
void AFX_CDECL CWnd::InvokeHelper(DISPID dwDisp…
[/Quote]
看看堆栈信息,往后退到程序代码处
怀疑String2Hex处有问题,可以把这一段替换成已知量
CByteArray m_Array;
m_Array.RemoveAll();
for(BYTE i='a';i<='z';i++)
m_Array.Add(i);
godzhwei 2008-05-23
  • 打赏
  • 举报
回复
void CRemoteMSDlg::SendData(CString data)
{
int len;
CString m_Ascii;
m_Ascii=data;
CByteArray m_Array;
len=String2Hex(m_Ascii,m_Array);
m_comport.SetOutput(COleVariant(m_Array));
m_comport.SetOutBufferCount(0);
}
在该函数同一文件内的地方调用该函数没有问题的,在别的文件内调用SendData( data)就跳出上面那错误...
godzhwei 2008-05-23
  • 打赏
  • 举报
回复
"0x5f4392f3"指令引用的"0x000000ec"内存.该内存不能为"read".
要终止程序,请单击"确定".
要高度程序,请单击"取消".
godzhwei 2008-05-23
  • 打赏
  • 举报
回复
naiveC 2008-05-23
  • 打赏
  • 举报
回复
内存之类的错误?
具体说说啊
godzhwei 2008-05-23
  • 打赏
  • 举报
回复
来人呐,帮帮忙~~
godzhwei 2008-05-23
  • 打赏
  • 举报
回复
通过资源的方法创建的,调用的时候已经创建控件了啊,我的控件是放在主对话框上的,在子对话框上调用的...
youngwolf 2008-05-23
  • 打赏
  • 举报
回复
控件你创建了吗?
如果动态创建,就要调用Create函数,如果是在通过资源的方法创建,那么也要看调用位置,要保存调用的时候,控件已创建。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧