但是,Delphi Import进来的MSHTML_TLB中,函数的参数成了 packed record类型。
VC中判断指针参数是否为空,我在Delphi中如何处理。
有谁自定义过浏览器,实现IHTMLPainter接口,帮忙指点一下。
7 个解决方案
#1
How many money?
#2
How much money? 还要钱啊,好啊,给答案公司给 :)
#3
IHTMLEditHost = interface(IUnknown)
['{3050F6A0-98B5-11CF-BB82-00AA00BDCE0B}']
function SnapRect(const pIElement: IHTMLElement; var prcNew: tagRECT; eHandle: _ELEMENT_CORNER): HResult; stdcall;
end;
是否可以这样判断:
if @prcNew = nil then begin
Result := E_POINT;
Exit;
end;
['{3050F6A0-98B5-11CF-BB82-00AA00BDCE0B}']
function SnapRect(const pIElement: IHTMLElement; var prcNew: tagRECT; eHandle: _ELEMENT_CORNER): HResult; stdcall;
end;
是否可以这样判断:
if @prcNew = nil then begin
Result := E_POINT;
Exit;
end;
#4
那个输出参数
传入前先清空fillchar(prcnew,sizeof(tagRECT),0);
然后判断里面参数是否为空就行了
传入前先清空fillchar(prcnew,sizeof(tagRECT),0);
然后判断里面参数是否为空就行了
#5
首先,不知道是否给prcnew 分配了内存,因为var 参数由MSHTML提供,(应该是这样的)。
如果为空,我调用fillchar(prcnew,sizeof(tagRECT),0);是否会出错。
你说,判断里面参数是否为空,是指prcnew里面的变量是否为空,还是@prcnew是否为空?
如果为空,我调用fillchar(prcnew,sizeof(tagRECT),0);是否会出错。
你说,判断里面参数是否为空,是指prcnew里面的变量是否为空,还是@prcnew是否为空?
#6
还是怀疑 Delphi Import TypeLib导入的MSHTML_TLB.pas有问题?谁你给一个明确的答案
这是C++接口
IHTMLEditHost::SnapRect Method Internet Development Index
--------------------------------------------------------------------------------
Called by MSHTML whenever a selected element is resized or moved in the editor.
Syntax
HRESULT SnapRect( IHTMLElement *pIElement,
RECT *prcNew,
ELEMENT_CORNER eHandle
);
这是C++接口
IHTMLEditHost::SnapRect Method Internet Development Index
--------------------------------------------------------------------------------
Called by MSHTML whenever a selected element is resized or moved in the editor.
Syntax
HRESULT SnapRect( IHTMLElement *pIElement,
RECT *prcNew,
ELEMENT_CORNER eHandle
);
#7
prcNew:tagRECT;
这本来就是一个结构体
定义后系统会自动分配内存
RECT *prcNew 这里是为了参数的传出
而在delphi中var已经实现这个功能
这本来就是一个结构体
定义后系统会自动分配内存
RECT *prcNew 这里是为了参数的传出
而在delphi中var已经实现这个功能
#1
How many money?
#2
How much money? 还要钱啊,好啊,给答案公司给 :)
#3
IHTMLEditHost = interface(IUnknown)
['{3050F6A0-98B5-11CF-BB82-00AA00BDCE0B}']
function SnapRect(const pIElement: IHTMLElement; var prcNew: tagRECT; eHandle: _ELEMENT_CORNER): HResult; stdcall;
end;
是否可以这样判断:
if @prcNew = nil then begin
Result := E_POINT;
Exit;
end;
['{3050F6A0-98B5-11CF-BB82-00AA00BDCE0B}']
function SnapRect(const pIElement: IHTMLElement; var prcNew: tagRECT; eHandle: _ELEMENT_CORNER): HResult; stdcall;
end;
是否可以这样判断:
if @prcNew = nil then begin
Result := E_POINT;
Exit;
end;
#4
那个输出参数
传入前先清空fillchar(prcnew,sizeof(tagRECT),0);
然后判断里面参数是否为空就行了
传入前先清空fillchar(prcnew,sizeof(tagRECT),0);
然后判断里面参数是否为空就行了
#5
首先,不知道是否给prcnew 分配了内存,因为var 参数由MSHTML提供,(应该是这样的)。
如果为空,我调用fillchar(prcnew,sizeof(tagRECT),0);是否会出错。
你说,判断里面参数是否为空,是指prcnew里面的变量是否为空,还是@prcnew是否为空?
如果为空,我调用fillchar(prcnew,sizeof(tagRECT),0);是否会出错。
你说,判断里面参数是否为空,是指prcnew里面的变量是否为空,还是@prcnew是否为空?
#6
还是怀疑 Delphi Import TypeLib导入的MSHTML_TLB.pas有问题?谁你给一个明确的答案
这是C++接口
IHTMLEditHost::SnapRect Method Internet Development Index
--------------------------------------------------------------------------------
Called by MSHTML whenever a selected element is resized or moved in the editor.
Syntax
HRESULT SnapRect( IHTMLElement *pIElement,
RECT *prcNew,
ELEMENT_CORNER eHandle
);
这是C++接口
IHTMLEditHost::SnapRect Method Internet Development Index
--------------------------------------------------------------------------------
Called by MSHTML whenever a selected element is resized or moved in the editor.
Syntax
HRESULT SnapRect( IHTMLElement *pIElement,
RECT *prcNew,
ELEMENT_CORNER eHandle
);
#7
prcNew:tagRECT;
这本来就是一个结构体
定义后系统会自动分配内存
RECT *prcNew 这里是为了参数的传出
而在delphi中var已经实现这个功能
这本来就是一个结构体
定义后系统会自动分配内存
RECT *prcNew 这里是为了参数的传出
而在delphi中var已经实现这个功能