ReactOS 0.4.15-dev-6680-g8c76870
main.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: PAINT for ReactOS
3 * LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
4 * PURPOSE: Initializing everything
5 * COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
6 */
7
8#include "precomp.h"
9
10#include <mapi.h>
11#include <mapicode.h>
12
14BOOL g_askBeforeEnlarging = FALSE; // TODO: initialize from registry
21
23
24/* FUNCTIONS ********************************************************/
25
26// get file name extension from filter string
27static BOOL
29{
30 LPTSTR pchExt = pExt;
31 *pchExt = 0;
32
33 DWORD nIndex = 1;
34 for (LPCTSTR pch = pOFN->lpstrFilter; *pch; ++nIndex)
35 {
36 pch += lstrlen(pch) + 1;
37 if (pOFN->nFilterIndex == nIndex)
38 {
39 for (++pch; *pch && *pch != _T(';'); ++pch)
40 {
41 *pchExt++ = *pch;
42 }
43 *pchExt = 0;
44 CharLower(pExt);
45 return TRUE;
46 }
47 pch += lstrlen(pch) + 1;
48 }
49 return FALSE;
50}
51
52// Hook procedure for OPENFILENAME to change the file name extension
53static UINT_PTR APIENTRY
55{
56 HWND hParent;
57 OFNOTIFY *pon;
58 switch (uMsg)
59 {
60 case WM_NOTIFY:
61 pon = (OFNOTIFY *)lParam;
62 if (pon->hdr.code == CDN_TYPECHANGE)
63 {
64 hParent = GetParent(hwnd);
70 }
71 break;
72 }
73 return 0;
74}
75
78
80{
81 // Delete the temporary file if any
82 if (g_szMailTempFile[0])
83 {
86 }
87
88 CStringW strFileTitle;
89 if (PathFileExistsW(pszPathName) && imageModel.IsImageSaved())
90 {
91 strFileTitle = PathFindFileNameW(pszPathName);
92 }
93 else // Not existing or not saved
94 {
95 // Get the name of a temporary file
96 WCHAR szTempDir[MAX_PATH];
97 ::GetTempPathW(_countof(szTempDir), szTempDir);
98 if (!::GetTempFileNameW(szTempDir, L"afx", 0, g_szMailTempFile))
99 return FALSE; // Failure
100
102 {
103 // Set file title
104 strFileTitle = PathFindFileNameW(g_szFileName);
105
106 // Copy to the temporary file
108 {
110 return FALSE; // Failure
111 }
112 }
113 else
114 {
115 // Set file title
116 strFileTitle.LoadString(IDS_DEFAULTFILENAME);
117 strFileTitle += L".png";
118
119 // Save it to the temporary file
120 HBITMAP hbmLocked = imageModel.LockBitmap();
121 BOOL ret = SaveDIBToFile(hbmLocked, g_szMailTempFile, FALSE, Gdiplus::ImageFormatPNG);
122 imageModel.UnlockBitmap(hbmLocked);
123 if (!ret)
124 {
126 return FALSE; // Failure
127 }
128 }
129
130 // Use the temporary file
131 pszPathName = g_szMailTempFile;
132 }
133
134 // Load "mapi32.dll"
135 HINSTANCE hMAPI = LoadLibraryW(L"mapi32.dll");
136 if (!hMAPI)
137 return FALSE; // Failure
138
139 // Attachment
140 MapiFileDescW attachmentW = { 0 };
141 attachmentW.nPosition = (ULONG)-1;
142 attachmentW.lpszPathName = (LPWSTR)pszPathName;
143 attachmentW.lpszFileName = (LPWSTR)(LPCWSTR)strFileTitle;
144
145 // Message with attachment
146 MapiMessageW messageW = { 0 };
147 messageW.lpszSubject = NULL;
148 messageW.nFileCount = 1;
149 messageW.lpFiles = &attachmentW;
150
151 // First, try to open the mailer by the function of Unicode version
152 FN_MAPISendMailW pMAPISendMailW = (FN_MAPISendMailW)::GetProcAddress(hMAPI, "MAPISendMailW");
153 if (pMAPISendMailW)
154 {
155 pMAPISendMailW(0, (ULONG_PTR)hWnd, &messageW, MAPI_DIALOG | MAPI_LOGON_UI, 0);
156 ::FreeLibrary(hMAPI);
157 return TRUE; // MAPISendMailW will show an error message on failure
158 }
159
160 // Convert to ANSI strings
161 CStringA szPathNameA(pszPathName), szFileTitleA(strFileTitle);
162
163 MapiFileDesc attachment = { 0 };
165 attachment.lpszPathName = (LPSTR)(LPCSTR)szPathNameA;
166 attachment.lpszFileName = (LPSTR)(LPCSTR)szFileTitleA;
167
168 MapiMessage message = { 0 };
169 message.lpszSubject = NULL;
170 message.nFileCount = 1;
171 message.lpFiles = &attachment;
172
173 // Try again but in ANSI version
174 FN_MAPISendMail pMAPISendMail = (FN_MAPISendMail)::GetProcAddress(hMAPI, "MAPISendMail");
175 if (pMAPISendMail)
176 {
177 pMAPISendMail(0, (ULONG_PTR)hWnd, &message, MAPI_DIALOG | MAPI_LOGON_UI, 0);
178 ::FreeLibrary(hMAPI);
179 return TRUE; // MAPISendMail will show an error message on failure
180 }
181
182 ::FreeLibrary(hMAPI);
183 return FALSE; // Failure
184}
185
187{
188 static OPENFILENAME ofn = { 0 };
189 static CString strFilter;
190
191 if (ofn.lStructSize == 0)
192 {
193 // The "All Files" item text
194 CString strAllPictureFiles;
195 strAllPictureFiles.LoadString(g_hinstExe, IDS_ALLPICTUREFILES);
196
197 // Get the import filter
198 CSimpleArray<GUID> aguidFileTypesI;
199 CImage::GetImporterFilterString(strFilter, aguidFileTypesI, strAllPictureFiles,
201
202 // Initializing the OPENFILENAME structure for GetOpenFileName
203 ZeroMemory(&ofn, sizeof(ofn));
204 ofn.lStructSize = sizeof(ofn);
207 ofn.lpstrFilter = strFilter;
209 ofn.lpstrDefExt = L"png";
210 }
211
212 ofn.lpstrFile = pszFile;
213 ofn.nMaxFile = cchMaxFile;
214 return ::GetOpenFileName(&ofn);
215}
216
218{
219 static OPENFILENAME sfn = { 0 };
220 static CString strFilter;
221
222 if (sfn.lStructSize == 0)
223 {
224 // Get the export filter
225 CSimpleArray<GUID> aguidFileTypesE;
226 CImage::GetExporterFilterString(strFilter, aguidFileTypesE, NULL,
228
229 // Initializing the OPENFILENAME structure for GetSaveFileName
230 ZeroMemory(&sfn, sizeof(sfn));
231 sfn.lStructSize = sizeof(sfn);
234 sfn.lpstrFilter = strFilter;
237 sfn.lpstrDefExt = L"png";
238
239 LPWSTR pchDotExt = PathFindExtensionW(pszFile);
240 if (*pchDotExt == UNICODE_NULL)
241 {
242 // Choose PNG
243 wcscat(pszFile, L".png");
244 for (INT i = 0; i < aguidFileTypesE.GetSize(); ++i)
245 {
246 if (aguidFileTypesE[i] == Gdiplus::ImageFormatPNG)
247 {
248 sfn.nFilterIndex = i + 1;
249 break;
250 }
251 }
252 }
253 }
254
255 sfn.lpstrFile = pszFile;
256 sfn.nMaxFile = cchMaxFile;
257 return ::GetSaveFileName(&sfn);
258}
259
261{
262 static CHOOSECOLOR choosecolor = { 0 };
263 static COLORREF custColors[16] =
264 {
265 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff,
266 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff
267 };
268
269 if (choosecolor.lStructSize == 0)
270 {
271 // Initializing the CHOOSECOLOR structure for ChooseColor
272 ZeroMemory(&choosecolor, sizeof(choosecolor));
273 choosecolor.lStructSize = sizeof(choosecolor);
274 choosecolor.hwndOwner = m_hWnd;
275 choosecolor.lpCustColors = custColors;
276 }
277
278 choosecolor.Flags = CC_RGBINIT;
279 choosecolor.rgbResult = *prgbColor;
280 if (!::ChooseColor(&choosecolor))
281 return FALSE;
282
283 *prgbColor = choosecolor.rgbResult;
284 return TRUE;
285}
286
288{
290
291 CString strTitle;
293
296}
297
298// entry point
300_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, INT nCmdShow)
301{
302#ifdef _DEBUG
303 // Report any memory leaks on exit
305#endif
306
308
309 // Initialize common controls library
311 iccx.dwSize = sizeof(iccx);
314
315 // Load settings from registry
316 registrySettings.Load(nCmdShow);
317
318 // Create the main window
319 if (!mainWindow.DoCreate())
320 {
321 MessageBox(NULL, TEXT("Failed to create main window."), NULL, MB_ICONERROR);
322 return 1;
323 }
324
325 // Initialize imageModel
326 if (__argc < 2 || !DoLoadImageFile(mainWindow, __targv[1], TRUE))
328
329 // Make the window visible on the screen
331
332 // Load the access keys
334
335 // The message loop
336 MSG msg;
337 while (::GetMessage(&msg, NULL, 0, 0))
338 {
339 if (fontsDialog.IsWindow() && fontsDialog.IsDialogMessage(&msg))
340 continue;
341
343 continue;
344
347 }
348
349 // Unload the access keys
351
352 // Write back settings to registry
354
355 if (g_szMailTempFile[0])
357
358 // Return the value that PostQuitMessage() gave
359 return (INT)msg.wParam;
360}
PRTL_UNICODE_STRING_BUFFER Path
#define msg(x)
Definition: auth_time.c:54
HWND hWnd
Definition: settings.c:17
#define MAX_LONG_PATH
Definition: common.h:16
CFontsDialog fontsDialog
Definition: dialogs.cpp:21
ULONG(WINAPI * FN_MAPISendMail)(LHANDLE, ULONG_PTR, lpMapiMessage, FLAGS, ULONG)
Definition: main.cpp:76
TCHAR g_szFileName[MAX_LONG_PATH]
Definition: main.cpp:16
POINT g_ptEnd
Definition: main.cpp:13
BOOL g_imageSaved
Definition: main.cpp:19
static BOOL FileExtFromFilter(LPTSTR pExt, OPENFILENAME *pOFN)
Definition: main.cpp:28
WCHAR g_szMailTempFile[MAX_LONG_PATH]
Definition: main.cpp:17
BOOL g_askBeforeEnlarging
Definition: main.cpp:14
BOOL g_showGrid
Definition: main.cpp:20
static UINT_PTR APIENTRY OFNHookProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: main.cpp:54
BOOL OpenMailer(HWND hWnd, LPCWSTR pszPathName)
Definition: main.cpp:79
ULONG(WINAPI * FN_MAPISendMailW)(LHANDLE, ULONG_PTR, lpMapiMessageW, FLAGS, ULONG)
Definition: main.cpp:77
CMainWindow mainWindow
Definition: main.cpp:22
BOOL g_isAFile
Definition: main.cpp:18
HINSTANCE g_hinstExe
Definition: main.cpp:15
POINT g_ptStart
Definition: main.cpp:13
#define IDS_DEFAULTFILENAME
Definition: resource.h:189
#define IDS_WINDOWTITLE
Definition: resource.h:184
#define IDS_ALLPICTUREFILES
Definition: resource.h:210
HINSTANCE hInstance
Definition: charmap.c:19
static HRESULT GetImporterFilterString(CSimpleString &strImporters, CSimpleArray< GUID > &aguidFileTypes, LPCTSTR pszAllFilesDescription=NULL, DWORD dwExclude=excludeDefaultLoad, TCHAR chSeparator=TEXT('|'))
Definition: atlimage.h:794
static HRESULT GetExporterFilterString(CSimpleString &strExporters, CSimpleArray< GUID > &aguidFileTypes, LPCTSTR pszAllFilesDescription=NULL, DWORD dwExclude=excludeDefaultSave, TCHAR chSeparator=TEXT('|'))
Definition: atlimage.h:817
@ excludeDefaultLoad
Definition: atlimage.h:702
@ excludeDefaultSave
Definition: atlimage.h:703
int GetSize() const
Definition: atlsimpcoll.h:104
BOOL LoadString(_In_ UINT nID)
Definition: cstringt.h:639
void __cdecl Format(UINT nFormatID,...)
Definition: cstringt.h:818
HWND m_hWnd
Definition: atlwin.h:273
BOOL ShowWindow(int nCmdShow)
Definition: atlwin.h:1333
BOOL GetOpenFileName(IN OUT LPTSTR pszFile, INT cchMaxFile)
Definition: main.cpp:186
BOOL GetSaveFileName(IN OUT LPTSTR pszFile, INT cchMaxFile)
Definition: main.cpp:217
HWND Create()
Definition: gui.cpp:675
BOOL ChooseColor(IN OUT COLORREF *prgbColor)
Definition: main.cpp:260
HWND DoCreate()
Definition: main.cpp:287
HBITMAP LockBitmap()
Definition: history.cpp:288
BOOL IsImageSaved() const
Definition: history.cpp:165
void UnlockBitmap(HBITMAP hbmLocked)
Definition: history.cpp:297
WINDOWPLACEMENT WindowPlacement
Definition: registry.h:29
void Load(INT nCmdShow)
Definition: registry.cpp:92
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
Definition: commctrl.c:893
#define OFN_OVERWRITEPROMPT
Definition: commdlg.h:116
#define CDM_SETCONTROLTEXT
Definition: commdlg.h:47
#define OFN_EXPLORER
Definition: commdlg.h:104
#define OFN_ENABLEHOOK
Definition: commdlg.h:99
#define CC_RGBINIT
Definition: commdlg.h:50
#define OFN_HIDEREADONLY
Definition: commdlg.h:107
#define ChooseColor
Definition: commdlg.h:661
#define CDM_GETFILEPATH
Definition: commdlg.h:44
#define CDN_TYPECHANGE
Definition: commdlg.h:39
#define _CRTDBG_LEAK_CHECK_DF
Definition: crtdbg.h:52
#define _CrtSetDbgFlag(f)
Definition: crtdbg.h:241
#define _CRTDBG_ALLOC_MEM_DF
Definition: crtdbg.h:47
HBITMAP InitializeImage(LPCWSTR name, LPWIN32_FIND_DATAW pFound, BOOL isFile)
Definition: dib.cpp:226
BOOL SaveDIBToFile(HBITMAP hBitmap, LPCWSTR FileName, BOOL fIsMainFile, REFGUID guidFileType)
Definition: dib.cpp:151
HBITMAP DoLoadImageFile(HWND hwnd, LPCWSTR name, BOOL fIsMainFile)
Definition: dib.cpp:252
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define APIENTRY
Definition: api.h:79
#define GetProcAddress(x, y)
Definition: compat.h:753
#define FreeLibrary(x)
Definition: compat.h:748
#define MAX_PATH
Definition: compat.h:34
#define LoadLibraryW(x)
Definition: compat.h:747
static const WCHAR messageW[]
Definition: error.c:33
BOOL WINAPI CopyFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists)
Definition: copy.c:439
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
Definition: delete.c:39
DWORD WINAPI GetTempPathW(IN DWORD count, OUT LPWSTR path)
Definition: path.c:2080
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
Definition: path.c:394
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
Definition: path.c:447
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
Definition: path.c:1777
#define ULONG_PTR
Definition: config.h:101
OPENFILENAMEW sfn
Definition: eventvwr.c:101
UINT WINAPI GetTempFileNameW(IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName)
Definition: filename.c:84
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum attachment
Definition: glext.h:6295
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
TCHAR g_szFileName[MAX_LONG_PATH]
Definition: main.cpp:16
ImageModel imageModel
Definition: history.cpp:11
RegistrySettings registrySettings
Definition: registry.cpp:14
HINSTANCE g_hinstExe
Definition: main.cpp:15
_CRTIMP int __argc
Definition: getargs.c:21
#define _tWinMain
Definition: tchar.h:498
#define __targv
Definition: tchar.h:504
#define TEXT(s)
Definition: k32.h:26
#define MAPI_DIALOG
Definition: mapi.h:177
struct MapiMessageW * lpMapiMessageW
Definition: mapi.h:237
struct MapiMessage * lpMapiMessage
Definition: mapi.h:217
ULONG_PTR LHANDLE
Definition: mapi.h:30
#define MAPI_LOGON_UI
Definition: mapi.h:159
ULONG FLAGS
Definition: mapi.h:36
#define pch(ap)
Definition: match.c:418
HACCEL hAccel
Definition: main.c:47
static HBITMAP
Definition: button.c:44
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
unsigned int UINT
Definition: ndis.h:50
#define UNICODE_NULL
#define L(x)
Definition: ntvdm.h:50
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define WS_EX_ACCEPTFILES
Definition: pedump.c:648
#define ICC_USEREX_CLASSES
Definition: commctrl.h:68
#define ICC_STANDARD_CLASSES
Definition: commctrl.h:73
#define ICC_BAR_CLASSES
Definition: commctrl.h:60
#define WM_NOTIFY
Definition: richedit.h:61
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define PathFindExtension
Definition: shlwapi.h:907
#define PathFindFileName
Definition: shlwapi.h:911
OPENFILENAME ofn
Definition: sndrec32.cpp:56
#define _countof(array)
Definition: sndvol32.h:68
ULONG nPosition
Definition: mapi.h:54
PWSTR lpszPathName
Definition: mapi.h:55
PWSTR lpszFileName
Definition: mapi.h:56
ULONG nPosition
Definition: mapi.h:44
NMHDR hdr
Definition: commdlg.h:406
LPOPENFILENAMEA lpOFN
Definition: commdlg.h:407
RECT rcNormalPosition
Definition: winuser.h:3285
Definition: tftpd.h:60
COLORREF rgbResult
Definition: commdlg.h:242
HWND hwndOwner
Definition: commdlg.h:240
COLORREF * lpCustColors
Definition: commdlg.h:243
DWORD lStructSize
Definition: commdlg.h:239
UINT code
Definition: winuser.h:3149
LPCSTR lpstrDefExt
Definition: commdlg.h:345
DWORD nFilterIndex
Definition: commdlg.h:335
HWND hwndOwner
Definition: commdlg.h:330
HINSTANCE hInstance
Definition: commdlg.h:331
LPSTR lpstrFile
Definition: commdlg.h:336
DWORD Flags
Definition: commdlg.h:342
DWORD lStructSize
Definition: commdlg.h:329
LPCSTR lpstrFilter
Definition: commdlg.h:332
DWORD nMaxFile
Definition: commdlg.h:337
HINSTANCE hInstance
Definition: commdlg.h:362
HWND hwndOwner
Definition: commdlg.h:361
DWORD Flags
Definition: commdlg.h:373
LPWSTR lpstrFile
Definition: commdlg.h:367
LPOFNHOOKPROC lpfnHook
Definition: commdlg.h:378
LPCWSTR lpstrDefExt
Definition: commdlg.h:376
DWORD lStructSize
Definition: commdlg.h:360
DWORD nMaxFile
Definition: commdlg.h:368
LPCWSTR lpstrFilter
Definition: commdlg.h:363
DWORD nFilterIndex
Definition: commdlg.h:366
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
#define _T(x)
Definition: vfdio.h:22
int ret
#define lstrcpyn
Definition: winbase.h:3800
#define ZeroMemory
Definition: winbase.h:1700
#define lstrlen
Definition: winbase.h:3801
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
LONG_PTR LPARAM
Definition: windef.h:208
UINT_PTR WPARAM
Definition: windef.h:207
DWORD COLORREF
Definition: windef.h:300
#define WINAPI
Definition: msvc.h:6
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define CharLower
Definition: winuser.h:5727
#define HWND_DESKTOP
Definition: winuser.h:1199
#define MB_ICONERROR
Definition: winuser.h:781
#define GetMessage
Definition: winuser.h:5780
#define SendMessage
Definition: winuser.h:5833
HWND WINAPI GetParent(_In_ HWND)
#define LoadString
Definition: winuser.h:5809
#define MessageBox
Definition: winuser.h:5812
#define DispatchMessage
Definition: winuser.h:5755
BOOL WINAPI DestroyAcceleratorTable(_In_ HACCEL)
#define TranslateAccelerator
Definition: winuser.h:5850
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define LoadAccelerators
Definition: winuser.h:5800
char TCHAR
Definition: xmlstorage.h:189
const char * LPCSTR
Definition: xmlstorage.h:183
char * LPSTR
Definition: xmlstorage.h:182
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
CHAR * LPTSTR
Definition: xmlstorage.h:192
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185