首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

妖哥老师你好,小弟我已经发邮件给你了,可能你没有看到吧

2013-01-07 
妖哥老师你好,我已经发邮件给你了,可能你没有看到吧老师,我是前几天发word转换为图片的那个人 。已经发送了

妖哥老师你好,我已经发邮件给你了,可能你没有看到吧
老师,我是前几天发word转换为图片的那个人 。已经发送了邮件。

非常抱歉,以帖子的形式呼唤你,项目催的紧。我始终找不到原因所在。

如果有打扰的地方,望见谅。


[解决办法]
OLE专业户来也!!!

COleVariant ovTrue((short)TRUE);
COleVariant ovFalse((short)FALSE);
COleVariant ovOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

// 创建Word对象
CApplication objWordApp;
if (!objWordApp.CreateDispatch("Word.Application"))
{
::MessageBoxA(NULL, "Couldn't get Word object.", NULL, MB_OK);
return;
}

// 隐藏WORD界面
objWordApp.put_Visible(false);
// 屏蔽异常对话框
objWordApp.put_DisplayAlerts(false);

CDocuments objDocs;
objDocs.AttachDispatch(objWordApp.get_Documents());

// 打开指定的Word文档
CDocument0 objDoc;
COleVariant ovFileName("D:\\ccrun\\123.doc");
objDoc.AttachDispatch(objDocs.Open(
ovFileName,
ovFalse,
ovFalse,
ovFalse,
ovOptional,
ovOptional,
ovFalse,
ovOptional,
ovOptional,
COleVariant((short)0),
ovTrue,
ovTrue,
ovOptional,
ovOptional,
ovOptional,
ovOptional
));

// 重新分页
objDoc.Repaginate();
// 操作这个文档
objDoc.Activate();

CSelection objSelect = objWordApp.get_Selection();
COleVariant ovWhat((long)1);
COleVariant ovWhich((long)2);
COleVariant ovCount((long)1);
COleVariant ovName((long)2);

// 定位到第2页
objSelect.GoTo(ovWhat, ovWhich, ovCount, ovName);

COleVariant ovUnit((long)6);
COleVariant ovExtend((long)1);

// 选中第2页并复制
objSelect.EndKey(ovUnit, ovExtend);
objSelect.Copy();

// 创建一个新页面
CDocument0 objNewDoc;
objNewDoc.AttachDispatch(objDocs.Add(ovOptional, ovOptional, ovOptional, ovOptional));
objNewDoc.Activate();

COleVariant ovPlacement(long(0), VT_I4);
COleVariant ovMetafile(long(9), VT_I4);//wdPasteEnhancedMetafile

// 选择性粘贴为图像
objSelect = objWordApp.get_Selection();
objSelect.PasteSpecial(ovOptional, ovFalse, ovPlacement, ovFalse, ovMetafile, ovOptional, ovOptional);

// 选中这个图像并复制
CinlineShapes objShapes = objNewDoc.get_InlineShapes();
CinlineShape  objhape = objShapes.Item(1);

objhape.Select();
objSelect.AttachDispatch(objWordApp.get_Selection());
objSelect.Copy();

// 打开剪贴板
::OpenClipboard(0);

// 获取剪贴板中的EMF数据
HANDLE hEmf = ::GetClipboardData(CF_ENHMETAFILE);

if (hEmf)
{
// 保存EMF文件
char szEmfFile[MAX_PATH] = "E:\\temp\\123.emf";
HENHMETAFILE h = ::CopyEnhMetaFile((HENHMETAFILE)hEmf, szEmfFile);

// 在下面添加EMF文件转BMP文件的代码就行了
if (h > 0)
{
::DeleteEnhMetaFile(h);

// ...
// EMF转BMP代码略去
// ...
// ::DeleteFile(szEmfFile);
}
}
else
{
::MessageBoxA(NULL, "剪贴板错误", NULL, MB_OK);
}

::CloseClipboard();

objNewDoc.ReleaseDispatch();
objDoc.ReleaseDispatch();
objDocs.ReleaseDispatch();

objWordApp.Quit(
ovFalse,       // 保存修改
ovTrue,        // 原始格式
ovFalse        // RouteDocument.
);
objWordApp.ReleaseDispatch();



::MessageBoxA(NULL, "结束!", NULL, MB_OK);

热点排行