ReactOS 0.4.15-dev-7942-gd23573b
registry.c
Go to the documentation of this file.
1/*
2 * Wordpad implementation - Registry functions
3 *
4 * Copyright 2007 by Alexander N. Sørnes <alex@thehandofagony.com>
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#define WIN32_NO_STATUS
22#define WIN32_LEAN_AND_MEAN
23#include <windows.h>
24#include <shlobj.h>
25#include <richedit.h>
26
27#include "wordpad.h"
28
29static const WCHAR key_recentfiles[] = {'R','e','c','e','n','t',' ','f','i','l','e',
30 ' ','l','i','s','t',0};
31static const WCHAR key_options[] = {'O','p','t','i','o','n','s',0};
32static const WCHAR key_settings[] = {'S','e','t','t','i','n','g','s',0};
33static const WCHAR key_rtf[] = {'R','T','F',0};
34static const WCHAR key_text[] = {'T','e','x','t',0};
35
36static const WCHAR var_file[] = {'F','i','l','e','%','d',0};
37static const WCHAR var_framerect[] = {'F','r','a','m','e','R','e','c','t',0};
38static const WCHAR var_barstate0[] = {'B','a','r','S','t','a','t','e','0',0};
39static const WCHAR var_wrap[] = {'W','r','a','p',0};
40static const WCHAR var_maximized[] = {'M','a','x','i','m','i','z','e','d',0};
41
43{
44 LONG ret;
45 static const WCHAR wszProgramKey[] = {'S','o','f','t','w','a','r','e','\\',
46 'M','i','c','r','o','s','o','f','t','\\',
47 'W','i','n','d','o','w','s','\\',
48 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
49 'A','p','p','l','e','t','s','\\',
50 'W','o','r','d','p','a','d',0};
51 LPWSTR key = (LPWSTR)wszProgramKey;
52
53 if(subKey)
54 {
55 WCHAR backslash[] = {'\\',0};
57 (lstrlenW(wszProgramKey)+lstrlenW(subKey)+lstrlenW(backslash)+1)
58 *sizeof(WCHAR));
59
60 if(!key)
61 return 1;
62
63 lstrcpyW(key, wszProgramKey);
64 lstrcatW(key, backslash);
65 lstrcatW(key, subKey);
66 }
67
68 if(action)
69 {
72 } else
73 {
75 }
76
77 if(subKey)
79
80 return ret;
81}
82
84{
85 HKEY hKey = 0;
87
89 {
91 DWORD isMaximized;
92
93 wp.length = sizeof(WINDOWPLACEMENT);
95 isMaximized = (wp.showCmd == SW_SHOWMAXIMIZED);
96
98 RegSetValueExW(hKey, var_maximized, 0, REG_DWORD, (LPBYTE)&isMaximized, sizeof(DWORD));
99
102 }
103
105 {
108 }
109}
110
112{
113 HKEY hKey = 0;
114 DWORD size = sizeof(RECT);
115
118 ERROR_SUCCESS || size != sizeof(RECT))
119 SetRect(rc, 0, 0, 600, 300);
120
122}
123
125{
126 HKEY hKey = 0;
127 DWORD size = sizeof(DWORD);
128
130 RegQueryValueExW(hKey, var_maximized, 0, NULL, (LPBYTE)bMaximized, &size) !=
131 ERROR_SUCCESS || size != sizeof(DWORD))
132 {
133 *bMaximized = FALSE;
134 }
135
137}
138
139static void truncate_path(LPWSTR file, LPWSTR out, LPWSTR pos1, LPWSTR pos2)
140{
141 static const WCHAR dots[] = {'.','.','.',0};
142
143 *++pos1 = 0;
144
145 lstrcatW(out, file);
146 lstrcatW(out, dots);
147 lstrcatW(out, pos2);
148}
149
151{
152 LPWSTR pos_basename;
153 LPWSTR truncpos1, truncpos2;
154 WCHAR myDocs[MAX_PATH];
155
157 pos_basename = file_basename(file);
158 truncpos1 = NULL;
159 truncpos2 = NULL;
160
161 *(pos_basename-1) = 0;
162 if(!lstrcmpiW(file, myDocs) || (lstrlenW(pos_basename) > FILELIST_ENTRY_LENGTH))
163 {
164 truncpos1 = pos_basename;
165 *(pos_basename-1) = '\\';
166 } else
167 {
168 LPWSTR pos;
169 BOOL morespace = FALSE;
170
171 *(pos_basename-1) = '\\';
172
173 for(pos = file; pos < pos_basename; pos++)
174 {
175 if(*pos == '\\' || *pos == '/')
176 {
177 if(truncpos1)
178 {
179 if((pos - file + lstrlenW(pos_basename)) > FILELIST_ENTRY_LENGTH)
180 break;
181
182 truncpos1 = pos;
183 morespace = TRUE;
184 break;
185 }
186
187 if((pos - file + lstrlenW(pos_basename)) > FILELIST_ENTRY_LENGTH)
188 break;
189
190 truncpos1 = pos;
191 }
192 }
193
194 if(morespace)
195 {
196 for(pos = pos_basename; pos >= truncpos1; pos--)
197 {
198 if(*pos == '\\' || *pos == '/')
199 {
200 if((truncpos1 - file + lstrlenW(pos_basename) + pos_basename - pos) > FILELIST_ENTRY_LENGTH)
201 break;
202
203 truncpos2 = pos;
204 }
205 }
206 }
207 }
208
209 if(truncpos1 == pos_basename)
210 lstrcatW(out, pos_basename);
211 else if(truncpos1 == truncpos2 || !truncpos2)
212 lstrcatW(out, file);
213 else
214 truncate_path(file, out, truncpos1, truncpos2);
215}
216
218{
219 HKEY hFileKey;
220
222 {
223 WCHAR itemText[MAX_PATH+3], buffer[MAX_PATH];
224 /* The menu item name is not the same as the file name, so we need to store
225 the file name here */
226 static WCHAR file1[MAX_PATH], file2[MAX_PATH], file3[MAX_PATH], file4[MAX_PATH];
227 WCHAR numFormat[] = {'&','%','d',' ',0};
228 LPWSTR pFile[] = {file1, file2, file3, file4};
229 DWORD pathSize = MAX_PATH*sizeof(WCHAR);
230 int i;
231 WCHAR key[6];
233 HMENU hMenu = GetMenu(hMainWnd);
234
235 mi.cbSize = sizeof(MENUITEMINFOW);
237 mi.fType = MFT_STRING;
238 mi.dwTypeData = itemText;
239 mi.wID = ID_FILE_RECENT1;
240
242 for(i = 0; i < FILELIST_ENTRIES; i++)
243 {
244 wsprintfW(key, var_file, i+1);
246 if(RegQueryValueExW(hFileKey, (LPWSTR)key, 0, NULL, (LPBYTE)pFile[i], &pathSize)
247 != ERROR_SUCCESS)
248 break;
249
250 mi.dwItemData = (ULONG_PTR)pFile[i];
251 wsprintfW(itemText, numFormat, i+1);
252
254
256
258 mi.wID++;
259 pathSize = MAX_PATH*sizeof(WCHAR);
260 }
261 mi.fType = MFT_SEPARATOR;
262 mi.fMask = MIIM_FTYPE | MIIM_ID;
264
265 RegCloseKey(hFileKey);
266 }
267}
268
270{
271 HKEY hKey;
273
275 {
277 int i;
278 HMENU hMenu = GetMenu(hMainWnd);
280 WCHAR buffer[6];
281
282 mi.cbSize = sizeof(MENUITEMINFOW);
283 mi.fMask = MIIM_DATA;
284
285 for(i = 0; i < FILELIST_ENTRIES; i++)
286 pFiles[i] = NULL;
287
288 for(i = 0; GetMenuItemInfoW(hMenu, ID_FILE_RECENT1+i, FALSE, &mi); i++)
289 pFiles[i] = (LPWSTR)mi.dwItemData;
290
291 if(lstrcmpiW(newFile, pFiles[0]))
292 {
293 for(i = 0; i < FILELIST_ENTRIES && pFiles[i]; i++)
294 {
295 if(!lstrcmpiW(pFiles[i], newFile))
296 {
297 int j;
298 for(j = 0; j < i; j++)
299 {
300 pFiles[i-j] = pFiles[i-j-1];
301 }
302 pFiles[0] = NULL;
303 break;
304 }
305 }
306
307 if(!pFiles[0])
308 {
309 pFiles[0] = newFile;
310 } else
311 {
312 for(i = 0; i < FILELIST_ENTRIES-1; i++)
313 pFiles[FILELIST_ENTRIES-1-i] = pFiles[FILELIST_ENTRIES-2-i];
314
315 pFiles[0] = newFile;
316 }
317
318 for(i = 0; i < FILELIST_ENTRIES && pFiles[i]; i++)
319 {
321 RegSetValueExW(hKey, (LPWSTR)&buffer, 0, REG_SZ, (const BYTE*)pFiles[i],
322 (lstrlenW(pFiles[i])+1)*sizeof(WCHAR));
323 }
324 }
326 }
328}
329
331{
332 return (format & SF_TEXT) ? 1 : 0;
333}
334
336{
337 HKEY hKey;
338
341 else
342 {
345 }
346
349 } else {
352 }
353}
354
356{
357 HKEY hKey;
358 DWORD action = 0;
359 BOOL fetched = FALSE;
360 barState[index] = 0;
361 wordWrap[index] = 0;
362
364 return;
365
367 {
368 DWORD size = sizeof(DWORD);
369
371 &size) == ERROR_SUCCESS)
372 fetched = TRUE;
373 }
374
375 if(!fetched)
376 barState[index] = (1 << BANDID_TOOLBAR) | (1 << BANDID_FORMATBAR) | (1 << BANDID_RULER) | (1 << BANDID_STATUSBAR);
377
378 fetched = FALSE;
380 {
381 DWORD size = sizeof(DWORD);
383 &size) == ERROR_SUCCESS)
384 fetched = TRUE;
385 }
386
387 if (!fetched)
388 {
391 else if(index == reg_formatindex(SF_TEXT))
393 }
394
396}
397
399{
402}
403
405{
406 HKEY hKey;
407 DWORD action = 0;
408
410 {
412 sizeof(DWORD));
414 sizeof(DWORD));
416 }
417}
418
420{
423}
#define index(s, c)
Definition: various.h:29
#define ID_FILE_EXIT
Definition: resource.h:46
void registry_read_previewpages(HKEY hKey)
Definition: print.c:105
void registry_read_pagemargins(HKEY hKey)
Definition: print.c:90
void registry_set_previewpages(HKEY hKey)
Definition: print.c:99
void registry_set_pagemargins(HKEY hKey)
Definition: print.c:85
static const WCHAR var_file[]
Definition: registry.c:36
int reg_formatindex(WPARAM format)
Definition: registry.c:330
void registry_set_filelist(LPCWSTR newFile, HWND hMainWnd)
Definition: registry.c:269
void registry_read_formatopts_all(DWORD barState[], DWORD wordWrap[])
Definition: registry.c:398
static const WCHAR key_recentfiles[]
Definition: registry.c:29
void registry_set_formatopts_all(DWORD barState[], DWORD wordWrap[])
Definition: registry.c:419
static const WCHAR var_wrap[]
Definition: registry.c:39
static const WCHAR var_barstate0[]
Definition: registry.c:38
static const WCHAR var_framerect[]
Definition: registry.c:37
void registry_read_winrect(RECT *rc)
Definition: registry.c:111
void registry_read_maximized(DWORD *bMaximized)
Definition: registry.c:124
static void registry_set_formatopts(int index, LPCWSTR key, DWORD barState[], DWORD wordWrap[])
Definition: registry.c:404
static const WCHAR var_maximized[]
Definition: registry.c:40
static const WCHAR key_text[]
Definition: registry.c:34
void registry_read_options(void)
Definition: registry.c:335
void registry_set_options(HWND hMainWnd)
Definition: registry.c:83
static void registry_read_formatopts(int index, LPCWSTR key, DWORD barState[], DWORD wordWrap[])
Definition: registry.c:355
static void format_filelist_filename(LPWSTR file, LPWSTR out)
Definition: registry.c:150
static LRESULT registry_get_handle(HKEY *hKey, LPDWORD action, LPCWSTR subKey)
Definition: registry.c:42
static const WCHAR key_settings[]
Definition: registry.c:32
void registry_read_filelist(HWND hMainWnd)
Definition: registry.c:217
static const WCHAR key_rtf[]
Definition: registry.c:33
static const WCHAR key_options[]
Definition: registry.c:31
static void truncate_path(LPWSTR file, LPWSTR out, LPWSTR pos1, LPWSTR pos2)
Definition: registry.c:139
static DWORD wordWrap[2]
Definition: wordpad.c:67
static DWORD barState[2]
Definition: wordpad.c:68
LPWSTR file_basename(LPWSTR path)
Definition: wordpad.c:212
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1096
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define MAX_PATH
Definition: compat.h:34
#define HeapFree(x, y, z)
Definition: compat.h:735
#define lstrcpyW
Definition: compat.h:749
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
#define lstrlenW
Definition: compat.h:750
const WCHAR * action
Definition: action.c:7479
HRESULT WINAPI SHGetFolderPathW(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath)
Definition: shellpath.c:2589
#define ULONG_PTR
Definition: config.h:101
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
FxAutoRegKey hKey
MdFileObject pFile
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
GLsizeiptr size
Definition: glext.h:5919
GLuint buffer
Definition: glext.h:5915
GLuint index
Definition: glext.h:6031
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
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 GLint GLint j
Definition: glfuncs.h:250
#define REG_SZ
Definition: layer.c:22
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:194
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
HWND hMainWnd
Definition: magnifier.c:32
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:63
#define REG_BINARY
Definition: nt_native.h:1496
#define KEY_READ
Definition: nt_native.h:1023
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
#define KEY_WRITE
Definition: nt_native.h:1031
#define DWORD
Definition: nt_native.h:44
#define REG_OPENED_EXISTING_KEY
Definition: nt_native.h:1085
long LONG
Definition: pedump.c:60
static FILE * out
Definition: regtests2xml.c:44
#define SF_RTF
Definition: richedit.h:721
#define SF_TEXT
Definition: richedit.h:720
#define REG_DWORD
Definition: sdbapi.c:596
@ SHGFP_TYPE_CURRENT
Definition: shlobj.h:2134
#define CSIDL_PERSONAL
Definition: shlobj.h:2163
RECT rcNormalPosition
Definition: winuser.h:3295
Definition: fci.c:127
Definition: copy.c:22
DWORD cbSize
Definition: winuser.h:3784
unsigned char * LPBYTE
Definition: typedefs.h:53
uint32_t * LPDWORD
Definition: typedefs.h:59
int ret
#define RECT
Definition: precomp.h:26
static MONITORINFO mi
Definition: win.c:7338
LONG_PTR LRESULT
Definition: windef.h:209
UINT_PTR WPARAM
Definition: windef.h:207
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define SW_SHOWMAXIMIZED
Definition: winuser.h:773
#define MF_BYCOMMAND
Definition: winuser.h:202
#define MIIM_STRING
Definition: winuser.h:727
#define MIIM_ID
Definition: winuser.h:722
BOOL WINAPI GetWindowPlacement(_In_ HWND, _Inout_ WINDOWPLACEMENT *)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
#define MIIM_FTYPE
Definition: winuser.h:729
#define MFT_SEPARATOR
Definition: winuser.h:744
BOOL WINAPI RemoveMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
#define MFT_STRING
Definition: winuser.h:746
struct _WINDOWPLACEMENT WINDOWPLACEMENT
#define MIIM_DATA
Definition: winuser.h:726
HMENU WINAPI GetMenu(_In_ HWND)
BOOL WINAPI InsertMenuItemW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
struct tagMENUITEMINFOW MENUITEMINFOW
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define ID_WORDWRAP_NONE
Definition: wordpad.h:110
#define BANDID_FORMATBAR
Definition: wordpad.h:95
#define BANDID_STATUSBAR
Definition: wordpad.h:97
#define BANDID_TOOLBAR
Definition: wordpad.h:94
#define FILELIST_ENTRIES
Definition: wordpad.h:91
#define ID_FILE_RECENT1
Definition: wordpad.h:33
#define ID_FILE_RECENT_SEPARATOR
Definition: wordpad.h:37
#define FILELIST_ENTRY_LENGTH
Definition: wordpad.h:92
#define ID_WORDWRAP_WINDOW
Definition: wordpad.h:111
#define BANDID_RULER
Definition: wordpad.h:96
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
unsigned char BYTE
Definition: xxhash.c:193