From: Benedikt Freisen Date: Sat, 1 Oct 2016 20:04:43 +0000 (+0000) Subject: [MSPAINT] X-Git-Tag: ReactOS-0.4.3~172 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=66a9815a4e59aa702bca9103b9e8e41acc44ad45 [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 svn path=/trunk/; revision=72883 --- diff --git a/reactos/base/applications/mspaint/main.cpp b/reactos/base/applications/mspaint/main.cpp index 24ee277c5ae..5a13792447d 100644 --- a/reactos/base/applications/mspaint/main.cpp +++ b/reactos/base/applications/mspaint/main.cpp @@ -93,7 +93,7 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument 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 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument /* 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); diff --git a/reactos/base/applications/mspaint/registry.cpp b/reactos/base/applications/mspaint/registry.cpp index 4d96a16993c..f89674c731d 100644 --- a/reactos/base/applications/mspaint/registry.cpp +++ b/reactos/base/applications/mspaint/registry.cpp @@ -13,45 +13,48 @@ #include /* 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::LoadPresets() 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(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); + 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); + + 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 @@ void RegistrySettings::SetMostRecentFile(LPCTSTR pszPathName) strFile4 = strFile3; strFile3 = strFile2; strFile2 = strFile1; - strFile1 = pszPathName; + strFile1 = szPathName; } } diff --git a/reactos/base/applications/mspaint/registry.h b/reactos/base/applications/mspaint/registry.h index 9f671493bec..3714a33da04 100644 --- a/reactos/base/applications/mspaint/registry.h +++ b/reactos/base/applications/mspaint/registry.h @@ -30,9 +30,9 @@ public: 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); };