【问题标题】:Paramaters of Functions Imported Using the DllImport Attribute使用 DllImport 属性导入的函数的参数
【发布时间】:2017-07-21 19:11:33
【问题描述】:

我正在尝试将一些 winapi 函数导入我的 wpf 项目(用 c# 编写),但我不知道如何“转换”它们的一些参数,例如函数

BOOL WINAPI GetClientRect(
  _In_  HWND   hWnd,
  _Out_ LPRECT lpRect
);

获取指向 RECT 结构的指针并修改其内容。如果我使用 DllImport 属性导入这个函数,它看起来像:

[DllImport("user32.dll"]
public static extern bool GetClientRect(IntPtr hwnd, ???);

如何处理指向 RECT 对象的指针?

【问题讨论】:

  • 有一个满是pinvoke的网站:pinvoke.net/default.aspx/user32.getclientrect。你试过了吗? RECT 有一个定义。
  • (请注意,有时该站点是错误的 :-) 他们在 32 到 64 位方面存在一些问题)
  • 看起来 pinvoke.net 应该这样做.. 我应该先在这里问一下,然后再搜索自己几个小时,哈哈...
  • 那么你应该更好地使用你的 google-fu... 如果你搜索 GetClientRect pinvoke 那么第一个链接是 pinvoke.net,第三个是链接的 stackoverflow 答案通过 mpiatek

标签: c# c++ wpf


【解决方案1】:
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
    public int Left, Top, Right, Bottom;
}

[DllImport("user32.dll")]
static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect);

【讨论】:

    猜你喜欢
    • 2015-01-16
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2015-05-25
    • 2017-11-13
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多