VC 怎么向WORD里新增一页并在新页里输出内容?

hurryboylqs 2013-12-09 01:47:46
Docments的Add好像只能加第一页?
...全文
383 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
许文君 2013-12-12
  • 打赏
  • 举报
回复
是的,就是GOTO,如果只想使用最后一页,直接通过activedocuments返回的接口调用GetSmartDocument也是可以达到相同目的的。word版本兼容性确实是问题,许多接口都有一些改变。
hurryboylqs 2013-12-11
  • 打赏
  • 举报
回复
引用 13 楼 xuddk727 的回复:
[quote=引用 12 楼 hurryboylqs 的回复:] [quote=引用 11 楼 xuddk727 的回复:] 使用selection的insertnewpage创建新页
插入新页没问题,怎么把文本框线条会知道新页不知道怎么弄[/quote] 是指在新增的页面创建文本框么?应该与selection有关,没开发机,明天帮你试下[/quote] 对的,等待你的答案哦
hurryboylqs 2013-12-11
  • 打赏
  • 举报
回复
好像基本可以了,用_Document的Goto方法,原来是参数传递的不对,还有代码写了几行比较乱导致调了几个小时,真是苦逼: CComVariant varGotPage((long)1); CComVariant varDirection((long)1); CComVariant varPageIndex((long)1);//WORD里从1开始数页码,不是从0开始,谨记这一点 Range rang0(doc.GoTo(&varGotPage,&varDirection,&varPageIndex,&tpl));//获得第一页的Range //然后就可以在这个Range上画线了 Shapes shapes = doc.GetShapes(); //AddLine的最后一个参数就可以把一个Range对象构造成一个VARAINT类型指针传递进去 CComVariant varRang00(rang0); Shape shapeLine(shapes.AddLine(0,0,200,300,&varRang00)); LineFormat shaLine(shapeLine.GetLine()); shaLine.SetWeight(3); 其他页以此类推,先不结贴,待问题完全搞定再来结下,在此感谢许君的帮忙,另外许君上面的方法可能在word 2010下没问题,但是估计版本兼容性不好,如果其他人也遇到类似问题,按照我的方法来:先跳到某一页(或者说先获得某一页的Range,因为画图或者画线 画框的那些函数最后一个参数需要一个Range给他定位)
hurryboylqs 2013-12-11
  • 打赏
  • 举报
回复
我加到300分,我用了Selection的Goto好像也跳的乱,首页也最后一页都不准确了,不知道是参数传错还是怎么搞
hurryboylqs 2013-12-11
  • 打赏
  • 举报
回复
引用 21 楼 xuddk727 的回复:
没有下载地址哦,网管给装的,你网上搜一个试试吧
还是存在问题,第二页是可以的,但是第三页,第四页就乱套了,应该还是要找到怎么把selection移动到最后一页再作图的方法,许君再看下
许文君 2013-12-11
  • 打赏
  • 举报
回复
没有下载地址哦,网管给装的,你网上搜一个试试吧
hurryboylqs 2013-12-11
  • 打赏
  • 举报
回复
我的是WORD 2007,你有WORD 2010下载地址吗我也装个看 ,感觉word 2007bug特多
许文君 2013-12-11
  • 打赏
  • 举报
回复
我这测试没问题啊,环境word2010
hurryboylqs 2013-12-11
  • 打赏
  • 举报
回复
就是必须要调用这句WordApp.SetVisible(TRUE);才能把图形或者线条输出到非第一页
hurryboylqs 2013-12-11
  • 打赏
  • 举报
回复
引用 16 楼 xuddk727 的回复:
insertnewpage可能是07开始的接口,在早期似乎没有,不然用这个接口就便捷了
如果word不显示出来还是会在第一页,显示出来才可以,知道什么原因吗?把数据导出到word 用户不喜欢把word打开
许文君 2013-12-11
  • 打赏
  • 举报
回复
insertnewpage可能是07开始的接口,在早期似乎没有,不然用这个接口就便捷了
许文君 2013-12-11
  • 打赏
  • 举报
回复
引用 14 楼 hurryboylqs 的回复:
[quote=引用 13 楼 xuddk727 的回复:]
[quote=引用 12 楼 hurryboylqs 的回复:]
[quote=引用 11 楼 xuddk727 的回复:]
使用selection的insertnewpage创建新页

插入新页没问题,怎么把文本框线条会知道新页不知道怎么弄[/quote]
是指在新增的页面创建文本框么?应该与selection有关,没开发机,明天帮你试下[/quote]
对的,等待你的答案哦[/quote]

sel.BoldRun();
sel.InsertBreak(vTrue);
_Document doc2 = app.GetActiveDocument();
Shapes shapes2 =doc.GetShapes();
CComVariant varRang(sel.GetRange()),index(1);
//font=sel.GetFont();
Shape shape=shapes.AddTextbox(1,100, 100,
200, 200,&varRang);


hurryboylqs 2013-12-10
  • 打赏
  • 举报
回复
引用 5 楼 xianglitian 的回复:
抛开编程实现不谈 就你说的这个需求如果在word里直接操作 我理解就是插入一个分页符 这样就能出现一个新页 这与输出内容就简单了 我录了一下宏 插入分页符的VBA代码为 Selection.InsertBreak Type:=wdSectionBreakNextPage 你在VC可调用的接口中找找相同的功能吧
插入一页已经好了,上面我也写出来了用Selection.InsertBreak(vOpt);,但是怎么往指定的某一页输出文本框或者线条之类的? Window mWindowActive; View mViewActive; Pane mPane; 这几个类是做什么用的?没找到方法
向立天 2013-12-10
  • 打赏
  • 举报
回复
抛开编程实现不谈 就你说的这个需求如果在word里直接操作 我理解就是插入一个分页符 这样就能出现一个新页 这与输出内容就简单了 我录了一下宏 插入分页符的VBA代码为 Selection.InsertBreak Type:=wdSectionBreakNextPage 你在VC可调用的接口中找找相同的功能吧
hurryboylqs 2013-12-10
  • 打赏
  • 举报
回复
顶起,求解答
许文君 2013-12-10
  • 打赏
  • 举报
回复
引用 12 楼 hurryboylqs 的回复:
[quote=引用 11 楼 xuddk727 的回复:] 使用selection的insertnewpage创建新页
插入新页没问题,怎么把文本框线条会知道新页不知道怎么弄[/quote] 是指在新增的页面创建文本框么?应该与selection有关,没开发机,明天帮你试下
hurryboylqs 2013-12-10
  • 打赏
  • 举报
回复
引用 11 楼 xuddk727 的回复:
使用selection的insertnewpage创建新页
插入新页没问题,怎么把文本框线条会知道新页不知道怎么弄
许文君 2013-12-10
  • 打赏
  • 举报
回复
使用selection的insertnewpage创建新页
hurryboylqs 2013-12-10
  • 打赏
  • 举报
回复
顶起,求答案,再加分
hurryboylqs 2013-12-10
  • 打赏
  • 举报
回复
Window mWindowActive; View mViewActive; Pane mPane; mWindowActive = WordApp.GetActiveWindow(); mPane = mWindowActive.GetActivePane(); mViewActive = mPane.GetView(); mViewActive.SetSeekView(1); 这样子也不行呢
加载更多回复(5)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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