Author: bfreisen
Date: Sat Oct 1 20:04:43 2016
New Revision: 72883
URL:
http://svn.reactos.org/svn/reactos?rev=72883&view=rev
Log:
[MSPAINT]
- change type of haccel from HANDLE to HACCEL
- port registry code to ATL::CRegKey, which -- through its destructor -- should prevent
handle leaks
- rename some parameters and variables
- incorporate some changes suggested by Carlo Bramini in CORE-12080
Modified:
trunk/reactos/base/applications/mspaint/main.cpp
trunk/reactos/base/applications/mspaint/registry.cpp
trunk/reactos/base/applications/mspaint/registry.h
Modified: trunk/reactos/base/applications/mspaint/main.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint/…
==============================================================================
--- trunk/reactos/base/applications/mspaint/main.cpp [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mspaint/main.cpp [iso-8859-1] Sat Oct 1 20:04:43
2016
@@ -93,7 +93,7 @@
MSG messages; /* Here messages to the application are saved */
HMENU menu;
- HANDLE haccel;
+ HACCEL haccel;
TCHAR sfnFilename[1000];
TCHAR sfnFiletitle[256];
@@ -303,7 +303,7 @@
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage(&messages, NULL, 0, 0))
{
- TranslateAccelerator(hwnd, (HACCEL) haccel, &messages);
+ TranslateAccelerator(hwnd, haccel, &messages);
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
Modified: trunk/reactos/base/applications/mspaint/registry.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint/…
==============================================================================
--- trunk/reactos/base/applications/mspaint/registry.cpp [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mspaint/registry.cpp [iso-8859-1] Sat Oct 1 20:04:43
2016
@@ -13,45 +13,48 @@
#include <winreg.h>
/* FUNCTIONS ********************************************************/
-static DWORD ReadDWORD(HKEY hKey, LPCTSTR lpName, DWORD *pdwValue, BOOL bCheckForDef)
+static DWORD ReadDWORD(CRegKey &key, LPCTSTR lpName, DWORD &dwValue, BOOL
bCheckForDef)
{
- DWORD dwPrev = *pdwValue;
- DWORD cbData = sizeof(DWORD);
+ DWORD dwPrev = dwValue;
- if (ERROR_SUCCESS != RegQueryValueEx(hKey, lpName, 0, NULL, (LPBYTE) pdwValue,
&cbData))
- *pdwValue = dwPrev;
+ if (key.QueryDWORDValue(lpName, dwValue) != ERROR_SUCCESS)
+ dwValue = dwPrev;
- if (bCheckForDef && *pdwValue == 0)
- *pdwValue = dwPrev;
+ if (bCheckForDef && dwValue == 0)
+ dwValue = dwPrev;
return dwPrev;
}
-void RegistrySettings::SetWallpaper(TCHAR * FileName, DWORD dwStyle, DWORD dwTile)
//FIXME: Has to be called 2x to apply the pattern (tiled/stretched) too
+static void ReadFileHistory(CRegKey &key, LPCTSTR lpName, CString &strFile)
{
- HKEY hDesktop;
- TCHAR szStyle[3], szTile[3];
+ ULONG nChars = MAX_PATH;
+ LPTSTR szFile = strFile.GetBuffer(nChars);
+ if (key.QueryStringValue(lpName, szFile, &nChars) != ERROR_SUCCESS)
+ szFile[0] = '\0';
+ strFile.ReleaseBuffer();
+}
- SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID) FileName, SPIF_UPDATEINIFILE);
+void RegistrySettings::SetWallpaper(LPCTSTR szFileName, DWORD dwStyle, DWORD dwTile)
+{
+ // TODO: find out whether this line still serves a purpose
+ SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID) szFileName,
SPIF_UPDATEINIFILE);
if ((dwStyle > 2) || (dwTile > 2))
return;
- if (RegOpenKeyEx(HKEY_CURRENT_USER,
- _T("Control Panel\\Desktop"), 0, KEY_READ | KEY_SET_VALUE,
&hDesktop) == ERROR_SUCCESS)
+ CRegKey desktop;
+ if (desktop.Open(HKEY_CURRENT_USER, _T("Control Panel\\Desktop")) ==
ERROR_SUCCESS)
{
- RegSetValueEx(hDesktop, _T("Wallpaper"), 0, REG_SZ, (LPBYTE) FileName,
- _tcslen(FileName) * sizeof(TCHAR));
+ TCHAR szStyle[3], szTile[3];
+
+ desktop.SetStringValue(_T("Wallpaper"), szFileName);
_stprintf(szStyle, _T("%lu"), dwStyle);
_stprintf(szTile, _T("%lu"), dwTile);
- RegSetValueEx(hDesktop, _T("WallpaperStyle"), 0, REG_SZ, (LPBYTE)
szStyle,
- _tcslen(szStyle) * sizeof(TCHAR));
- RegSetValueEx(hDesktop, _T("TileWallpaper"), 0, REG_SZ, (LPBYTE)
szTile,
- _tcslen(szTile) * sizeof(TCHAR));
-
- RegCloseKey(hDesktop);
+ desktop.SetStringValue(_T("WallpaperStyle"), szStyle);
+ desktop.SetStringValue(_T("TileWallpaper"), szTile);
}
}
@@ -81,107 +84,92 @@
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)
+
+ CRegKey view;
+ if (view.Open(HKEY_CURRENT_USER,
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\View"),
KEY_READ) == ERROR_SUCCESS)
{
- DWORD cbData;
+ ReadDWORD(view, _T("BMPHeight"), BMPHeight, TRUE);
+ ReadDWORD(view, _T("BMPWidth"), BMPWidth, TRUE);
+ ReadDWORD(view, _T("GridExtent"), GridExtent, FALSE);
+ ReadDWORD(view, _T("NoStretching"), NoStretching, FALSE);
+ ReadDWORD(view, _T("ShowThumbnail"), ShowThumbnail, FALSE);
+ ReadDWORD(view, _T("SnapToGrid"), SnapToGrid, FALSE);
+ ReadDWORD(view, _T("ThumbHeight"), ThumbHeight, TRUE);
+ ReadDWORD(view, _T("ThumbWidth"), ThumbWidth, TRUE);
+ ReadDWORD(view, _T("ThumbXPos"), ThumbXPos, TRUE);
+ ReadDWORD(view, _T("ThumbYPos"), ThumbYPos, TRUE);
+ ReadDWORD(view, _T("UnitSetting"), UnitSetting, FALSE);
- ReadDWORD(hView, _T("BMPHeight"), &BMPHeight, TRUE);
- ReadDWORD(hView, _T("BMPWidth"), &BMPWidth, TRUE);
- ReadDWORD(hView, _T("GridExtent"), &GridExtent, FALSE);
- ReadDWORD(hView, _T("NoStretching"), &NoStretching, FALSE);
- ReadDWORD(hView, _T("ShowThumbnail"), &ShowThumbnail, FALSE);
- ReadDWORD(hView, _T("SnapToGrid"), &SnapToGrid, FALSE);
- ReadDWORD(hView, _T("ThumbHeight"), &ThumbHeight, TRUE);
- ReadDWORD(hView, _T("ThumbWidth"), &ThumbWidth, TRUE);
- ReadDWORD(hView, _T("ThumbXPos"), &ThumbXPos, TRUE);
- ReadDWORD(hView, _T("ThumbYPos"), &ThumbYPos, TRUE);
- ReadDWORD(hView, _T("UnitSetting"), &UnitSetting, FALSE);
-
- cbData = sizeof(WINDOWPLACEMENT);
- RegQueryValueEx(hView, _T("WindowPlacement"), 0, NULL, (LPBYTE)
&WindowPlacement, &cbData);
+ ULONG pnBytes = sizeof(WINDOWPLACEMENT);
+ view.QueryBinaryValue(_T("WindowPlacement"), &WindowPlacement,
&pnBytes);
}
- CRegKey hKey;
- if (hKey.Open(HKEY_CURRENT_USER,
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\Recent File
List"), KEY_READ) == ERROR_SUCCESS)
+ CRegKey files;
+ if (files.Open(HKEY_CURRENT_USER,
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\Recent File
List"), KEY_READ) == ERROR_SUCCESS)
{
- ULONG nChars = MAX_PATH;
- LPTSTR pszFile1 = strFile1.GetBuffer(nChars);
- hKey.QueryStringValue(_T("File1"), pszFile1, &nChars);
- strFile1.ReleaseBuffer();
- nChars = MAX_PATH;
- LPTSTR pszFile2 = strFile2.GetBuffer(nChars);
- hKey.QueryStringValue(_T("File2"), pszFile2, &nChars);
- strFile2.ReleaseBuffer();
- nChars = MAX_PATH;
- LPTSTR pszFile3 = strFile3.GetBuffer(nChars);
- hKey.QueryStringValue(_T("File3"), pszFile3, &nChars);
- strFile3.ReleaseBuffer();
- nChars = MAX_PATH;
- LPTSTR pszFile4 = strFile4.GetBuffer(nChars);
- hKey.QueryStringValue(_T("File4"), pszFile4, &nChars);
- strFile4.ReleaseBuffer();
+ ReadFileHistory(files, _T("File1"), strFile1);
+ ReadFileHistory(files, _T("File2"), strFile2);
+ ReadFileHistory(files, _T("File3"), strFile3);
+ ReadFileHistory(files, _T("File4"), strFile4);
}
}
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)
+ CRegKey view;
+ if (view.Create(HKEY_CURRENT_USER,
+
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\View")) ==
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));
+ view.SetDWORDValue(_T("BMPHeight"), BMPHeight);
+ view.SetDWORDValue(_T("BMPWidth"), BMPWidth);
+ view.SetDWORDValue(_T("GridExtent"), GridExtent);
+ view.SetDWORDValue(_T("NoStretching"), NoStretching);
+ view.SetDWORDValue(_T("ShowThumbnail"), ShowThumbnail);
+ view.SetDWORDValue(_T("SnapToGrid"), SnapToGrid);
+ view.SetDWORDValue(_T("ThumbHeight"), ThumbHeight);
+ view.SetDWORDValue(_T("ThumbWidth"), ThumbWidth);
+ view.SetDWORDValue(_T("ThumbXPos"), ThumbXPos);
+ view.SetDWORDValue(_T("ThumbYPos"), ThumbYPos);
+ view.SetDWORDValue(_T("UnitSetting"), UnitSetting);
+
+ view.SetBinaryValue(_T("WindowPlacement"), &WindowPlacement,
sizeof(WINDOWPLACEMENT));
}
- CRegKey hKey;
- if (hKey.Create(HKEY_CURRENT_USER,
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\Recent File
List")) == ERROR_SUCCESS)
+ CRegKey files;
+ if (files.Create(HKEY_CURRENT_USER,
_T("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Paint\\Recent File
List")) == ERROR_SUCCESS)
{
if (!strFile1.IsEmpty())
- hKey.SetStringValue(_T("File1"), strFile1);
+ files.SetStringValue(_T("File1"), strFile1);
if (!strFile2.IsEmpty())
- hKey.SetStringValue(_T("File2"), strFile2);
+ files.SetStringValue(_T("File2"), strFile2);
if (!strFile3.IsEmpty())
- hKey.SetStringValue(_T("File3"), strFile3);
+ files.SetStringValue(_T("File3"), strFile3);
if (!strFile4.IsEmpty())
- hKey.SetStringValue(_T("File4"), strFile4);
+ files.SetStringValue(_T("File4"), strFile4);
}
}
-void RegistrySettings::SetMostRecentFile(LPCTSTR pszPathName)
+void RegistrySettings::SetMostRecentFile(LPCTSTR szPathName)
{
- if (strFile1 == pszPathName)
+ if (strFile1 == szPathName)
{
// do nothing
}
- else if (strFile2 == pszPathName)
+ else if (strFile2 == szPathName)
{
CString strTemp = strFile2;
strFile2 = strFile1;
strFile1 = strTemp;
}
- else if (strFile3 == pszPathName)
+ else if (strFile3 == szPathName)
{
CString strTemp = strFile3;
strFile3 = strFile2;
strFile2 = strFile1;
strFile1 = strTemp;
}
- else if (strFile4 == pszPathName)
+ else if (strFile4 == szPathName)
{
CString strTemp = strFile4;
strFile4 = strFile3;
@@ -194,6 +182,6 @@
strFile4 = strFile3;
strFile3 = strFile2;
strFile2 = strFile1;
- strFile1 = pszPathName;
+ strFile1 = szPathName;
}
}
Modified: trunk/reactos/base/applications/mspaint/registry.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mspaint/…
==============================================================================
--- trunk/reactos/base/applications/mspaint/registry.h [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mspaint/registry.h [iso-8859-1] Sat Oct 1 20:04:43
2016
@@ -30,9 +30,9 @@
CString strFile3;
CString strFile4;
- static void SetWallpaper(TCHAR *szFileName, DWORD dwStyle, DWORD dwTile);
+ static void SetWallpaper(LPCTSTR szFileName, DWORD dwStyle, DWORD dwTile);
void Load();
void Store();
- void SetMostRecentFile(LPCTSTR pszPathName);
+ void SetMostRecentFile(LPCTSTR szPathName);
};