@@ -147,35 +147,43 @@ static HICON
147
147
CreateTrayIcon (LPTSTR szLCID )
148
148
{
149
149
LANGID LangID ;
150
- TCHAR szBuf [3 ];
150
+ TCHAR szBuf [4 ];
151
151
HDC hdc ;
152
152
HBITMAP hbmColor , hbmMono , hBmpOld ;
153
153
RECT rect ;
154
154
HFONT hFontOld , hFont ;
155
155
ICONINFO IconInfo ;
156
156
HICON hIcon ;
157
157
LOGFONT lf ;
158
+ BITMAPINFO bmi ;
158
159
159
160
/* Getting "EN", "FR", etc. from English, French, ... */
160
- LangID = (LANGID )_tcstoul (szLCID , NULL , 16 );
161
- if (!GetLocaleInfo (LangID , LOCALE_SISO639LANGNAME , szBuf , ARRAYSIZE (szBuf )))
161
+ LangID = LOWORD (_tcstoul (szLCID , NULL , 16 ));
162
+ if (!GetLocaleInfo (LangID , LOCALE_SABBREVLANGNAME | LOCALE_NOUSEROVERRIDE ,
163
+ szBuf , ARRAYSIZE (szBuf )))
162
164
{
163
165
StringCchCopy (szBuf , ARRAYSIZE (szBuf ), _T ("??" ));
164
166
}
165
- CharUpper (szBuf );
167
+ szBuf [2 ] = 0 ; /* Truncate the identifiers to two characters: "ENG" --> "EN" etc. */
168
+
169
+ /* Prepare for DIB (device-independent bitmap) */
170
+ ZeroMemory (& bmi , sizeof (bmi ));
171
+ bmi .bmiHeader .biSize = sizeof (bmi .bmiHeader );
172
+ bmi .bmiHeader .biWidth = CX_ICON ;
173
+ bmi .bmiHeader .biHeight = CY_ICON ;
174
+ bmi .bmiHeader .biPlanes = 1 ;
175
+ bmi .bmiHeader .biBitCount = 24 ;
166
176
167
177
/* Create hdc, hbmColor and hbmMono */
168
178
hdc = CreateCompatibleDC (NULL );
169
- hbmColor = CreateCompatibleBitmap (hdc , CX_ICON , CY_ICON );
179
+ hbmColor = CreateDIBSection (hdc , & bmi , DIB_RGB_COLORS , NULL , NULL , 0 );
170
180
hbmMono = CreateBitmap (CX_ICON , CY_ICON , 1 , 1 , NULL );
171
181
172
182
/* Create a font */
173
- ZeroMemory (& lf , sizeof (lf ));
174
- lf .lfHeight = -11 ;
175
- lf .lfCharSet = ANSI_CHARSET ;
176
- lf .lfWeight = FW_NORMAL ;
177
- StringCchCopy (lf .lfFaceName , ARRAYSIZE (lf .lfFaceName ), _T ("Tahoma" ));
178
- hFont = CreateFontIndirect (& lf );
183
+ if (SystemParametersInfo (SPI_GETICONTITLELOGFONT , sizeof (lf ), & lf , 0 ))
184
+ hFont = CreateFontIndirect (& lf );
185
+ else
186
+ hFont = (HFONT )GetStockObject (DEFAULT_GUI_FONT );
179
187
180
188
/* Checking NULL */
181
189
if (!hdc || !hbmColor || !hbmMono || !hFont )
0 commit comments