mirror of
https://github.com/reactos/reactos.git
synced 2025-05-23 19:14:48 +00:00
[MSPAINT_NEW] save/restore certain settings to/from registry
svn path=/trunk/; revision=68724
This commit is contained in:
parent
484361acc7
commit
d811e32e7a
8 changed files with 136 additions and 13 deletions
|
@ -20,6 +20,9 @@ extern int heightSetInDlg;
|
||||||
|
|
||||||
extern STRETCHSKEW stretchSkew;
|
extern STRETCHSKEW stretchSkew;
|
||||||
|
|
||||||
|
class RegistrySettings;
|
||||||
|
extern RegistrySettings registrySettings;
|
||||||
|
|
||||||
class ImageModel;
|
class ImageModel;
|
||||||
extern ImageModel imageModel;
|
extern ImageModel imageModel;
|
||||||
extern BOOL askBeforeEnlarging;
|
extern BOOL askBeforeEnlarging;
|
||||||
|
|
|
@ -29,9 +29,9 @@ ImageModel::ImageModel()
|
||||||
redoSteps = 0;
|
redoSteps = 0;
|
||||||
imageSaved = TRUE;
|
imageSaved = TRUE;
|
||||||
|
|
||||||
// TODO: load dimensions from registry
|
// prepare a minimal usable bitmap
|
||||||
int imgXRes = 400;
|
int imgXRes = 1;
|
||||||
int imgYRes = 300;
|
int imgYRes = 1;
|
||||||
|
|
||||||
hDrawingDC = CreateCompatibleDC(NULL);
|
hDrawingDC = CreateCompatibleDC(NULL);
|
||||||
SelectObject(hDrawingDC, CreatePen(PS_SOLID, 0, paletteModel.GetFgColor()));
|
SelectObject(hDrawingDC, CreatePen(PS_SOLID, 0, paletteModel.GetFgColor()));
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
#include "dialogs.h"
|
#include "dialogs.h"
|
||||||
#include "registry.h"
|
|
||||||
|
|
||||||
/* FUNCTIONS ********************************************************/
|
/* FUNCTIONS ********************************************************/
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,8 @@ int textToolTextMaxLen = 0;
|
||||||
|
|
||||||
PaletteModel paletteModel;
|
PaletteModel paletteModel;
|
||||||
|
|
||||||
|
RegistrySettings registrySettings;
|
||||||
|
|
||||||
ImageModel imageModel;
|
ImageModel imageModel;
|
||||||
BOOL askBeforeEnlarging = FALSE; // TODO: initialize from registry
|
BOOL askBeforeEnlarging = FALSE; // TODO: initialize from registry
|
||||||
|
|
||||||
|
@ -134,13 +136,21 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument
|
||||||
_stprintf(progtitle, resstr, filename);
|
_stprintf(progtitle, resstr, filename);
|
||||||
LoadString(hThisInstance, IDS_MINIATURETITLE, miniaturetitle, SIZEOF(miniaturetitle));
|
LoadString(hThisInstance, IDS_MINIATURETITLE, miniaturetitle, SIZEOF(miniaturetitle));
|
||||||
|
|
||||||
|
/* load settings from registry */
|
||||||
|
registrySettings.Load();
|
||||||
|
showMiniature = registrySettings.ShowThumbnail;
|
||||||
|
imageModel.Crop(registrySettings.BMPWidth, registrySettings.BMPHeight);
|
||||||
|
|
||||||
/* create main window */
|
/* create main window */
|
||||||
RECT mainWindowPos = {0, 0, 544, 375}; // FIXME: use equivalent of CW_USEDEFAULT for position
|
RECT mainWindowPos = {0, 0, 544, 375}; // FIXME: use equivalent of CW_USEDEFAULT for position
|
||||||
hwnd = mainWindow.Create(HWND_DESKTOP, mainWindowPos, progtitle, WS_OVERLAPPEDWINDOW);
|
hwnd = mainWindow.Create(HWND_DESKTOP, mainWindowPos, progtitle, WS_OVERLAPPEDWINDOW);
|
||||||
|
|
||||||
RECT miniaturePos = {180, 200, 180 + 120, 200 + 100};
|
RECT miniaturePos = {(LONG) registrySettings.ThumbXPos, (LONG) registrySettings.ThumbYPos,
|
||||||
|
(LONG) registrySettings.ThumbXPos + (LONG) registrySettings.ThumbWidth,
|
||||||
|
(LONG) registrySettings.ThumbYPos + (LONG) registrySettings.ThumbHeight};
|
||||||
miniature.Create(hwnd, miniaturePos, miniaturetitle,
|
miniature.Create(hwnd, miniaturePos, miniaturetitle,
|
||||||
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME, WS_EX_PALETTEWINDOW);
|
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME, WS_EX_PALETTEWINDOW);
|
||||||
|
miniature.ShowWindow(showMiniature ? SW_SHOW : SW_HIDE);
|
||||||
|
|
||||||
/* loading and setting the window menu from resource */
|
/* loading and setting the window menu from resource */
|
||||||
menu = LoadMenu(hThisInstance, MAKEINTRESOURCE(ID_MENU));
|
menu = LoadMenu(hThisInstance, MAKEINTRESOURCE(ID_MENU));
|
||||||
|
@ -276,7 +286,7 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument
|
||||||
imageArea.SendMessage(WM_SIZE, 0, 0);
|
imageArea.SendMessage(WM_SIZE, 0, 0);
|
||||||
|
|
||||||
/* by moving the window, the things in WM_SIZE are done */
|
/* by moving the window, the things in WM_SIZE are done */
|
||||||
MoveWindow(hwnd, 100, 100, 600, 450, TRUE);
|
mainWindow.SetWindowPlacement(&(registrySettings.WindowPlacement));
|
||||||
|
|
||||||
/* creating the text editor window for the text tool */
|
/* creating the text editor window for the text tool */
|
||||||
RECT textEditWindowPos = {300, 0, 300 + 300, 0 + 200};
|
RECT textEditWindowPos = {300, 0, 300 + 300, 0 + 200};
|
||||||
|
@ -299,6 +309,12 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument
|
||||||
DispatchMessage(&messages);
|
DispatchMessage(&messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* write back settings to registry */
|
||||||
|
registrySettings.ShowThumbnail = showMiniature;
|
||||||
|
registrySettings.BMPWidth = imageModel.GetWidth();
|
||||||
|
registrySettings.BMPHeight = imageModel.GetHeight();
|
||||||
|
registrySettings.Store();
|
||||||
|
|
||||||
/* The program return-value is 0 - The value that PostQuitMessage() gave */
|
/* The program return-value is 0 - The value that PostQuitMessage() gave */
|
||||||
return messages.wParam;
|
return messages.wParam;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "mouse.h"
|
#include "mouse.h"
|
||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
#include "palettemodel.h"
|
#include "palettemodel.h"
|
||||||
|
#include "registry.h"
|
||||||
#include "scrollbox.h"
|
#include "scrollbox.h"
|
||||||
#include "selection.h"
|
#include "selection.h"
|
||||||
#include "selectionmodel.h"
|
#include "selectionmodel.h"
|
||||||
|
|
|
@ -14,8 +14,7 @@
|
||||||
|
|
||||||
/* FUNCTIONS ********************************************************/
|
/* FUNCTIONS ********************************************************/
|
||||||
|
|
||||||
void
|
void RegistrySettings::SetWallpaper(TCHAR * FileName, DWORD dwStyle, DWORD dwTile) //FIXME: Has to be called 2x to apply the pattern (tiled/stretched) too
|
||||||
SetWallpaper(TCHAR * FileName, DWORD dwStyle, DWORD dwTile) //FIXME: Has to be called 2x to apply the pattern (tiled/stretched) too
|
|
||||||
{
|
{
|
||||||
HKEY hDesktop;
|
HKEY hDesktop;
|
||||||
TCHAR szStyle[3], szTile[3];
|
TCHAR szStyle[3], szTile[3];
|
||||||
|
@ -42,3 +41,85 @@ SetWallpaper(TCHAR * FileName, DWORD dwStyle, DWORD dwTile) //FIXME: Has to be c
|
||||||
RegCloseKey(hDesktop);
|
RegCloseKey(hDesktop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RegistrySettings::LoadPresets()
|
||||||
|
{
|
||||||
|
BMPHeight = 300;
|
||||||
|
BMPWidth = 400;
|
||||||
|
GridExtent = 1;
|
||||||
|
NoStretching = 0;
|
||||||
|
ShowThumbnail = 0;
|
||||||
|
SnapToGrid = 0;
|
||||||
|
ThumbHeight = 100;
|
||||||
|
ThumbWidth = 120;
|
||||||
|
ThumbXPos = 180;
|
||||||
|
ThumbYPos = 200;
|
||||||
|
UnitSetting = 0;
|
||||||
|
const WINDOWPLACEMENT DefaultWindowPlacement = {
|
||||||
|
sizeof(WINDOWPLACEMENT),
|
||||||
|
0,
|
||||||
|
SW_SHOWNORMAL,
|
||||||
|
{0, 0},
|
||||||
|
{-1, -1},
|
||||||
|
{100, 100, 700, 550}
|
||||||
|
};
|
||||||
|
WindowPlacement = DefaultWindowPlacement;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegistrySettings::Load()
|
||||||
|
{
|
||||||
|
HKEY hView;
|
||||||
|
LoadPresets();
|
||||||
|
if (RegOpenKeyEx(HKEY_CURRENT_USER,
|
||||||
|
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\View"),
|
||||||
|
0, KEY_READ | KEY_SET_VALUE, &hView) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
DWORD cbData;
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("BMPHeight"), 0, NULL, (LPBYTE) &BMPHeight, &cbData);
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("BMPWidth"), 0, NULL, (LPBYTE) &BMPWidth, &cbData);
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("GridExtent"), 0, NULL, (LPBYTE) &GridExtent, &cbData);
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("NoStretching"), 0, NULL, (LPBYTE) &NoStretching, &cbData);
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("ShowThumbnail"), 0, NULL, (LPBYTE) &ShowThumbnail, &cbData);
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("SnapToGrid"), 0, NULL, (LPBYTE) &SnapToGrid, &cbData);
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("ThumbHeight"), 0, NULL, (LPBYTE) &ThumbHeight, &cbData);
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("ThumbWidth"), 0, NULL, (LPBYTE) &ThumbWidth, &cbData);
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("ThumbXPos"), 0, NULL, (LPBYTE) &ThumbXPos, &cbData);
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("ThumbYPos"), 0, NULL, (LPBYTE) &ThumbYPos, &cbData);
|
||||||
|
cbData = sizeof(DWORD);
|
||||||
|
RegQueryValueEx(hView, _T("UnitSetting"), 0, NULL, (LPBYTE) &UnitSetting, &cbData);
|
||||||
|
cbData = sizeof(WINDOWPLACEMENT);
|
||||||
|
RegQueryValueEx(hView, _T("WindowPlacement"), 0, NULL, (LPBYTE) &WindowPlacement, &cbData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegistrySettings::Store()
|
||||||
|
{
|
||||||
|
HKEY hView;
|
||||||
|
if (RegCreateKeyEx(HKEY_CURRENT_USER,
|
||||||
|
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\View"),
|
||||||
|
0, NULL, 0, KEY_READ | KEY_SET_VALUE, NULL, &hView, NULL) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegSetValueEx(hView, _T("BMPHeight"), 0, REG_DWORD, (LPBYTE) &BMPHeight, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("BMPWidth"), 0, REG_DWORD, (LPBYTE) &BMPWidth, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("GridExtent"), 0, REG_DWORD, (LPBYTE) &GridExtent, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("NoStretching"), 0, REG_DWORD, (LPBYTE) &NoStretching, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("ShowThumbnail"), 0, REG_DWORD, (LPBYTE) &ShowThumbnail, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("SnapToGrid"), 0, REG_DWORD, (LPBYTE) &SnapToGrid, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("ThumbHeight"), 0, REG_DWORD, (LPBYTE) &ThumbHeight, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("ThumbWidth"), 0, REG_DWORD, (LPBYTE) &ThumbWidth, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("ThumbXPos"), 0, REG_DWORD, (LPBYTE) &ThumbXPos, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("ThumbYPos"), 0, REG_DWORD, (LPBYTE) &ThumbYPos, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("UnitSetting"), 0, REG_DWORD, (LPBYTE) &UnitSetting, sizeof(DWORD));
|
||||||
|
RegSetValueEx(hView, _T("WindowPlacement"), 0, REG_BINARY, (LPBYTE) &WindowPlacement, sizeof(WINDOWPLACEMENT));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -6,4 +6,27 @@
|
||||||
* PROGRAMMERS: Benedikt Freisen
|
* PROGRAMMERS: Benedikt Freisen
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void SetWallpaper(TCHAR *szFileName, DWORD dwStyle, DWORD dwTile);
|
class RegistrySettings
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
void LoadPresets();
|
||||||
|
|
||||||
|
public:
|
||||||
|
DWORD BMPHeight;
|
||||||
|
DWORD BMPWidth;
|
||||||
|
DWORD GridExtent;
|
||||||
|
DWORD NoStretching;
|
||||||
|
DWORD ShowThumbnail;
|
||||||
|
DWORD SnapToGrid;
|
||||||
|
DWORD ThumbHeight;
|
||||||
|
DWORD ThumbWidth;
|
||||||
|
DWORD ThumbXPos;
|
||||||
|
DWORD ThumbYPos;
|
||||||
|
DWORD UnitSetting;
|
||||||
|
WINDOWPLACEMENT WindowPlacement;
|
||||||
|
|
||||||
|
static void SetWallpaper(TCHAR *szFileName, DWORD dwStyle, DWORD dwTile);
|
||||||
|
|
||||||
|
void Load();
|
||||||
|
void Store();
|
||||||
|
};
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
#include "dialogs.h"
|
#include "dialogs.h"
|
||||||
#include "registry.h"
|
|
||||||
|
|
||||||
/* FUNCTIONS ********************************************************/
|
/* FUNCTIONS ********************************************************/
|
||||||
|
|
||||||
|
@ -188,6 +187,7 @@ LRESULT CMainWindow::OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHa
|
||||||
|
|
||||||
LRESULT CMainWindow::OnDestroy(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
LRESULT CMainWindow::OnDestroy(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||||
{
|
{
|
||||||
|
GetWindowPlacement(&(registrySettings.WindowPlacement));
|
||||||
PostQuitMessage(0); /* send a WM_QUIT to the message queue */
|
PostQuitMessage(0); /* send a WM_QUIT to the message queue */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -428,13 +428,13 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
|
||||||
GlobalFree(pd.hDevNames);
|
GlobalFree(pd.hDevNames);
|
||||||
break;
|
break;
|
||||||
case IDM_FILEASWALLPAPERPLANE:
|
case IDM_FILEASWALLPAPERPLANE:
|
||||||
SetWallpaper(filepathname, 1, 1);
|
RegistrySettings::SetWallpaper(filepathname, 1, 1);
|
||||||
break;
|
break;
|
||||||
case IDM_FILEASWALLPAPERCENTERED:
|
case IDM_FILEASWALLPAPERCENTERED:
|
||||||
SetWallpaper(filepathname, 1, 0);
|
RegistrySettings::SetWallpaper(filepathname, 1, 0);
|
||||||
break;
|
break;
|
||||||
case IDM_FILEASWALLPAPERSTRETCHED:
|
case IDM_FILEASWALLPAPERSTRETCHED:
|
||||||
SetWallpaper(filepathname, 2, 0);
|
RegistrySettings::SetWallpaper(filepathname, 2, 0);
|
||||||
break;
|
break;
|
||||||
case IDM_EDITUNDO:
|
case IDM_EDITUNDO:
|
||||||
imageModel.Undo();
|
imageModel.Undo();
|
||||||
|
|
Loading…
Reference in a new issue