我的程序必须通过#import指令与另一个程序通信。它会创建一个新文档,并使用默认参数
在其上放置TextFrameHRESULT hr = CoInitialize(NULL);
_ApplicationPtr myApp("InDesign.Application");
DocumentPtr myDoc = myApp->ActiveDocument;
PagePtr myPage = myDoc->Pages->Item[1L];
TextFramePtr myTextFrame = myPage->TextFrames->Add(); // create frame on Page
TextFramePtr myTextFrame_2 = myPage->TextFrames->Item[2L]; // Get second frame on Page;
TextFrame对象具有更改帧大小的方法GeometricBounds。这是我设置帧大小的代码:
double mySize[4] = {12.7, 12.7, 66.7, 83.2};
SAFEARRAY * Bound;
VARIANT Array;
Array.vt = VT_ARRAY | VT_R8;
Bound = SafeArrayCreateVector(VT_R8, 1, 4);
for (int i = 0; i < 4; i++)
{
long index = i + 1;
SafeArrayPutElement(Bound, &index, &mySize[i]);
}
Array.parray = Bound;
myTextFrame->GeometricBounds = Array;
这是我创建的框架,但是如何获得文档中已存在的另一个框架的大小?
属性GeometricBounds As Variant TextFrame的边界,不包括笔触宽度,格式为[y1,x1,y2,x2],它们给出边界框的左上角和右下角的坐标。作为4个单位(双打或字符串)的数组
TLB文件中方法的描述:
Frame : IDispatch
{
// Property data
__declspec(property(get=GetGeometricBounds,put=PutGeometricBounds))
_variant_t GeometricBounds;
...
// Methods:
void PutGeometricBounds (
const _variant_t & _arg1 );
_variant_t GetGeometricBounds ( );
....
}
答案 0 :(得分:0)
访问SAFEARRAY
的元素是一个问题: