我正在尝试使用 P/Invoke 在 C# 中调用 WinAPI 函数 CalculatePopupWindowPosition。从
http://msdn.microsoft.com/en-us/library/windows/desktop/dd565861(v=vs.85).aspx
我看到它的语法是:
BOOL WINAPI CalculatePopupWindowPosition(
_In_ const POINT *anchorPoint,
_In_ const SIZE *windowSize,
_In_ UINT flags,
_In_opt_ RECT *excludeRect,
_Out_ RECT *popupWindowPosition
);
然后我尝试在 C# 中使用以下代码导入它
[DllImport("User32.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool CalculatePopupWindowPosition
(
[In] ref POINT anchorPoint,
[In] ref SIZE windowSize,
[In] ref UInt32 flags,
[In,Optional] ref RECT excludeRect,
[Out] out SIZE popupWindowPosition
);
我还实现了RECT
,POINT
和SIZE
结构并对其进行了初始化。最后我像这样调用了这个函数。
CalculatePopupWindowPosition(ref nIconPos, ref windowSize, ref flags, ref nIconRect, out windowSize);
这似乎不起作用,windowSize 只包含零,它不应该包含零。有什么想法我在这里做错了吗?