在COM中有这样一个函数,如下:bool ExportTool::CopyToClipBoard(CString& inXml, int type)
{
CDC dc;
dc.Attach(::GetDC(NULL));
CString strFileName = _T("c:\\temp\\export.txt"); CDC memDC;
CBitmap memBitmap;
memDC.CreateCompatibleDC(NULL);
CRect rc(0, 0, 782, 530);
memBitmap.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height());
memDC.SelectObject(&memBitmap);
CBrush brush(0xFFFFFF);
memDC.FillRect(&rc, &brush); CLog::Log(strFileName,_T("1"),_T("CDC and CBitmap Ready!"));

DrawingXml oDrawingXml;
oDrawingXml.SetMedium(memDC.m_hDC);
CLog::Log(strFileName,_T("2"),_T("Enter Object of DrawingXml"));
if (type == DrawingXml::eFromStream)
{
if (!oDrawingXml.Draw(inXml, DrawingXml::eFromStream))
{
return false;
}
}
else
{
if (!oDrawingXml.Draw(inXml, DrawingXml::eFromFile))
{
return false;
}
}

CLog::Log(strFileName,_T("10"),_T("Open Clipboard"));
::OpenClipboard(NULL);
::EmptyClipboard();
CLog::Log(strFileName,_T("11"),_T("Set memBitmap.m_hObject to Clipboard"));
::SetClipboardData(CF_BITMAP,memBitmap.m_hObject);
::CloseClipboard();
CLog::Log(strFileName,_T("12"),_T("Close Clipboard"));
return true;
}作用是基于xml先创建一个位图,然后拷贝到clipboard。
现在的问题是,在大多数的电脑上是好。唯独有一台客户的电脑,在运行这个功能时,失败了。
请问各位,是客户电脑缺少东西,还是代码写错了。因为在这个方法里面的,所有log都没有打出来。请问是不是出现了什么异常需要去捕获?谢谢!

解决方案 »

  1.   

    你在这个函数开头部分写个log。或许这个函数根本就没有被执行,那么问题就不在这里面了。
    如果能够出现log,那么简单的办法就是每条语句后加一个日志。这样很容易定位到哪个语句出现的问题了。
      

  2.   

    正如1楼所说,最好慢慢的加log来找问题!
      

  3.   

    你程序里有不少“return false; ”,看看是不是这些地方出问题