ReactOS 0.4.15-dev-6068-g8061a6f
registry.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: PAINT for ReactOS
3 * LICENSE: LGPL
4 * FILE: base/applications/mspaint/registry.cpp
5 * PURPOSE: Offering functions dealing with registry values
6 * PROGRAMMERS: Benedikt Freisen
7 * Katayama Hirofumi MZ
8 */
9
10#include "precomp.h"
11#include <winreg.h>
12#include <wincon.h>
13#include <shlobj.h>
14
16
17/* FUNCTIONS ********************************************************/
18
19static void ReadDWORD(CRegKey &key, LPCTSTR lpName, DWORD &dwValue)
20{
21 DWORD dwTemp;
22 if (key.QueryDWORDValue(lpName, dwTemp) == ERROR_SUCCESS)
23 dwValue = dwTemp;
24}
25
26static void ReadString(CRegKey &key, LPCTSTR lpName, CString &strValue, LPCTSTR lpDefault = TEXT(""))
27{
28 CString strTemp;
29 ULONG nChars = MAX_PATH;
30 LPTSTR psz = strTemp.GetBuffer(nChars);
31 LONG error = key.QueryStringValue(lpName, psz, &nChars);
32 strTemp.ReleaseBuffer();
33
34 if (error == ERROR_SUCCESS)
35 strValue = strTemp;
36 else
37 strValue = lpDefault;
38}
39
41{
42 CRegKey desktop;
43 if (desktop.Open(HKEY_CURRENT_USER, _T("Control Panel\\Desktop")) == ERROR_SUCCESS)
44 {
45 desktop.SetStringValue(_T("Wallpaper"), szFileName);
46
47 desktop.SetStringValue(_T("WallpaperStyle"), (style == RegistrySettings::STRETCHED) ? _T("2") : _T("0"));
48 desktop.SetStringValue(_T("TileWallpaper"), (style == RegistrySettings::TILED) ? _T("1") : _T("0"));
49 }
50
52}
53
55{
58 GridExtent = 1;
59 NoStretching = 0;
60 ShowThumbnail = 0;
61 SnapToGrid = 0;
62 ThumbHeight = 100;
63 ThumbWidth = 120;
64 ThumbXPos = 180;
65 ThumbYPos = 200;
66 UnitSetting = 0;
67 Bold = FALSE;
68 Italic = FALSE;
71 PointSize = 14;
80
81 LOGFONT lf;
82 GetObject(GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);
84
87 rc.left = rc.top = CW_USEDEFAULT;
88 rc.right = rc.left + 544;
89 rc.bottom = rc.top + 375;
90 WindowPlacement.showCmd = nCmdShow;
91}
92
94{
95 LoadPresets(nCmdShow);
96
97 CRegKey paint;
98 if (paint.Open(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint"), KEY_READ) != ERROR_SUCCESS)
99 return;
100
102 if (view.Open(paint, _T("View"), KEY_READ) == ERROR_SUCCESS)
103 {
104 ReadDWORD(view, _T("BMPHeight"), BMPHeight);
105 ReadDWORD(view, _T("BMPWidth"), BMPWidth);
106 ReadDWORD(view, _T("GridExtent"), GridExtent);
107 ReadDWORD(view, _T("NoStretching"), NoStretching);
108 ReadDWORD(view, _T("ShowThumbnail"), ShowThumbnail);
109 ReadDWORD(view, _T("SnapToGrid"), SnapToGrid);
110 ReadDWORD(view, _T("ThumbHeight"), ThumbHeight);
111 ReadDWORD(view, _T("ThumbWidth"), ThumbWidth);
112 ReadDWORD(view, _T("ThumbXPos"), ThumbXPos);
113 ReadDWORD(view, _T("ThumbYPos"), ThumbYPos);
114 ReadDWORD(view, _T("UnitSetting"), UnitSetting);
115 ReadDWORD(view, _T("ShowStatusBar"), ShowStatusBar);
116
117 ULONG pnBytes = sizeof(WINDOWPLACEMENT);
118 view.QueryBinaryValue(_T("WindowPlacement"), &WindowPlacement, &pnBytes);
119 }
120
121 CRegKey files;
122 if (files.Open(paint, _T("Recent File List"), KEY_READ) == ERROR_SUCCESS)
123 {
124 TCHAR szName[64];
125 for (INT i = 0; i < MAX_RECENT_FILES; ++i)
126 {
127 wsprintf(szName, _T("File%u"), i + 1);
128 ReadString(files, szName, strFiles[i]);
129 }
130 }
131
133 if (text.Open(paint, _T("Text"), KEY_READ) == ERROR_SUCCESS)
134 {
135 ReadDWORD(text, _T("Bold"), Bold);
136 ReadDWORD(text, _T("Italic"), Italic);
137 ReadDWORD(text, _T("Underline"), Underline);
138 ReadDWORD(text, _T("CharSet"), CharSet);
139 ReadDWORD(text, _T("PointSize"), PointSize);
140 ReadDWORD(text, _T("PositionX"), FontsPositionX);
141 ReadDWORD(text, _T("PositionY"), FontsPositionY);
142 ReadDWORD(text, _T("ShowTextTool"), ShowTextTool);
143 ReadString(text, _T("TypeFaceName"), strFontName, strFontName);
144 }
145
147 if (bar1.Open(paint, _T("General-Bar1"), KEY_READ) == ERROR_SUCCESS)
148 {
149 ReadDWORD(bar1, _T("BarID"), Bar1ID);
150 }
151
153 if (bar2.Open(paint, _T("General-Bar2"), KEY_READ) == ERROR_SUCCESS)
154 {
155 ReadDWORD(bar2, _T("BarID"), Bar2ID);
156 }
157
158 CRegKey bar3;
159 if (bar3.Open(paint, _T("General-Bar3"), KEY_READ) == ERROR_SUCCESS)
160 {
161 ReadDWORD(bar3, _T("Visible"), ShowToolBox);
162 }
163
164 CRegKey bar4;
165 if (bar4.Open(paint, _T("General-Bar4"), KEY_READ) == ERROR_SUCCESS)
166 {
167 ReadDWORD(bar4, _T("Visible"), ShowPalette);
168 }
169
170 // Fix the bitmap size if too large
171 if (BMPWidth > 5000)
173 if (BMPHeight > 5000)
175}
176
178{
181
182 CRegKey paint;
183 if (paint.Create(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint")) != ERROR_SUCCESS)
184 return;
185
187 if (view.Create(paint, _T("View")) == ERROR_SUCCESS)
188 {
189 view.SetDWORDValue(_T("BMPHeight"), BMPHeight);
190 view.SetDWORDValue(_T("BMPWidth"), BMPWidth);
191 view.SetDWORDValue(_T("GridExtent"), GridExtent);
192 view.SetDWORDValue(_T("NoStretching"), NoStretching);
193 view.SetDWORDValue(_T("ShowThumbnail"), ShowThumbnail);
194 view.SetDWORDValue(_T("SnapToGrid"), SnapToGrid);
195 view.SetDWORDValue(_T("ThumbHeight"), ThumbHeight);
196 view.SetDWORDValue(_T("ThumbWidth"), ThumbWidth);
197 view.SetDWORDValue(_T("ThumbXPos"), ThumbXPos);
198 view.SetDWORDValue(_T("ThumbYPos"), ThumbYPos);
199 view.SetDWORDValue(_T("UnitSetting"), UnitSetting);
200 view.SetDWORDValue(_T("ShowStatusBar"), ShowStatusBar);
201
202 view.SetBinaryValue(_T("WindowPlacement"), &WindowPlacement, sizeof(WINDOWPLACEMENT));
203 }
204
205 CRegKey files;
206 if (files.Create(paint, _T("Recent File List")) == ERROR_SUCCESS)
207 {
208 TCHAR szName[64];
209 for (INT iFile = 0; iFile < MAX_RECENT_FILES; ++iFile)
210 {
211 wsprintf(szName, _T("File%u"), iFile + 1);
213 }
214 }
215
217 if (text.Create(paint, _T("Text")) == ERROR_SUCCESS)
218 {
219 text.SetDWORDValue(_T("Bold"), Bold);
220 text.SetDWORDValue(_T("Italic"), Italic);
221 text.SetDWORDValue(_T("Underline"), Underline);
222 text.SetDWORDValue(_T("CharSet"), CharSet);
223 text.SetDWORDValue(_T("PointSize"), PointSize);
224 text.SetDWORDValue(_T("PositionX"), FontsPositionX);
225 text.SetDWORDValue(_T("PositionY"), FontsPositionY);
226 text.SetDWORDValue(_T("ShowTextTool"), ShowTextTool);
227 text.SetStringValue(_T("TypeFaceName"), strFontName);
228 }
229
231 if (bar1.Create(paint, _T("General-Bar1")) == ERROR_SUCCESS)
232 {
233 bar1.SetDWORDValue(_T("BarID"), Bar1ID);
234 }
235
237 if (bar2.Create(paint, _T("General-Bar2")) == ERROR_SUCCESS)
238 {
239 bar2.SetDWORDValue(_T("BarID"), Bar2ID);
240 }
241
242 CRegKey bar3;
243 if (bar3.Create(paint, _T("General-Bar3")) == ERROR_SUCCESS)
244 {
245 bar3.SetDWORDValue(_T("Visible"), ShowToolBox);
246 }
247
248 CRegKey bar4;
249 if (bar4.Create(paint, _T("General-Bar4")) == ERROR_SUCCESS)
250 {
251 bar4.SetDWORDValue(_T("Visible"), ShowPalette);
252 }
253}
254
256{
257 // Register the file to the user's 'Recent' folder
258 if (szPathName && szPathName[0])
259 SHAddToRecentDocs(SHARD_PATHW, szPathName);
260
261 // If szPathName is present in strFiles, move it to the top of the list
262 for (INT i = MAX_RECENT_FILES - 1, iFound = -1; i > 0; --i)
263 {
264 if (iFound < 0 && strFiles[i].CompareNoCase(szPathName) == 0)
265 iFound = i;
266
267 if (iFound >= 0)
268 {
269 CString tmp = strFiles[i];
270 strFiles[i] = strFiles[i - 1];
271 strFiles[i - 1] = tmp;
272 }
273 }
274
275 // If szPathName is not the first item in strFiles, insert it at the top of the list
276 if (strFiles[0].CompareNoCase(szPathName) != 0)
277 {
278 for (INT i = MAX_RECENT_FILES - 1; i > 0; --i)
279 strFiles[i] = strFiles[i - 1];
280
281 strFiles[0] = szPathName;
282 }
283}
Arabic default style
Definition: afstyles.h:94
RegistrySettings registrySettings
Definition: registry.cpp:15
static void ReadDWORD(CRegKey &key, LPCTSTR lpName, DWORD &dwValue)
Definition: registry.cpp:19
static void ReadString(CRegKey &key, LPCTSTR lpName, CString &strValue, LPCTSTR lpDefault=TEXT(""))
Definition: registry.cpp:26
#define BAR1ID_TOP
Definition: registry.h:51
#define BAR2ID_LEFT
Definition: registry.h:56
#define MAX_RECENT_FILES
Definition: registry.h:11
LONG SetDWORDValue(LPCTSTR pszValueName, DWORD dwValue)
Definition: atlbase.h:1310
LONG Open(HKEY hKeyParent, LPCTSTR lpszKeyName, REGSAM samDesired=KEY_READ|KEY_WRITE)
Definition: atlbase.h:1173
LONG SetStringValue(LPCTSTR pszValueName, LPCTSTR pszValue, DWORD dwType=REG_SZ)
Definition: atlbase.h:1315
LONG Create(HKEY hKeyParent, LPCTSTR lpszKeyName, LPTSTR lpszClass=REG_NONE, DWORD dwOptions=REG_OPTION_NON_VOLATILE, REGSAM samDesired=KEY_READ|KEY_WRITE, LPSECURITY_ATTRIBUTES lpSecAttr=NULL, LPDWORD lpdwDisposition=NULL)
Definition: atlbase.h:1189
void ReleaseBuffer(_In_ int nNewLength=-1)
Definition: atlsimpstr.h:372
int GetWidth() const
Definition: history.cpp:215
int GetHeight() const
Definition: history.cpp:220
DWORD PointSize
Definition: registry.h:35
DWORD UnitSetting
Definition: registry.h:29
DWORD ShowTextTool
Definition: registry.h:42
DWORD ThumbXPos
Definition: registry.h:27
DWORD GridExtent
Definition: registry.h:21
DWORD ShowToolBox
Definition: registry.h:45
DWORD BMPWidth
Definition: registry.h:20
DWORD FontsPositionY
Definition: registry.h:41
DWORD ShowPalette
Definition: registry.h:44
DWORD ThumbYPos
Definition: registry.h:28
static void SetWallpaper(LPCTSTR szFileName, WallpaperStyle style)
Definition: registry.cpp:40
DWORD ThumbWidth
Definition: registry.h:26
void SetMostRecentFile(LPCTSTR szPathName)
Definition: registry.cpp:255
DWORD FontsPositionX
Definition: registry.h:40
CString strFontName
Definition: registry.h:34
DWORD ShowThumbnail
Definition: registry.h:23
DWORD Underline
Definition: registry.h:38
DWORD ShowStatusBar
Definition: registry.h:43
DWORD NoStretching
Definition: registry.h:22
void LoadPresets(INT nCmdShow)
Definition: registry.cpp:54
DWORD SnapToGrid
Definition: registry.h:24
WINDOWPLACEMENT WindowPlacement
Definition: registry.h:30
void Load(INT nCmdShow)
Definition: registry.cpp:93
DWORD BMPHeight
Definition: registry.h:19
DWORD ThumbHeight
Definition: registry.h:25
CString strFiles[MAX_RECENT_FILES]
Definition: registry.h:32
#define ERROR_SUCCESS
Definition: deptool.c:10
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define MAX_PATH
Definition: compat.h:34
const WCHAR * text
Definition: package.c:1799
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
ImageModel imageModel
Definition: history.cpp:11
#define TEXT(s)
Definition: k32.h:26
#define error(str)
Definition: mkdosfs.c:1605
#define KEY_READ
Definition: nt_native.h:1023
long LONG
Definition: pedump.c:60
static const WCHAR szName[]
Definition: powrprof.c:45
void WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv)
Definition: shellord.c:809
#define SHARD_PATHW
Definition: shlobj.h:1103
CHAR lfFaceName[LF_FACESIZE]
Definition: dimm.idl:55
RECT rcNormalPosition
Definition: winuser.h:3285
Definition: copy.c:22
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG
Definition: typedefs.h:59
#define _T(x)
Definition: vfdio.h:22
#define ZeroMemory
Definition: winbase.h:1670
_In_ LPCSTR lpName
Definition: winbase.h:2776
_In_ ULONG_PTR iFile
Definition: winddi.h:3835
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define DEFAULT_GUI_FONT
Definition: wingdi.h:909
#define DEFAULT_CHARSET
Definition: wingdi.h:384
#define GetObject
Definition: wingdi.h:4468
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define SM_CYSCREEN
Definition: winuser.h:954
#define SPI_SETDESKWALLPAPER
Definition: winuser.h:1359
#define SPIF_SENDCHANGE
Definition: winuser.h:1562
#define SPIF_UPDATEINIFILE
Definition: winuser.h:1561
#define wsprintf
Definition: winuser.h:5855
#define CW_USEDEFAULT
Definition: winuser.h:225
#define SM_CXSCREEN
Definition: winuser.h:953
#define SystemParametersInfo
Definition: winuser.h:5848
struct _WINDOWPLACEMENT WINDOWPLACEMENT
int WINAPI GetSystemMetrics(_In_ int)
VOID bar2(IN PLONG BlackHole, IN PLONG BadAddress, IN PLONG Counter)
Definition: xcpt4u.c:3283
VOID bar1(IN NTSTATUS Status, IN PLONG Counter)
Definition: xcpt4u.c:3266
char TCHAR
Definition: xmlstorage.h:189
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
CHAR * LPTSTR
Definition: xmlstorage.h:192