mirror of
https://github.com/reactos/reactos.git
synced 2025-04-29 10:39:07 +00:00
[MSPAINT] Support JPEG/PNG/GIF/TIFF wallpapers (#6632)
Improve usability. JIRA issue: CORE-19485 - Enable the menu items to set the wallpapars. - Save the current bitmap as file Wallpaper1.bmp in CSIDL_LOCAL_APPDATA folder. - Support JPEG/PNG/GIF/TIFF files in RegistrySettings::SetWallpaper.
This commit is contained in:
parent
c5e6456377
commit
6af1813fda
2 changed files with 25 additions and 16 deletions
|
@ -642,20 +642,6 @@ LRESULT CMainWindow::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHan
|
||||||
|
|
||||||
void CMainWindow::ProcessFileMenu(HMENU hPopupMenu)
|
void CMainWindow::ProcessFileMenu(HMENU hPopupMenu)
|
||||||
{
|
{
|
||||||
LPCWSTR dotext = PathFindExtensionW(g_szFileName);
|
|
||||||
BOOL isBMP = FALSE;
|
|
||||||
if (_wcsicmp(dotext, L".bmp") == 0 ||
|
|
||||||
_wcsicmp(dotext, L".dib") == 0 ||
|
|
||||||
_wcsicmp(dotext, L".rle") == 0)
|
|
||||||
{
|
|
||||||
isBMP = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
UINT uWallpaperEnabled = ENABLED_IF(g_isAFile && isBMP && g_fileSize > 0);
|
|
||||||
::EnableMenuItem(hPopupMenu, IDM_FILEASWALLPAPERPLANE, uWallpaperEnabled);
|
|
||||||
::EnableMenuItem(hPopupMenu, IDM_FILEASWALLPAPERCENTERED, uWallpaperEnabled);
|
|
||||||
::EnableMenuItem(hPopupMenu, IDM_FILEASWALLPAPERSTRETCHED, uWallpaperEnabled);
|
|
||||||
|
|
||||||
for (INT iItem = 0; iItem < MAX_RECENT_FILES; ++iItem)
|
for (INT iItem = 0; iItem < MAX_RECENT_FILES; ++iItem)
|
||||||
RemoveMenu(hPopupMenu, IDM_FILE1 + iItem, MF_BYCOMMAND);
|
RemoveMenu(hPopupMenu, IDM_FILE1 + iItem, MF_BYCOMMAND);
|
||||||
|
|
||||||
|
|
|
@ -38,16 +38,39 @@ static void ReadString(CRegKey &key, LPCWSTR lpName, CStringW &strValue, LPCWSTR
|
||||||
|
|
||||||
void RegistrySettings::SetWallpaper(LPCWSTR szFileName, RegistrySettings::WallpaperStyle style)
|
void RegistrySettings::SetWallpaper(LPCWSTR szFileName, RegistrySettings::WallpaperStyle style)
|
||||||
{
|
{
|
||||||
|
// Build the local path to the converted cached BMP wallpaper
|
||||||
|
HRESULT hr;
|
||||||
|
WCHAR szWallpaper[MAX_PATH];
|
||||||
|
hr = SHGetFolderPathW(NULL, CSIDL_LOCAL_APPDATA | CSIDL_FLAG_CREATE, NULL, 0, szWallpaper);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return;
|
||||||
|
hr = StringCchCatW(szWallpaper, _countof(szWallpaper), TEXT("\\Wallpaper1.bmp"));
|
||||||
|
if (FAILED(hr))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Save the converted wallpaper BMP
|
||||||
|
CImageDx img;
|
||||||
|
HBITMAP hbmLocked = imageModel.LockBitmap();
|
||||||
|
img.Attach(hbmLocked);
|
||||||
|
hr = img.SaveDx(szWallpaper);
|
||||||
|
img.Detach();
|
||||||
|
imageModel.UnlockBitmap(hbmLocked);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Write the wallpaper settings to the registry
|
||||||
CRegKey desktop;
|
CRegKey desktop;
|
||||||
if (desktop.Open(HKEY_CURRENT_USER, L"Control Panel\\Desktop") == ERROR_SUCCESS)
|
if (desktop.Open(HKEY_CURRENT_USER, L"Control Panel\\Desktop") == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
desktop.SetStringValue(L"Wallpaper", szFileName);
|
desktop.SetStringValue(L"Wallpaper", szFileName);
|
||||||
|
|
||||||
desktop.SetStringValue(L"WallpaperStyle", (style == RegistrySettings::STRETCHED) ? L"2" : L"0");
|
desktop.SetStringValue(L"WallpaperStyle", (style == RegistrySettings::STRETCHED) ? L"2" : L"0");
|
||||||
desktop.SetStringValue(L"TileWallpaper", (style == RegistrySettings::TILED) ? L"1" : L"0");
|
desktop.SetStringValue(L"TileWallpaper", (style == RegistrySettings::TILED) ? L"1" : L"0");
|
||||||
|
desktop.SetStringValue(L"ConvertedWallpaper", szWallpaper);
|
||||||
|
desktop.SetStringValue(L"OriginalWallpaper", szFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID) szFileName, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
|
// Set the desktop wallpaper
|
||||||
|
SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, szWallpaper, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegistrySettings::LoadPresets(INT nCmdShow)
|
void RegistrySettings::LoadPresets(INT nCmdShow)
|
||||||
|
|
Loading…
Reference in a new issue