, WinForms, , " / ". , [], !
, . SetClassLong[Ptr] GCL_HICON/GCL_HICONSM, , WNDCLASSEX . .
, , . , WM_SETICON, ICON_BIG ICON_SMALL wParam lParam. , , WinForms. , , , "default" WinForms, WinForms WM_SETICON, . , " " WinForms , , . - "default" - , Win32.
Form.Icon WM_SETICON , , . , Icon,
, " ", Form.Icon . P/Invoke .
, Icon. (HICON), , P/Invoke. , , Icon.FromHandle, Icon HICON. Icon Icon.
. P/Invoke, :
const int WM_SETICON = 0x80;
enum IconType
{
ICON_BIG = 1;
ICON_SMALL = 0;
}
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd,
int message,
IntPtr wParam,
IntPtr lParam);
, :
IntPtr hIcon32x32 = ...;
IntPtr hIcon16x16 = ...;
SendMessage(this.Handle, WM_SETICON, (IntPtr)IconType.ICON_BIG, hIcon32x32);
SendMessage(this.Handle, WM_SETICON, (IntPtr)IconType.ICON_SMALL, hIcon16x16);
, : , "" 32x32 , "" 16x16 . , , . , . . , . .ico; , 48x48. , Windows downsample, - , 32x32 .
, GetSystemMetrics. SM_CXICON SM_CYICON X Y "". SM_CXSMICON SM_CYSMICON X Y "".
const int SM_CXICON = 11;
const int SM_CYICON = 12;
const int SM_CXSMICON = 49;
const int SM_CYSMICON = 50;
[DllImport("user32.dll")]
static extern int GetSystemMetrics(int smIndex);
static Size GetBigIconSize()
{
int x = GetSystemMetrics(SM_CXICON);
int y = GetSystemMetrics(SM_CYICON);
return Size(x, y);
}
static Size GetSmallIconSize()
{
int x = GetSystemMetrics(SM_CXSMICON);
int y = GetSystemMetrics(SM_CYSMICON);
return Size(x, y);
}