[APPLICATIONS] Improve the FILE header section. Brought to you by Adam Stachowicz...
[reactos.git] / reactos / base / applications / mspaint / registry.cpp
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 */
8
9 /* INCLUDES *********************************************************/
10
11 #include "precomp.h"
12
13 #include <winreg.h>
14
15 /* FUNCTIONS ********************************************************/
16
17 void RegistrySettings::SetWallpaper(TCHAR * FileName, DWORD dwStyle, DWORD dwTile) //FIXME: Has to be called 2x to apply the pattern (tiled/stretched) too
18 {
19 HKEY hDesktop;
20 TCHAR szStyle[3], szTile[3];
21
22 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID) FileName, SPIF_UPDATEINIFILE);
23
24 if ((dwStyle > 2) || (dwTile > 2))
25 return;
26
27 if (RegOpenKeyEx(HKEY_CURRENT_USER,
28 _T("Control Panel\\Desktop"), 0, KEY_READ | KEY_SET_VALUE, &hDesktop) == ERROR_SUCCESS)
29 {
30 RegSetValueEx(hDesktop, _T("Wallpaper"), 0, REG_SZ, (LPBYTE) FileName,
31 _tcslen(FileName) * sizeof(TCHAR));
32
33 _stprintf(szStyle, _T("%lu"), dwStyle);
34 _stprintf(szTile, _T("%lu"), dwTile);
35
36 RegSetValueEx(hDesktop, _T("WallpaperStyle"), 0, REG_SZ, (LPBYTE) szStyle,
37 _tcslen(szStyle) * sizeof(TCHAR));
38 RegSetValueEx(hDesktop, _T("TileWallpaper"), 0, REG_SZ, (LPBYTE) szTile,
39 _tcslen(szTile) * sizeof(TCHAR));
40
41 RegCloseKey(hDesktop);
42 }
43 }
44
45 void RegistrySettings::LoadPresets()
46 {
47 BMPHeight = 300;
48 BMPWidth = 400;
49 GridExtent = 1;
50 NoStretching = 0;
51 ShowThumbnail = 0;
52 SnapToGrid = 0;
53 ThumbHeight = 100;
54 ThumbWidth = 120;
55 ThumbXPos = 180;
56 ThumbYPos = 200;
57 UnitSetting = 0;
58 const WINDOWPLACEMENT DefaultWindowPlacement = {
59 sizeof(WINDOWPLACEMENT),
60 0,
61 SW_SHOWNORMAL,
62 {0, 0},
63 {-1, -1},
64 {100, 100, 700, 550}
65 };
66 WindowPlacement = DefaultWindowPlacement;
67 }
68
69 void RegistrySettings::Load()
70 {
71 HKEY hView;
72 LoadPresets();
73 if (RegOpenKeyEx(HKEY_CURRENT_USER,
74 _T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\View"),
75 0, KEY_READ | KEY_SET_VALUE, &hView) == ERROR_SUCCESS)
76 {
77 DWORD cbData;
78 cbData = sizeof(DWORD);
79 RegQueryValueEx(hView, _T("BMPHeight"), 0, NULL, (LPBYTE) &BMPHeight, &cbData);
80 cbData = sizeof(DWORD);
81 RegQueryValueEx(hView, _T("BMPWidth"), 0, NULL, (LPBYTE) &BMPWidth, &cbData);
82 cbData = sizeof(DWORD);
83 RegQueryValueEx(hView, _T("GridExtent"), 0, NULL, (LPBYTE) &GridExtent, &cbData);
84 cbData = sizeof(DWORD);
85 RegQueryValueEx(hView, _T("NoStretching"), 0, NULL, (LPBYTE) &NoStretching, &cbData);
86 cbData = sizeof(DWORD);
87 RegQueryValueEx(hView, _T("ShowThumbnail"), 0, NULL, (LPBYTE) &ShowThumbnail, &cbData);
88 cbData = sizeof(DWORD);
89 RegQueryValueEx(hView, _T("SnapToGrid"), 0, NULL, (LPBYTE) &SnapToGrid, &cbData);
90 cbData = sizeof(DWORD);
91 RegQueryValueEx(hView, _T("ThumbHeight"), 0, NULL, (LPBYTE) &ThumbHeight, &cbData);
92 cbData = sizeof(DWORD);
93 RegQueryValueEx(hView, _T("ThumbWidth"), 0, NULL, (LPBYTE) &ThumbWidth, &cbData);
94 cbData = sizeof(DWORD);
95 RegQueryValueEx(hView, _T("ThumbXPos"), 0, NULL, (LPBYTE) &ThumbXPos, &cbData);
96 cbData = sizeof(DWORD);
97 RegQueryValueEx(hView, _T("ThumbYPos"), 0, NULL, (LPBYTE) &ThumbYPos, &cbData);
98 cbData = sizeof(DWORD);
99 RegQueryValueEx(hView, _T("UnitSetting"), 0, NULL, (LPBYTE) &UnitSetting, &cbData);
100 cbData = sizeof(WINDOWPLACEMENT);
101 RegQueryValueEx(hView, _T("WindowPlacement"), 0, NULL, (LPBYTE) &WindowPlacement, &cbData);
102 }
103 }
104
105 void RegistrySettings::Store()
106 {
107 HKEY hView;
108 if (RegCreateKeyEx(HKEY_CURRENT_USER,
109 _T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\View"),
110 0, NULL, 0, KEY_READ | KEY_SET_VALUE, NULL, &hView, NULL) == ERROR_SUCCESS)
111 {
112 RegSetValueEx(hView, _T("BMPHeight"), 0, REG_DWORD, (LPBYTE) &BMPHeight, sizeof(DWORD));
113 RegSetValueEx(hView, _T("BMPWidth"), 0, REG_DWORD, (LPBYTE) &BMPWidth, sizeof(DWORD));
114 RegSetValueEx(hView, _T("GridExtent"), 0, REG_DWORD, (LPBYTE) &GridExtent, sizeof(DWORD));
115 RegSetValueEx(hView, _T("NoStretching"), 0, REG_DWORD, (LPBYTE) &NoStretching, sizeof(DWORD));
116 RegSetValueEx(hView, _T("ShowThumbnail"), 0, REG_DWORD, (LPBYTE) &ShowThumbnail, sizeof(DWORD));
117 RegSetValueEx(hView, _T("SnapToGrid"), 0, REG_DWORD, (LPBYTE) &SnapToGrid, sizeof(DWORD));
118 RegSetValueEx(hView, _T("ThumbHeight"), 0, REG_DWORD, (LPBYTE) &ThumbHeight, sizeof(DWORD));
119 RegSetValueEx(hView, _T("ThumbWidth"), 0, REG_DWORD, (LPBYTE) &ThumbWidth, sizeof(DWORD));
120 RegSetValueEx(hView, _T("ThumbXPos"), 0, REG_DWORD, (LPBYTE) &ThumbXPos, sizeof(DWORD));
121 RegSetValueEx(hView, _T("ThumbYPos"), 0, REG_DWORD, (LPBYTE) &ThumbYPos, sizeof(DWORD));
122 RegSetValueEx(hView, _T("UnitSetting"), 0, REG_DWORD, (LPBYTE) &UnitSetting, sizeof(DWORD));
123 RegSetValueEx(hView, _T("WindowPlacement"), 0, REG_BINARY, (LPBYTE) &WindowPlacement, sizeof(WINDOWPLACEMENT));
124 }
125 }