在VC中向word中插入图片,提示“类型不匹配”

晒月光的青蛙 2009-05-22 02:26:47
我在VC中用代码打开word2007,并能插入文字,但是插入图片总是出错,提示“类型不匹配“,代码如下,请高手帮忙分析一下

if (::CoInitialize(NULL) != 0)
{
AfxMessageBox("初始化COM失败");
return;
}
_Application app;
app.CreateDispatch(_T("Word.Application"));
app.SetVisible(TRUE);

Documents docs = app.GetDocuments();
CComVariant Template(_T("")); //不使用模板
CComVariant NewTemplate(false), DocumentType(0),Visible;

docs.Add(&Template,&NewTemplate,&DocumentType,&Visible);

Selection sel=app.GetSelection();
//调用函数Selection::TypeText 向WORD发送字符
sel.TypeText(_T("HELLO\r\n大家好呀"));

Range selRange = sel.GetRange();

InlineShapes inlineShapes = sel.GetInlineShapes();

CComVariant linktoFile(false),SaveWithDocument(false),range;

inlineShapes.AddPicture(_T("F:\\13.jpg"),&linktoFile,&SaveWithDocument,&range);
...全文
239 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mc185023238 2009-09-14
  • 打赏
  • 举报
回复
我也正找这个呢!
晒月光的青蛙 2009-05-22
  • 打赏
  • 举报
回复
ok,搞定了,谢谢各位的建议,散分
zhuzhenlei 2009-05-22
  • 打赏
  • 举报
回复
换成bmp格式,要伪彩的
cxxstudy 2009-05-22
  • 打赏
  • 举报
回复
顶一下,这个很有用
warsour 2009-05-22
  • 打赏
  • 举报
回复
使用VC向word中插入图片
C/C++ code
#pragma warning(disable:4786)

#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLL"
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "D:\Program Files\Microsoft Office\OFFICE11\msword.olb" rename("ExitWindows","WordExitWindows")// no_namespace

using namespace Word;
void CcsdndialogDlg::OnBnClickedButton4()
{
::CoInitialize(NULL);
Word::_ApplicationPtr m_WordPtr;
Word::_DocumentPtr m_DocPtr;
Word::InlineShapesPtr pInShapes;
Word::InlineShapePtr pInShape;
HRESULT hr;
try{
hr=m_WordPtr.CreateInstance(L"Word.Application");
m_WordPtr->Visible=VARIANT_TRUE;
m_DocPtr=m_WordPtr->Documents->Open(&CComVariant((char*)_bstr_t("F:\\test.doc")),&vtMissing,
&vtMissing,&CComVariant(VARIANT_FALSE));

pInShapes=m_DocPtr->GetInlineShapes();


pInShape=pInShapes->AddPicture("d:\\1.BMP");
}
catch(_com_error *e)
{
MessageBox("haha","no word",MB_OK);
return ;
}
}
TianChong 2009-05-22
  • 打赏
  • 举报
回复
最后一个变量的类型不匹配吧?),_variant_t转换一下再用,
另外,使用的图片格式会不会有要求,我下面的例子使用的是bmp格式的。你要可以试一下。我本机上是正常的。
Selection sel=app.GetSelection();
InlineShapes inlineshapes = sel.GetInlineShapes();
inlineshapes.AddPicture("F:\\13.bmp",COleVariant((short)FALSE),COleVariant((short)TRUE),&_variant_t(sel.GetRange()));
inlineshapes.ReleaseDispatch();
sel.ReleaseDispatch();
jameshooo 2009-05-22
  • 打赏
  • 举报
回复
AddPicture最后一个参数从&range改成&vtMissing试试

3,245

社区成员

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

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