ReactOS 0.4.15-dev-7788-g1ad9096
charmap.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Character Map
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/applications/charmap/charmap.c
5 * PURPOSE: main dialog implementation
6 * COPYRIGHT: Copyright 2007 Ged Murphy <gedmurphy@reactos.org>
7 */
8
9#include "precomp.h"
10
11#include <commctrl.h>
12#include <richedit.h>
13#include <winnls.h>
14
15//#define REMOVE_ADVANCED
16
17#define ID_ABOUT 0x1
18
26
27static
28VOID
30{
31 WCHAR szCharSetText[256];
32 LPWSTR trimmedName;
33 CPINFOEXW cpInfo;
34 INT i;
35
36 if (LoadStringW(hInstance, IDS_UNICODE, szCharSetText, SIZEOF(szCharSetText)))
37 {
38 SendMessageW(hwndCombo,
40 0,
41 (LPARAM)szCharSetText);
42 }
43
44 for (i = 0; i < SIZEOF(codePages); i++)
45 {
46 if (GetCPInfoExW(codePages[i], 0, &cpInfo))
47 {
48 trimmedName = wcschr(cpInfo.CodePageName, L'(');
49 if (!trimmedName)
50 trimmedName = cpInfo.CodePageName;
51
52 SendMessageW(hwndCombo,
54 0,
55 (LPARAM)trimmedName);
56 }
57 }
58
59 SendMessageW(hwndCombo, CB_SETCURSEL, 0, 0);
60}
61
62static
63VOID
65{
66 WCHAR szAllText[256];
67
68 if (LoadStringW(hInstance, IDS_ALL, szAllText, SIZEOF(szAllText)))
69 {
70 SendMessageW(hwndCombo, CB_ADDSTRING, 0, (LPARAM)szAllText);
71 }
72
73 SendMessageW(hwndCombo, CB_SETCURSEL, 0, 0);
74}
75
76/* Font-enumeration callback */
77static
78int
81 NEWTEXTMETRICEXW *lpntme,
82 DWORD FontType,
84{
85 HWND hwndCombo = (HWND)lParam;
86 LPWSTR pszName = lpelfe->elfLogFont.lfFaceName;
87
88 /* Skip rotated font */
89 if(pszName[0] == L'@') return 1;
90
91 /* make sure font doesn't already exist in our list */
92 if(SendMessageW(hwndCombo,
94 0,
95 (LPARAM)pszName) == CB_ERR)
96 {
97 INT idx;
98 BOOL fFixed;
99 BOOL fTrueType;
100
101 /* add the font */
102 idx = (INT)SendMessageW(hwndCombo,
104 0,
105 (LPARAM)pszName);
106
107 /* record the font's attributes (Fixedwidth and Truetype) */
108 fFixed = (lpelfe->elfLogFont.lfPitchAndFamily & FIXED_PITCH) ? TRUE : FALSE;
109 fTrueType = (lpelfe->elfLogFont.lfOutPrecision == OUT_STROKE_PRECIS) ? TRUE : FALSE;
110
111 /* store this information in the list-item's userdata area */
112 SendMessageW(hwndCombo,
114 idx,
115 MAKEWPARAM(fFixed, fTrueType));
116 }
117
118 return 1;
119}
120
121
122/* Initialize the font-list by enumeration all system fonts */
123static
124VOID
126{
127 HDC hdc;
128 LOGFONTW lf;
129
130 /* FIXME: for fun, draw each font in its own style */
132 SendMessageW(hwndCombo,
134 (WPARAM)hFont,
135 0);
136
137 ZeroMemory(&lf, sizeof(lf));
139
140 hdc = GetDC(hwndCombo);
141
142 /* store the list of fonts in the combo */
144 &lf,
146 (LPARAM)hwndCombo,
147 0);
148
149 ReleaseDC(hwndCombo,
150 hdc);
151
152 SendMessageW(hwndCombo,
154 0,
155 0);
156}
157
158
159extern
160VOID
162{
163 HWND hCombo;
164 HWND hMap;
165 LPWSTR lpFontName;
166 INT Len;
167
168 hCombo = GetDlgItem(hDlg, IDC_FONTCOMBO);
169
170 Len = GetWindowTextLengthW(hCombo);
171
172 if (Len != 0)
173 {
174 lpFontName = HeapAlloc(GetProcessHeap(),
175 0,
176 (Len + 1) * sizeof(WCHAR));
177
178 if (lpFontName)
179 {
180 SendMessageW(hCombo,
182 Len + 1,
183 (LPARAM)lpFontName);
184
185 hMap = GetDlgItem(hDlg, IDC_FONTMAP);
186
187 SendMessageW(hMap,
189 0,
190 (LPARAM)lpFontName);
191 }
192
194 0,
195 lpFontName);
196 }
197}
198
199// Copy collected characters into the clipboard
200static
201void
203{
204 HWND hText = GetDlgItem(hDlg, IDC_TEXTBOX);
205 DWORD dwStart, dwEnd;
206
207 // Acquire selection limits
208 SendMessage(hText, EM_GETSEL, (WPARAM)&dwStart, (LPARAM)&dwEnd);
209
210 // Test if the whose text is unselected
211 if(dwStart == dwEnd) {
212
213 // Select the whole text
214 SendMessageW(hText, EM_SETSEL, 0, -1);
215
216 // Copy text
217 SendMessageW(hText, WM_COPY, 0, 0);
218
219 // Restore previous values
220 SendMessageW(hText, EM_SETSEL, (WPARAM)dwStart, (LPARAM)dwEnd);
221
222 } else {
223
224 // Copy text
225 SendMessageW(hText, WM_COPY, 0, 0);
226 }
227}
228
229// Recover charset for the given font
230static
231BYTE
233{
234 TEXTMETRIC tmFont;
235 HGDIOBJ hOldObj;
236 HDC hDC;
237
238 hDC = GetDC(hWnd);
239 hOldObj = SelectObject(hDC, hFont);
240 GetTextMetrics(hDC, &tmFont);
241 SelectObject(hDC, hOldObj);
243
244 return tmFont.tmCharSet;
245}
246
247// Select a new character
248static
249VOID
251{
252 HWND hMap = GetDlgItem(hDlg, IDC_FONTMAP);
253 HWND hText = GetDlgItem(hDlg, IDC_TEXTBOX);
254 HFONT hFont;
255 LOGFONT lFont;
256 CHARFORMAT cf;
257
258 // Retrieve current character selected
259 if (ch == 0)
260 {
261 ch = (WCHAR) SendMessageW(hMap, FM_GETCHAR, 0, 0);
262 if (!ch)
263 return;
264 }
265
266 // Retrieve current selected font
267 hFont = (HFONT)SendMessage(hMap, FM_GETHFONT, 0, 0);
268
269 // Recover LOGFONT structure from hFont
270 if (!GetObject(hFont, sizeof(LOGFONT), &lFont))
271 return;
272
273 // Recover font properties of Richedit control
274 ZeroMemory(&cf, sizeof(cf));
275 cf.cbSize = sizeof(cf);
277
278 // Apply properties of the new font
279 cf.bCharSet = GetFontMetrics(hText, hFont);
280
281 // Update font name
282 wcscpy(cf.szFaceName, lFont.lfFaceName);
283
284 // Update font properties
286
287 // Send selected character to Richedit
288 SendMessage(hText, WM_CHAR, (WPARAM)ch, 0);
289}
290
291#ifndef REMOVE_ADVANCED
292static
293void
295{
296 if (hDlg == hCharmapDlg)
297 {
298 Settings.IsAdvancedView =
300
301 }
302
303 if (hDlg == hAdvancedDlg)
304 {
305 }
306}
307#endif
308
309VOID
311{
313 WCHAR szDesc[MAX_PATH];
314
315 GetUName(wch, szDesc);
316 wsprintfW(buff, L"U+%04X: %s", wch, szDesc);
318}
319
320static
321void
323{
324 RECT rcCharmap;
325#ifndef REMOVE_ADVANCED
326 RECT rcAdvanced;
327#else
328 RECT rcCopy;
329#endif
330 RECT rcPanelExt;
331 RECT rcPanelInt;
332 RECT rcStatus;
333 UINT DeX, DeY;
334 LONG xPos, yPos;
336 UINT DeskTopWidth, DeskTopHeight;
337#ifdef REMOVE_ADVANCED
338 HWND hCopy;
339#endif
340
341 GetClientRect(hCharmapDlg, &rcCharmap);
342#ifndef REMOVE_ADVANCED
343 GetClientRect(hAdvancedDlg, &rcAdvanced);
344#else
346 GetClientRect(hCopy, &rcCopy);
347#endif
348 GetWindowRect(hWnd, &rcPanelExt);
349 GetClientRect(hWnd, &rcPanelInt);
350 GetClientRect(hStatusWnd, &rcStatus);
351
352 DeskTopWidth = GetSystemMetrics(SM_CXFULLSCREEN);
353 DeskTopHeight = GetSystemMetrics(SM_CYFULLSCREEN);
354
355 DeX = (rcPanelExt.right - rcPanelExt.left) - rcPanelInt.right;
356 DeY = (rcPanelExt.bottom - rcPanelExt.top) - rcPanelInt.bottom;
357
358 MoveWindow(hCharmapDlg, 0, 0, rcCharmap.right, rcCharmap.bottom, FALSE);
359#ifndef REMOVE_ADVANCED
360 MoveWindow(hAdvancedDlg, 0, rcCharmap.bottom, rcAdvanced.right, rcAdvanced.bottom, FALSE);
361 ShowWindow(hAdvancedDlg, (Settings.IsAdvancedView) ? SW_SHOW : SW_HIDE);
362#endif
363 xPos = rcPanelExt.left;
364 yPos = rcPanelExt.top;
365
366 Width = DeX + rcCharmap.right;
367 Height = DeY + rcCharmap.bottom + rcStatus.bottom;
368#ifndef REMOVE_ADVANCED
369 if (Settings.IsAdvancedView)
370 Height += rcAdvanced.bottom;
371#else
372 /* The lack of advanced button leaves an empty gap at the bottom of the window.
373 Shrink the window height a bit here to accomodate for that lost control. */
374 Height = rcCharmap.bottom + rcCopy.bottom + 10;
375#endif
376 // FIXME: This fails on multi monitor setups
377 if ((xPos + Width) > DeskTopWidth)
378 xPos = DeskTopWidth - Width;
379
380 if ((yPos + Height) > DeskTopHeight)
381 yPos = DeskTopHeight - Height;
382
384 xPos, yPos,
385 Width, Height,
386 TRUE);
387}
388
389static
396{
397 switch(Message)
398 {
399 case WM_INITDIALOG:
400 {
401 DWORD evMask;
402#ifdef REMOVE_ADVANCED
403 HWND hAdv;
404#endif
405
408
409 ChangeMapFont(hDlg);
410
411 // Configure Richedit control for sending notification changes.
412 evMask = SendDlgItemMessage(hDlg, IDC_TEXTBOX, EM_GETEVENTMASK, 0, 0);
413 evMask |= ENM_CHANGE;
415#ifdef REMOVE_ADVANCED
416 hAdv = GetDlgItem(hDlg, IDC_CHECK_ADVANCED);
417 ShowWindow(hAdv, SW_HIDE);
418#endif
419 return TRUE;
420 }
421
422 case WM_COMMAND:
423 {
424 switch(LOWORD(wParam))
425 {
426 case IDC_FONTMAP:
427 switch (HIWORD(wParam))
428 {
429 case FM_SETCHAR:
431 break;
432 }
433 break;
434
435 case IDC_FONTCOMBO:
437 {
438 ChangeMapFont(hDlg);
439 }
440 break;
441
442 case IDC_SELECT:
443 AddCharToSelection(hDlg, 0);
444 break;
445
446 case IDC_TEXTBOX:
447 switch (HIWORD(wParam)) {
448 case EN_CHANGE:
451 else
453 break;
454 }
455 break;
456
457 case IDC_COPY:
458 CopyCharacters(hDlg);
459 break;
460#ifndef REMOVE_ADVANCED
462 UpdateSettings(hDlg);
463 ChangeView(GetParent(hDlg));
464 break;
465#endif
466 }
467 }
468 break;
469
470 default:
471 break;
472 }
473
474 return FALSE;
475}
476#ifndef REMOVE_ADVANCED
477static
484{
485 switch(Message)
486 {
487 case WM_INITDIALOG:
488 return TRUE;
489
490 case WM_COMMAND:
491 {
492 switch (LOWORD(wParam))
493 {
496 {
499 0, 0);
502 idx, 0);
503
505 }
506 break;
507 }
508 }
509
510 default:
511 return FALSE;
512 }
513
514 return FALSE;
515}
516#endif
517
518static int
520{
521 HMENU hSysMenu;
522 WCHAR lpAboutText[256];
523
526 hWnd,
528
529 // For now, the Help push button is disabled because of lacking of HTML Help support
531
532#ifndef REMOVE_ADVANCED
535 hWnd,
537
539
543#endif
545 NULL,
547 0, 0, 0, 0,
548 hWnd,
550 hInstance,
551 NULL);
552
553 // Set the status bar for multiple parts output
555
557
558 hSysMenu = GetSystemMenu(hWnd, FALSE);
559
560 if (hSysMenu != NULL)
561 {
562 if (LoadStringW(hInstance, IDS_ABOUT, lpAboutText, SIZEOF(lpAboutText)))
563 {
564 AppendMenuW(hSysMenu, MF_SEPARATOR, 0, NULL);
565 AppendMenuW(hSysMenu, MF_STRING, ID_ABOUT, lpAboutText);
566 }
567 }
568
570
571 return 0;
572}
573
574static LRESULT CALLBACK
576{
577 switch (msg) {
578 case WM_CREATE:
580
581 case WM_CLOSE:
583 return 0;
584
585 case WM_SIZE:
587 break;
588
589 case WM_DESTROY:
590 SaveSettings();
592 return 0;
593
594 case WM_SYSCOMMAND:
595 switch(wParam) {
596 case ID_ABOUT:
598 break;
599 }
600 break;
601
602 }
603
605}
606
607static HWND
609{
610 WCHAR szClass[] = L"CharMap";
611 WCHAR szTitle[256];
612 WNDCLASSEXW wc;
613 HWND hWnd;
614
616
620 16,
621 16,
622 0);
623
627 32,
628 32,
629 0);
630
631 // Create workspace
632 ZeroMemory(&wc, sizeof(wc));
633
634 wc.cbSize = sizeof(wc);
636 wc.hInstance = hInst;
637 wc.hIcon = hBgIcon;
640 wc.lpszMenuName = NULL;
641 wc.lpszClassName = szClass;
642 wc.hIconSm = hSmIcon;
643
644 RegisterClassExW(&wc);
645
647 szClass,
648 szTitle,
654 NULL,
655 NULL,
656 hInst,
657 NULL);
658
659 if (hWnd != NULL)
660 {
661 LoadSettings();
664 }
665
666 return hWnd;
667}
668
669INT
670WINAPI
672 HINSTANCE hPrev,
673 LPWSTR Cmd,
674 int iCmd)
675{
677 INT Ret = 1;
678 HMODULE hRichEd20;
679 MSG Msg;
680
682
683 /* Mirroring code for the titlebar */
684 switch (GetUserDefaultUILanguage())
685 {
688 break;
689
690 default:
691 break;
692 }
693
694 iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
695 iccx.dwICC = ICC_TAB_CLASSES;
697
699 {
700 hRichEd20 = LoadLibraryW(L"RICHED20.DLL");
701
702 if (hRichEd20 != NULL)
703 {
705
706 for (;;)
707 {
708 if (GetMessage(&Msg, NULL, 0, 0) <= 0)
709 {
710 Ret = Msg.wParam;
711 break;
712 }
713
714 /* NOTE: CreateDialog needs IsDialogMessage call in message loop */
716 continue;
717#ifndef REMOVE_ADVANCED
719 continue;
720#endif
721
724 }
725
726 FreeLibrary(hRichEd20);
727 }
729 }
730
731 return Ret;
732}
static HDC hDC
Definition: 3dtext.c:33
#define msg(x)
Definition: auth_time.c:54
VOID ShowAboutDlg(HWND hWndParent)
Definition: about.c:77
#define FM_GETHFONT
Definition: precomp.h:25
static const UINT codePages[]
Definition: precomp.h:29
#define FM_SETFONT
Definition: precomp.h:22
void SaveSettings(void)
Definition: settings.c:115
#define FM_GETCHAR
Definition: precomp.h:23
#define FM_SETCHAR
Definition: precomp.h:24
#define FM_SETCHARMAP
Definition: precomp.h:26
void LoadSettings(void)
Definition: settings.c:53
int WINAPI GetUName(IN WORD wCharCode, OUT LPWSTR lpBuf)
Definition: getuname.c:17
#define IDC_FONTMAP
Definition: resource.h:14
#define IDS_TITLE
Definition: resource.h:30
#define IDC_COPY
Definition: resource.h:17
#define IDS_ALL
Definition: resource.h:32
#define IDC_COMBO_GROUPBY
Definition: resource.h:22
#define IDC_FONTCOMBO
Definition: resource.h:12
#define IDC_BUTTON_SEARCH
Definition: resource.h:23
#define IDC_TEXTBOX
Definition: resource.h:15
#define IDI_ICON
Definition: resource.h:5
#define IDC_SELECT
Definition: resource.h:16
#define IDC_CHECK_ADVANCED
Definition: resource.h:26
#define IDS_UNICODE
Definition: resource.h:31
#define IDS_ABOUT
Definition: resource.h:29
#define IDC_COMBO_CHARSET
Definition: resource.h:21
#define IDC_EDIT_UNICODE
Definition: resource.h:25
#define IDD_ADVANCED
Definition: resource.h:10
#define IDC_CMHELP
Definition: resource.h:13
#define IDD_CHARMAP
Definition: resource.h:7
#define IDD_STATUSBAR
Definition: resource.h:9
HWND hWnd
Definition: settings.c:17
HFONT hFont
Definition: main.c:53
#define SIZEOF(_ar)
Definition: calc.h:97
INT WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR Cmd, int iCmd)
Definition: charmap.c:671
static INT_PTR CALLBACK AdvancedDlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
Definition: charmap.c:480
HWND hStatusWnd
Definition: charmap.c:22
HWND hCharmapDlg
Definition: charmap.c:21
static VOID FillFontStyleComboList(HWND hwndCombo)
Definition: charmap.c:125
VOID ChangeMapFont(HWND hDlg)
Definition: charmap.c:161
static BYTE GetFontMetrics(HWND hWnd, HFONT hFont)
Definition: charmap.c:232
static VOID FillGroupByComboList(HWND hwndCombo)
Definition: charmap.c:64
static VOID FillCharacterSetComboList(HWND hwndCombo)
Definition: charmap.c:29
static int CALLBACK EnumFontNames(ENUMLOGFONTEXW *lpelfe, NEWTEXTMETRICEXW *lpntme, DWORD FontType, LPARAM lParam)
Definition: charmap.c:80
HINSTANCE hInstance
Definition: charmap.c:19
static INT_PTR CALLBACK CharMapDlgProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
Definition: charmap.c:392
static int PanelOnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam)
Definition: charmap.c:519
static void CopyCharacters(HWND hDlg)
Definition: charmap.c:202
static LRESULT CALLBACK PanelWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: charmap.c:575
HICON hSmIcon
Definition: charmap.c:23
SETTINGS Settings
Definition: charmap.c:25
static void UpdateSettings(HWND hDlg)
Definition: charmap.c:294
static VOID AddCharToSelection(HWND hDlg, WCHAR ch)
Definition: charmap.c:250
static void ChangeView(HWND hWnd)
Definition: charmap.c:322
#define ID_ABOUT
Definition: charmap.c:17
static HWND InitInstance(HINSTANCE hInst)
Definition: charmap.c:608
HWND hAdvancedDlg
Definition: charmap.c:20
HICON hBgIcon
Definition: charmap.c:24
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
struct @1627 Msg[]
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
Definition: commctrl.c:893
#define Len
Definition: deflate.h:82
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
unsigned int idx
Definition: utils.c:41
#define wcschr
Definition: compat.h:17
#define GetProcessHeap()
Definition: compat.h:736
HANDLE HWND
Definition: compat.h:19
#define HeapAlloc
Definition: compat.h:733
#define FreeLibrary(x)
Definition: compat.h:748
#define MAX_PATH
Definition: compat.h:34
#define HeapFree(x, y, z)
Definition: compat.h:735
#define CALLBACK
Definition: compat.h:35
#define LoadLibraryW(x)
Definition: compat.h:747
BOOL WINAPI GetCPInfoExW(UINT CodePage, DWORD dwFlags, LPCPINFOEXW lpCPInfoEx)
Definition: nls.c:2093
static const WCHAR Message[]
Definition: register.c:74
HINSTANCE hInst
Definition: dxdiag.c:13
static unsigned char buff[32768]
Definition: fatten.c:17
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
LANGID WINAPI GetUserDefaultUILanguage(void)
Definition: lang.c:816
TCHAR szTitle[MAX_LOADSTRING]
Definition: magnifier.c:35
VOID UnregisterMapClasses(HINSTANCE hInstance)
Definition: map.c:875
BOOL RegisterMapClasses(HINSTANCE hInstance)
Definition: map.c:849
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:92
static HICON
Definition: imagelist.c:84
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
unsigned int UINT
Definition: ndis.h:50
#define L(x)
Definition: ntvdm.h:50
#define LOWORD(l)
Definition: pedump.c:82
#define WS_CHILD
Definition: pedump.c:617
#define WS_CAPTION
Definition: pedump.c:624
#define WS_SYSMENU
Definition: pedump.c:629
#define WS_VISIBLE
Definition: pedump.c:620
long LONG
Definition: pedump.c:60
#define WS_MINIMIZEBOX
Definition: pedump.c:631
#define INT
Definition: polytest.cpp:20
#define SB_SIMPLE
Definition: commctrl.h:1958
struct tagINITCOMMONCONTROLSEX INITCOMMONCONTROLSEX
#define ICC_TAB_CLASSES
Definition: commctrl.h:61
#define SB_SETTEXT
Definition: commctrl.h:1949
#define STATUSCLASSNAME
Definition: commctrl.h:1939
#define ENM_CHANGE
Definition: richedit.h:468
#define EM_GETEVENTMASK
Definition: richedit.h:92
#define EM_SETEVENTMASK
Definition: richedit.h:102
#define SCF_SELECTION
Definition: richedit.h:235
#define EM_GETCHARFORMAT
Definition: richedit.h:91
#define EM_SETCHARFORMAT
Definition: richedit.h:101
#define DefWindowProc
Definition: ros2win.h:31
@ Cmd
Definition: sacdrv.h:278
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define MAKELANGID(p, s)
Definition: nls.h:15
#define LANG_HEBREW
Definition: nls.h:67
#define SUBLANG_DEFAULT
Definition: nls.h:168
void UpdateStatusBar(void)
Definition: solitaire.cpp:150
CHAR lfFaceName[LF_FACESIZE]
Definition: dimm.idl:55
BYTE lfCharSet
Definition: dimm.idl:67
LPCWSTR lpszClassName
Definition: winuser.h:3226
LPCWSTR lpszMenuName
Definition: winuser.h:3225
HBRUSH hbrBackground
Definition: winuser.h:3224
WNDPROC lpfnWndProc
Definition: winuser.h:3218
UINT cbSize
Definition: winuser.h:3216
HCURSOR hCursor
Definition: winuser.h:3223
HICON hIconSm
Definition: winuser.h:3227
HINSTANCE hInstance
Definition: winuser.h:3221
HICON hIcon
Definition: winuser.h:3222
WCHAR CodePageName[MAX_PATH]
Definition: winnls.h:599
LOGFONTW elfLogFont
Definition: wingdi.h:2702
BYTE lfOutPrecision
Definition: wingdi.h:1906
WCHAR lfFaceName[LF_FACESIZE]
Definition: wingdi.h:1910
BYTE lfPitchAndFamily
Definition: wingdi.h:1909
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
BYTE tmCharSet
Definition: wingdi.h:2380
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
int32_t INT_PTR
Definition: typedefs.h:64
int32_t INT
Definition: typedefs.h:58
#define HIWORD(l)
Definition: typedefs.h:247
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
Definition: font.h:89
_In_ HFONT _Out_ PUINT Height
Definition: font.h:88
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
Definition: wdfdevice.h:2595
BOOL WINAPI SetProcessDefaultLayout(DWORD dwDefaultLayout)
Definition: window.c:1719
#define ZeroMemory
Definition: winbase.h:1712
LONG_PTR LPARAM
Definition: windef.h:208
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define WINAPI
Definition: msvc.h:6
#define FIXED_PITCH
Definition: wingdi.h:444
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI EnumFontFamiliesExW(_In_ HDC, _In_ PLOGFONTW, _In_ FONTENUMPROCW, _In_ LPARAM, _In_ DWORD)
FARPROC FONTENUMPROCW
Definition: wingdi.h:2897
#define DEFAULT_GUI_FONT
Definition: wingdi.h:909
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
#define OUT_STROKE_PRECIS
Definition: wingdi.h:418
#define DEFAULT_CHARSET
Definition: wingdi.h:384
#define LAYOUT_RTL
Definition: wingdi.h:1371
#define NULL_BRUSH
Definition: wingdi.h:901
#define GetObject
Definition: wingdi.h:4468
#define GetTextMetrics
Definition: wingdi.h:4474
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define CB_SETITEMDATA
Definition: winuser.h:1966
#define MAKEWPARAM(l, h)
Definition: winuser.h:4009
#define SW_HIDE
Definition: winuser.h:768
#define WM_CLOSE
Definition: winuser.h:1621
#define WM_SYSCOMMAND
Definition: winuser.h:1741
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define IsDialogMessage
Definition: winuser.h:5809
#define IMAGE_ICON
Definition: winuser.h:212
#define GetWindowTextLength
Definition: winuser.h:5799
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define WM_CREATE
Definition: winuser.h:1608
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
#define EM_GETSEL
Definition: winuser.h:1997
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define WM_SIZE
Definition: winuser.h:1611
#define WM_COMMAND
Definition: winuser.h:1740
#define MF_STRING
Definition: winuser.h:138
#define CB_ERR
Definition: winuser.h:2435
#define IDC_ARROW
Definition: winuser.h:687
#define CreateDialog
Definition: winuser.h:5749
#define CB_SETCURSEL
Definition: winuser.h:1961
#define WM_GETTEXT
Definition: winuser.h:1618
#define CB_FINDSTRINGEXACT
Definition: winuser.h:1940
#define WM_INITDIALOG
Definition: winuser.h:1739
HMENU WINAPI GetSystemMenu(_In_ HWND, _In_ BOOL)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define SM_CXFULLSCREEN
Definition: winuser.h:977
#define CBN_SELCHANGE
Definition: winuser.h:1979
#define CreateWindow
Definition: winuser.h:5754
#define GetMessage
Definition: winuser.h:5790
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI SetFocus(_In_opt_ HWND)
#define MF_SEPARATOR
Definition: winuser.h:137
#define WM_SETFONT
Definition: winuser.h:1650
#define CB_ADDSTRING
Definition: winuser.h:1936
BOOL WINAPI UpdateWindow(_In_ HWND)
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
#define SendMessage
Definition: winuser.h:5843
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define LoadCursor
Definition: winuser.h:5812
#define SM_CYFULLSCREEN
Definition: winuser.h:978
HDC WINAPI GetDC(_In_opt_ HWND)
#define EM_SETSEL
Definition: winuser.h:2018
int WINAPI GetWindowTextLengthW(_In_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4316
#define WM_CHAR
Definition: winuser.h:1717
#define CW_USEDEFAULT
Definition: winuser.h:225
HWND WINAPI GetParent(_In_ HWND)
#define LoadImage
Definition: winuser.h:5815
#define WM_COPY
Definition: winuser.h:1862
#define SW_SHOW
Definition: winuser.h:775
#define WM_DESTROY
Definition: winuser.h:1609
#define DispatchMessage
Definition: winuser.h:5765
#define CB_GETCURSEL
Definition: winuser.h:1943
#define SendDlgItemMessage
Definition: winuser.h:5842
BOOL WINAPI DestroyWindow(_In_ HWND)
#define MAKEINTRESOURCE
Definition: winuser.h:591
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define BM_GETCHECK
Definition: winuser.h:1918
BOOL WINAPI AppendMenuW(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCWSTR)
#define EN_CHANGE
Definition: winuser.h:2022
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
unsigned char BYTE
Definition: xxhash.c:193