最近在操作WORD,中途老有这样那样的问题。
先是会随机崩溃。  for (i=0;i<cmdNode;i++)
  {
  xml.GetChildListNode(TEXT("str"),szGetNode,szGetInfo,i);
  font.SetSize(10.5);
pf=sel.GetParagraphFormat();
pf.SetAlignment(0);
  sel.SetParagraphFormat(pf);
  if(!bFirst)
  {
  str.Format(TEXT("2.1.旋转"));
  sel.TypeText(str);sel.TypeParagraph();
  str.Format(TEXT("2.1.1.旋转方式"));
sel.TypeText(str);sel.TypeParagraph();
  }
 
  if (_tcscmp(szGetInfo[3],TEXT("0"))==0)
  str.Format(TEXT("第%d次时,先逆向旋转后正向旋转"),i+1);
else
  str.Format(TEXT("第%d次时,先正向旋转后逆向旋转"),i+1);
  sel.TypeText(str);sel.TypeParagraph();
  bFirst=TRUE;
  }因为我是解析一个xml,然后内容全在迭代器里,所以函数中有很多这样的for循环。然后我发现它会随机性的崩溃(不是一定崩溃)。
崩溃的地方是
BOOL AFXAPI AfxDeactivateActCtx(DWORD dwFlags, ULONG_PTR ulCookie)  
{  
    BOOL rc = pfnDeactivateActCtx != 0 ?     pfnDeactivateActCtx(dwFlags, ulCookie) : FALSE;  
    return rc;  
}  
而最坑爹是的看堆栈没有任何信息。于是我尝试网上搜索,发现了如下博文:
http://blog.csdn.net/ocean2006/article/details/5805707
我怀疑可能原因是1,同CString有关,于是所有CSTRING改成TCHAR,如此试验数次未出现当初BUG(但还并不知道是否就是这个原因),于是跳过,继续出现其他问题。。一个for循环操作完表格之后
for(...)
{
 ...
}sel.MoveRight(COleVariant((short)1),COleVariant(short(1)),COleVariant(short(0)));//移出表格
sel.TypeParagraph();//显示断点运行之此行时老是被捕获异常,然后就不执行了
...本人对word并不熟悉,恳请高人讲解,因只能散100分,故稍后再开一帖。