VC操作Word 如何添加文本框并设置文字?

hurryboylqs 2013-11-23 07:21:58
求个例子,找了半天没发现,希望能在指定的位置添加一个文本框并设置文本框的属性,往里面添加文字和设置文字的格式颜色 大小 居中 居右等
...全文
576 点赞 收藏 41
写回复
41 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yfhy2014 2015-01-07
不错,很有借鉴意义
回复
许文君 2013-11-27
引用 38 楼 hurryboylqs 的回复:
这个和段落相关,不对其到网格就行了
回复
wxliangzyt 2013-11-27
我一般都是录制宏 手段操作,然后根据宏代码修改程序 编程帮助可以参考office VBA编程帮助
回复
hurryboylqs 2013-11-26
引用 25 楼 xuddk727 的回复:
我找了下,以前居然也做过。。。同样是获得边框线,然后SetVisible....试试吧
嗯,谢谢

LineFormat lineFormt(shapeBox.GetLine());
lineFormt.SetVisible(FALSE);
这样就搞定了,还有个问题想确认下,AddLine和AddTextBox这些函数都需要一些坐标值,这个在Word里的单位是用Points来表示吗?我现在程序代码里是Pixels 然后用 WordApp.PixelsToPoints转换,不知道对是不对?
回复
许文君 2013-11-26
我找了下,以前居然也做过。。。同样是获得边框线,然后SetVisible....试试吧
回复
许文君 2013-11-26
引用 23 楼 xuddk727 的回复:
[quote=引用 22 楼 hurryboylqs 的回复:] [quote=引用 21 楼 xuddk727 的回复:]

m_LineFormat=m_Shaperange.GetLine();
这就有lineformat接口了吧? 话说现在都是预先做好模板的,很多都忘记了,你怎么不预先做个模板搞的这么费劲
感谢,感谢,微软太搞了,GetLine我开始以为返回的是Line对象呢,原来是LineFormat!fuck 线条的可以了,还有一个AddTextbox返回的文本框,我想不要那个外框,就是外框轮廓设置成无,不知道是那个函数?[/quote] 这个还真没做过,得自己录宏了,话说直接把线条改成白色行么[/quote] 这种都是有填充的,偷懒下先获得backcolor然后把线条设置成那个可行么?
回复
许文君 2013-11-26
引用 22 楼 hurryboylqs 的回复:
[quote=引用 21 楼 xuddk727 的回复:]

m_LineFormat=m_Shaperange.GetLine();
这就有lineformat接口了吧? 话说现在都是预先做好模板的,很多都忘记了,你怎么不预先做个模板搞的这么费劲
感谢,感谢,微软太搞了,GetLine我开始以为返回的是Line对象呢,原来是LineFormat!fuck 线条的可以了,还有一个AddTextbox返回的文本框,我想不要那个外框,就是外框轮廓设置成无,不知道是那个函数?[/quote] 这个还真没做过,得自己录宏了,话说直接把线条改成白色行么
回复
hurryboylqs 2013-11-26
引用 21 楼 xuddk727 的回复:

m_LineFormat=m_Shaperange.GetLine();
这就有lineformat接口了吧? 话说现在都是预先做好模板的,很多都忘记了,你怎么不预先做个模板搞的这么费劲
感谢,感谢,微软太搞了,GetLine我开始以为返回的是Line对象呢,原来是LineFormat!fuck 线条的可以了,还有一个AddTextbox返回的文本框,我想不要那个外框,就是外框轮廓设置成无,不知道是那个函数?
回复
许文君 2013-11-26

m_LineFormat=m_Shaperange.GetLine();
这就有lineformat接口了吧? 话说现在都是预先做好模板的,很多都忘记了,你怎么不预先做个模板搞的这么费劲
回复
许文君 2013-11-26

	Shapes shapes=m_Doc.GetShapes();
		CComVariant varRang1(m_Selection.GetRange()),index(1);
		varRang =varRang1;
		Shape shape=shapes.AddTextbox(1,(m_HeaderAttention.left2*width*m_HeaderAttention.left1)/(m_nWordWidth*nScreemWidth), (m_HeaderAttention.top3*height*m_HeaderAttention.top1)/(m_HeaderAttention.top2*nScreemHeight)+m_HeaderAttention.littbig,
			(m_HeaderAttention.width*width*m_HeaderAttention.left1)/(m_nWordWidth*nScreemWidth), (m_HeaderAttention.height*height*m_HeaderAttention.top1)/(m_nWordHeight*nScreemHeight),&varRang);
		shape.Select(&vTrue);
		m_Shaperange=m_Selection.GetShapeRange();
		m_LineFormat=m_Shaperange.GetLine();

回复
许文君 2013-11-26
引用 17 楼 hurryboylqs 的回复:
[quote=引用 15 楼 xuddk727 的回复:] [quote=引用 12 楼 hurryboylqs 的回复:] 不行的 我看VBA也是用Line对象 然后是ForColor设置但是到了msword这个Line类就很简单,就几个函数 也没有能获得LineFormat的对象接口:

/////////////////////////////////////////////////////////////////////////////
// Line wrapper class

class Line : public COleDispatchDriver
{
public:
	Line() {}		// Calls COleDispatchDriver default constructor
	Line(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
	Line(const Line& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}

// Attributes
public:

// Operations
public:
	LPDISPATCH GetApplication();
	long GetCreator();
	LPDISPATCH GetParent();
	long GetLineType();
	long GetLeft();
	long GetTop();
	long GetWidth();
	long GetHeight();
	LPDISPATCH GetRange();
	LPDISPATCH GetRectangles();
};
lineformat有get_forecolor接口[/quote] 我知道有lineformat接口啊,但是Line里没有获得lineformat接口的函数,我是指这个意思,光有接口有什么用,你要知道怎么产生这个接口对象才行[/quote] 你等下,我找找代码
回复
zgl7903 2013-11-26
引用 16 楼 hurryboylqs 的回复:
[quote=引用 13 楼 zgl7903 的回复:] 根据宏修改还是很容易的 随便写了个测试程序 参考下 操作 WORD 画线
下载不了哦[/quote] 代码可以复制到剪切板啊
回复
hurryboylqs 2013-11-26
引用 15 楼 xuddk727 的回复:
[quote=引用 12 楼 hurryboylqs 的回复:] 不行的 我看VBA也是用Line对象 然后是ForColor设置但是到了msword这个Line类就很简单,就几个函数 也没有能获得LineFormat的对象接口:

/////////////////////////////////////////////////////////////////////////////
// Line wrapper class

class Line : public COleDispatchDriver
{
public:
	Line() {}		// Calls COleDispatchDriver default constructor
	Line(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
	Line(const Line& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}

// Attributes
public:

// Operations
public:
	LPDISPATCH GetApplication();
	long GetCreator();
	LPDISPATCH GetParent();
	long GetLineType();
	long GetLeft();
	long GetTop();
	long GetWidth();
	long GetHeight();
	LPDISPATCH GetRange();
	LPDISPATCH GetRectangles();
};
lineformat有get_forecolor接口[/quote] 我知道有lineformat接口啊,但是Line里没有获得lineformat接口的函数,我是指这个意思,光有接口有什么用,你要知道怎么产生这个接口对象才行
回复
hurryboylqs 2013-11-26
引用 13 楼 zgl7903 的回复:
根据宏修改还是很容易的 随便写了个测试程序 参考下 操作 WORD 画线
下载不了哦
回复
许文君 2013-11-26
引用 12 楼 hurryboylqs 的回复:
不行的 我看VBA也是用Line对象 然后是ForColor设置但是到了msword这个Line类就很简单,就几个函数 也没有能获得LineFormat的对象接口:

/////////////////////////////////////////////////////////////////////////////
// Line wrapper class

class Line : public COleDispatchDriver
{
public:
	Line() {}		// Calls COleDispatchDriver default constructor
	Line(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
	Line(const Line& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}

// Attributes
public:

// Operations
public:
	LPDISPATCH GetApplication();
	long GetCreator();
	LPDISPATCH GetParent();
	long GetLineType();
	long GetLeft();
	long GetTop();
	long GetWidth();
	long GetHeight();
	LPDISPATCH GetRange();
	LPDISPATCH GetRectangles();
};
lineformat有get_forecolor接口
回复
许文君 2013-11-26
有lineformat接口
回复
zgl7903 2013-11-26
根据宏修改还是很容易的 随便写了个测试程序 参考下 操作 WORD 画线
回复
hurryboylqs 2013-11-26
回复
hurryboylqs 2013-11-26
现在文字按段着色是没问题了 用SetStart现在头疼的是行间距,Word老是自动给人家弄个这么大的行间距 怎么设置好像都起不了什么作用,跟程序DrawText出来的不一致
回复
Wang471981125 2013-11-26
能不能自己创建一个word文本 不使用微软的word程序
回复
加载更多回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2013-11-23 07:21
社区公告

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