Как сгруппировать константы Windows API - PullRequest
7 голосов
/ 02 марта 2010

При определении константных значений Windows API лучше иметь их как 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 );

Ответы [ 2 ]

6 голосов
/ 02 марта 2010

Группируйте их как перечисления.

Почему? Интты используются повсеместно, и вы можете передавать их там, где, например, необходим размер. Это привело к чертовой венгерской записи (szSomething ..) в первую очередь. Система типов отсутствовала, и они пытались «исправить» ее, используя схему именования переменных. Теперь вам лучше, с лучшей системой типов; используйте это.

Определите перечисления, сгруппируйте их разумным способом, и вы не будете когда-нибудь Thread.Sleep (WM_User) (Да, я не совсем серьезно отношусь к этому примеру, но я думаю, вы поняли)

5 голосов
/ 02 марта 2010

За исключением удобства сопровождения кода, это не имеет значения.

Я рекомендую использовать enum; это позволяет использовать IntelliSense при вызове функции и может помочь предотвратить ошибки.
Тем не менее, вы должны дать своему перечислению значимое имя, такое как WindowShowType.
Кроме того, вы можете удалить префиксы и, возможно, стандартизировать имена для CamelCase.

...