【发布时间】:2012-10-29 13:26:10
【问题描述】:
我是 Windows 桌面编程的新手(或者至少我从 Windows 3.0 开始就没有做过)。我已经安装了 VS 2012 Express for Desktop。我创建并运行了一个基于表单的默认项目。现在我想添加一个带有以下行的 Windows API per pinvoke.net:
[DllImport("user32.dll")]
static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags);
我收到此代码的两个错误:
- 修饰符“extern”对此项无效(在属性的右方括号上)
- 预期的类、委托、枚举、接口或结构(在
bool上)
我做错了什么?
【问题讨论】:
-
你在哪里指定的?它应该放在类定义中。
-
@CodeCaster -- 啊,呃,就是这样,谢谢。我没有把它放在课堂上。当然,在类中它可以工作。
-
这不适用于 Winforms 应用程序。而是使用 Form.TransparencyKey 和 Opacity 属性,您将免费获得对 SetLayeredWindowAttributes() 的内部调用。将 Region 属性用于形状。
-
@HansPassant -- 好吧,考虑到所有较新的类,挂钩这些 Windows API 确实感觉很奇怪。我猜如果我最终使用 WPF 来做类似的包装器使用 WPF?
标签: c# windows pinvoke dllimport