Discussione:
WinApi32 campo hIconSm e hIcon della struct WNDCLASSEX
(troppo vecchio per rispondere)
NERO23
2013-10-22 04:52:45 UTC
Permalink
WNDCLASSEX,

//Step 1: Registrazione della Window Class
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);


In rete ho trovato questa definizione per i campi hIcon ed hIconSm:

hIcon - L'icona della nostra classe.
hIconSm - Handle di una icona piccola associata alla classe.

Qualcuno potrebbe spiegarmi meglio a quale icona si riferisce?
Ho fatto una prova sul campo hIconSm e ho notato che corrisponde
all'icona che viene visualizzata sulla barra della finestra.
Ho provato a cambiare icona anche sul campo hIcon, ma non noto nessuana
differenza...


Ciao
Kan
2013-10-23 12:23:00 UTC
Permalink
Post by NERO23
WNDCLASSEX,
//Step 1: Registrazione della Window Class
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
hIcon - L'icona della nostra classe.
hIconSm - Handle di una icona piccola associata alla classe.
Qualcuno potrebbe spiegarmi meglio a quale icona si riferisce?
Ho fatto una prova sul campo hIconSm e ho notato che corrisponde
all'icona che viene visualizzata sulla barra della finestra.
Ho provato a cambiare icona anche sul campo hIcon, ma non noto nessuana
differenza...
Ciao
Da MSDN:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633577%28v=vs.85%29.aspx

hIcon
Handle to the class icon. This member must be a handle to an icon
resource. If this member is NULL, the system provides a default icon.

hIconSm
Handle to a small icon that is associated with the window class. If this
member is NULL, the system searches the icon resource specified by the
hIcon member for an icon of the appropriate size to use as the small icon.

L'icona piccola sarebbe quella di dimensione 16x16.
Da quello che dice MSDN, quando Windows deve visualizzare l'icona
piccola (es. quella in alto a sinistra nel titolo della finestra),
utilizza quella definita in hIconSm. Se è NULL, utilizza quella definita
in hIcon se quest'ultima contiene un'icona della dimensione 16x16 (le
icone possono contenere più immagini di dimensioni diverse, tipicamente
16x16, 24x24, 32x32, ecc..., e di numero di colori diversi).

P.S.:
invece di:
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
sarebbe più corretto scrivere:
wc.hbrBackground = (HBRUSH)(COLOR_WINDOWFRAME);
o meglio ancora se si tratta di C++ e non di C:
wc.hbrBackground = reinterpret_cast<HBRUSH>(COLOR_WINDOWFRAME);
NERO23
2013-10-24 12:46:36 UTC
Permalink
Post by Kan
L'icona piccola sarebbe quella di dimensione 16x16.
Da quello che dice MSDN, quando Windows deve visualizzare l'icona
piccola (es. quella in alto a sinistra nel titolo della finestra),
utilizza quella definita in hIconSm. Se è NULL, utilizza quella definita
in hIcon se quest'ultima contiene un'icona della dimensione 16x16 (le
icone possono contenere più immagini di dimensioni diverse, tipicamente
16x16, 24x24, 32x32, ecc..., e di numero di colori diversi).
Ok grazie. sono riuscito a trovare un sito dove spiegava questo.


Ciao

Loading...