• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 关于vc控制word的问题,有关word文档的坐标问题,高手请进

关于vc控制word的问题,有关word文档的坐标问题,高手请进

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了vc 画坐标,vc坐标,vc 屏幕坐标,vc显示word文档,word文档坐标轴等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于vc控制word的问题,有关word文档的坐标问题,高手请进
描述:

下面程序的作用是:向当前word文档按给定屏幕坐标插入一副图片,但是插入位置老是不对,怎么改?
bool CLabelBkGrd::PasteToDoc()
{
// TODO: Add extra validation here
//初始化COM
HRESULT hr;
hr=CoInitialize(NULL);
// if (CoInitialize(NULL)!=0) 
// { 
// AfxMessageBox("初始化COM支持库失败!"); 
// exit(1); 
// }
//*
ASSERT(!FAILED(hr));
IUnknown *pUnk;
CLSID clsid;
CLSIDFromProgID(L"Word.Application", &clsid);  
hr = GetActiveObject(clsid, NULL, (IUnknown**)&pUnk);
ASSERT(!FAILED(hr));
// Get IDispatch 
IDispatch *pDisp;
hr = pUnk->QueryInterface(IID_IDispatch, (void **)&pDisp);
ASSERT(!FAILED(hr));
_Application WordApp(pDisp);
// . . . Use the IDispatch pointer for automation . . .
 //   _Application WordApp; //代表WORD程序
Documents docs; //代表一个WORD程序里的所有文档
_Document doc; //代表一个文档
Shapes shs;
Shape shp;
docs=WordApp.GetDocuments();
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
//用docs来打开一个文档,并将句柄返回给doc
doc=WordApp.GetActiveDocument();
doc.Activate();
Paragraph paragraph;//用来表示文档中某一段
Paragraphs paragraphs;//用来表示文档中所有段
paragraphs=doc.GetParagraphs();
paragraph=paragraphs.GetFirst();//得到第一段
Range r=paragraph.GetRange();
Window window;
window=WordApp.GetActiveWindow();
Range AddPictureRang;
long lScreenPointLeft,lScreenPointTop,lScreenPointRight,lScreenPointBottom;
//从一文件获得插入图片的屏幕坐标
GetPasteScreenPoint(&lScreenPointLeft,&lScreenPointTop,&lScreenPointRight,&lScreenPointBottom);
CString s1;
s1.Format("lScreenPointLeft=%d,lScreenPointTop=%d",lScreenPointLeft,lScreenPointTop);
MessageBox(s1,NULL,0);
//根据给定的屏幕坐标找到一个range对象
AddPictureRang=window.RangeFromPoint(lScreenPointLeft,lScreenPointTop);
if (AddPictureRang.m_lpDispatch==NULL)
MessageBox("",NULL,0);
long ScreenPixelsLeft,ScreenPixelsTop,ScreenPixelsWidth,ScreenPixelsHeight;
//获得找到range对象的左上点,以及宽高
window.GetPoint(&ScreenPixelsLeft,&ScreenPixelsTop,&ScreenPixelsWidth,&ScreenPixelsHeight,AddPictureRang);
CString s;
s.Format("ScreenPixelsLeft=%d,ScreenPixelsTop=%d,ScreenPixelsWidth=%d,ScreenPixelsHeight=%d",ScreenPixelsLeft,ScreenPixelsTop,ScreenPixelsWidth,ScreenPixelsHeight);
MessageBox(s,NULL,0);
s1.Format("left=%d,top=%d",lScreenPointLeft-ScreenPixelsLeft,lScreenPointTop-ScreenPixelsTop);
MessageBox(s1,NULL,0);
if(AddPictureRang.m_lpDispatch==0)
MessageBox("",NULL,0);
long wvs,whs;
PageSetup pagesetup;
pagesetup=doc.GetPageSetup();
VARIANT varLeft;
VARIANT varTop;
VARIANT varWidth;
VARIANT varHeight;
VARIANT varRange;
varLeft.vt=VT_I4;
//计算屏幕坐标与插入图片所在range的左上点的相对位置
//计算图片相对range的左边位置
varLeft.lVal=lScreenPointLeft-ScreenPixelsLeft;//0;//
varTop.vt=VT_I4;
//计算图片相对range的上边位置
varTop.lVal=lScreenPointTop-ScreenPixelsTop;//0;//
varWidth.vt=VT_I4;
//计算插入图片的宽度
varWidth.lVal=lScreenPointRight-lScreenPointLeft;//0;//
varHeight.vt=VT_I4;
//计算插入图片的高度
varHeight.lVal=lScreenPointBottom-lScreenPointTop;//0;//
varRange.vt=VT_DISPATCH;
varRange.pdispVal=AddPictureRang;
shs=doc.GetShapes();
// shs.AddPicture("c:\\a.bmp",covOptional,covOptional,&varLeft,&varTop,covOptional,covOptional,&varRange);
shs.AddPicture("c:\\a.bmp",covOptional,covOptional,&varLeft,&varTop,&varWidth,&varHeight,&varRange);
//选中添加的图片
VARIANT var;
var.vt=VT_I4;
var.lVal=shs.GetCount();
shp=shs.Item(&var); 
shp.Select(&var);
//把选中图片的格式设置为浮动在文字上面
Selection selection=WordApp.GetSelection();
ShapeRange shaperange=selection.GetShapeRange();
WrapFormat wrapformat=shaperange.GetWrapFormat();
    wrapformat.SetType(3);
//下面弹出对话框让我迷惑,添加图片的左上角坐标与我添加时的设置不一样
float l=shp.GetLeft();
float t=shp.GetTop();
s1.Format("Left=%f,Top=%f",l,t);
MessageBox(s1,NULL,0);
pUnk->Release();
CoUninitialize();
return true;
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MapObject在VC环境下如何进行坐标转换,下面有部分代码,请高手指点?
  • 关于vc控制word的问题,有关word文档的坐标问题,高手请进

相关文章

  • 2017-06-04 我用ActiveX向导做控件,在利用向导生成方法时,想用一个结构指针作为参数,请问该选哪种类型的参数?
  • 2017-06-04 如何实现类似Dephi中的tolecontainer功能
  • 2017-06-05 请指导:VC用ADO做一个DLL的问题----急!!!附代码,一定送分
  • 2017-06-04 DCOM在win2000中的配置问题
  • 2017-06-05 vsflexgridcombolist属性C++
  • 2017-06-04 圆packing和np
  • 2017-06-04 如何利用DCOM技术来访问网内的另一台机器上的数据库?
  • 2017-06-05 写个过滤数据包的Win32DLL(SPI的Xfilter那种)
  • 2017-06-05 怎么用HOOK拦截WM_CTLCOLOR消息呀?
  • 2017-06-04 极其郁闷:求教在ActiveX控件的对话框上的绘图问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何将DCOM组件的配置打进安装包里?
    • vb调用vc的atlfullcontrol
    • 关于COM的一个问题
    • COM计用计数:如何理解AddRed、Release返回的计数值是不精确的,不可信的?
    • 对于BHO来说这两种注册有什么区别?
    • VC做CAD二次开发,CAD需要掌握到什么情况
    • 求助:如何实现虚拟硬盘
    • 一个线程new的指针是否可以在另一个线程delete?
    • 关于Event得问题!!!!!
    • pdf高手进来看看,怎么用OLE显示PDF文件啊?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有