c# - 如何对 Windows API 常量进行分组

标签 c# winapi constants

定义 Windows API const 值时,将它们作为 const 是否更好

public const int SW_HIDE = 0;
public const int SW_SHOWNORMAL = 1;
public const int SW_NORMAL = 1;
public const int SW_SHOWMINIMIZED = 2;
public const int SW_SHOWMAXIMIZED = 3;
public const int SW_MAXIMIZE = 3;
public const int SW_SHOWNOACTIVATE = 4;
public const int SW_SHOW = 5;
public const int SW_MINIMIZE = 6;
public const int SW_SHOWMINNOACTIVE = 7;
public const int SW_SHOWNA = 8;
public const int SW_RESTORE = 9;
public const int SW_SHOWDEFAULT = 10;
public const int SW_MAX = 10;

[DllImport( "user32.dll" )]
public static extern bool ShowWindow( HandleRef hWnd, int nCmdShow );

或将它们组合在一起作为一个枚举。

public enum SW {
  SW_HIDE = 0,
  SW_SHOWNORMAL = 1,
  SW_NORMAL = 1,
  SW_SHOWMINIMIZED = 2,
  SW_SHOWMAXIMIZED = 3,
  SW_MAXIMIZE = 3,
  SW_SHOWNOACTIVATE = 4,
  SW_SHOW = 5,
  SW_MINIMIZE = 6,
  SW_SHOWMINNOACTIVE = 7,
  SW_SHOWNA = 8,
  SW_RESTORE = 9,
  SW_SHOWDEFAULT = 10,
  SW_MAX = 10
}

[DllImport( "user32.dll" )]
public static extern bool ShowWindow( HandleRef hWnd, SW nCmdShow );

最佳答案

将它们分组为枚举。

为什么?整数在所有地方都被使用,你可以在需要大小的地方传递它们。这首先导致了 frickin 匈牙利符号 (szSomething..)。缺少类型系统,他们试图使用变量命名方案来“修复”它。有了更好的类型系统,你现在过得更好了;使用它。

定义枚举,以合理的方式对它们进行分组,总有一天你不会 Thread.Sleep(WM_User)(是的,我对这个例子不是很认真,但我想你明白了)。

关于c# - 如何对 Windows API 常量进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2365014/

相关文章:

c# - 根据字符串位置对字符串数组进行排序 (C#)

c# - If Condition inside 开关盒

c# - Windows 服务中的 SQL 连接

c++ - DISK PERFORMANCE 结构的 Read Time 和 WriteTime 成员

c++ - 如何仅 Hook Windows API 上的键盘焦点

c# - 如何使下拉菜单仅具有一个值

winapi - "Repair"网络连接以编程方式/从命令行

c# - 这怎么可能不是一个常数值呢?

C++:对临时的常量引用

java - 字符数组与字符串 : which is better for storing a set of letters