代码之家  ›  专栏  ›  技术社区  ›  JDMX

如何对Windows API常量进行分组

  •  7
  • JDMX  · 技术社区  · 15 年前

    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 );
    
    2 回复  |  直到 15 年前
        1
  •  6
  •   Ryan Emerle    9 年前

    将它们分组为枚举。

    为什么?INT在所有地方都使用,您可以在需要大小的地方传递INT。。这首先导致了弗里金匈牙利符号(szSomething…)。类型系统缺乏,他们试图使用变量命名方案“修复”它。你现在有了一个更好的打字系统,生活变得更好了;使用它。

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

        2
  •  5
  •   SLaks    15 年前

    除了代码的可维护性,这一点都不重要。

    enum ; 这允许您在调用函数时使用IntelliSense,并有助于防止错误。
    但是,您应该为枚举指定一个有意义的名称,例如 WindowShowType .