【妖哥】:C++ Builder操作Word,如何改变paste进去图片的大小?(续)
http://topic.csdn.net/u/20090818/22/0915cd33-09c0-4d83-842a-a3a2ce56a971.html?58035
上一贴非常感谢啦,按你的方法已经搞定并结贴的说
由于很多地方要用到缩放图片,就把你的代码改写成一个函数,综合考虑保持图片比例的问题,在office_xp.h中查到了
typedef enum MsoTriState{ msoTrue = 0xFFFFFFFF, msoFalse = 0, msoCTrue = 1, msoTriStateToggle = 0xFFFFFFFD, msoTriStateMixed = 0xFFFFFFFE} MsoTriState;
bool SetWordPicSize(Variant vSel,const unsigned int uWidth, const unsigned int uHeight, bool bKeepRatio){ Variant vShape; if((uWidth!=0 && uHeight!=0 && bKeepRatio) || (uWidth==0 && uHeight==0)) return false; vSel.OleProcedure("MoveLeft"); vSel.OleProcedure("MoveRight", 1, // Unit:=wdCharacter, 1, // Count:=1, 1 // Extend:=wdExtend ); if (int(vSel.OlePropertyGet("Range").OlePropertyGet("InlineShapes").OlePropertyGet("Count"))>0) { // 获取到这个图像 vShape=vSel.OlePropertyGet("Range").OlePropertyGet("InlineShapes").OleFunction("item",1); // 更改其高度和宽度 if(bKeepRatio) { // 按比例缩放 vShape.OlePropertySet("LockAspectRatio",0xFFFFFFFF); // msoTrue if(uWidth==0) vShape.OlePropertySet("Height",uHeight); else vShape.OlePropertySet("Width",uWidth); } else { // 不按比例缩放 vShape.OlePropertySet("LockAspectRatio",0); // msoFalse vShape.OlePropertySet("Height",uHeight); vShape.OlePropertySet("Width",uWidth); } } else return false; return true;}