17#define MAX_BACKGROUNDS 100
102 if (!
_wcsicmp(codecInfo[
i].MimeType, MimeType))
104 *pClsid = codecInfo[
i].
Clsid;
159 if (!
lstrcmpiW(codecInfo[
i].FilenameExtension,
L"*.ico"))
230 backgroundItem = &
pData->backgroundItems[
pData->listViewItemCount];
256 listItem.iImage = sfi.
iIcon;
257 listItem.iItem =
pData->listViewItemCount;
258 listItem.lParam =
pData->listViewItemCount;
262 pData->listViewItemCount++;
298 HWND hwndBackgroundList;
313#define IDI_SHELL_NO 200
328 backgroundItem = &
pData->backgroundItems[
pData->listViewItemCount];
340 listItem.iItem =
pData->listViewItemCount;
341 listItem.lParam =
pData->listViewItemCount;
346 pData->listViewItemCount,
350 pData->listViewItemCount++;
370 hr =
StringCbCopy(wallpaperFilename,
sizeof(wallpaperFilename), originalWallpaper);
400 backgroundItem = &
pData->backgroundItems[
pData->listViewItemCount];
423 listItem.iImage = sfi.
iIcon;
424 listItem.iItem =
pData->listViewItemCount;
425 listItem.lParam =
pData->listViewItemCount;
429 pData->listViewItemCount,
433 pData->listViewItemCount++;
516 if (
_ttoi(szBuffer) == 1)
552 cc.hwndOwner = hwndDlg;
555 cc.lpCustColors =
pData->custom_colors;
601 lvfi.psz = tszFileName;
617 TCHAR fileTitle[256];
624 HWND hwndBackgroundList;
652 buffersize = (
_tcslen(extensions) * 2 + 6) *
sizeof(
TCHAR) +
sizeof(filterdesc);
661 sizeRemain = buffersize;
672 sizeRemain -=
sizeof(*c);
713 backgroundItem = &
pData->backgroundItems[
pData->listViewItemCount];
731 listItem.iImage = sfi.
iIcon;
732 listItem.iItem =
pData->listViewItemCount;
733 listItem.lParam =
pData->listViewItemCount;
737 pData->listViewItemCount,
742 pData->listViewItemCount++;
752 pData->backgroundSelection = itemIndex;
753 backgroundItem = &
pData->backgroundItems[
pData->backgroundSelection];
790 int fitFillScaleNum, fitFillScaleDen;
791 int fitFillWidth, fitFillHeight;
807 if (
pData->backgroundItems[
pData->backgroundSelection].bWallpaper ==
FALSE)
820 scaledWidth = (
int)(
pData->pWallpaperBitmap->width / scaleX);
821 scaledHeight = (
int)(
pData->pWallpaperBitmap->height / scaleY);
827 switch (
pData->placementSelection)
835 if (posX < 0) { desX = -posX / 2; posX = 0; }
836 if (posY < 0) { desY = -posY / 2; posY = 0; }
851 pData->pWallpaperBitmap->width - (
int)(desX * scaleX),
852 pData->pWallpaperBitmap->height - (
int)(desY * scaleY),
853 pData->pWallpaperBitmap->bits,
854 pData->pWallpaperBitmap->info,
867 pData->pWallpaperBitmap->width,
868 pData->pWallpaperBitmap->height,
869 pData->pWallpaperBitmap->bits,
870 pData->pWallpaperBitmap->info,
898 pData->pWallpaperBitmap->width * posX / scaledWidth,
899 pData->pWallpaperBitmap->height * posY / scaledHeight,
900 pData->pWallpaperBitmap->bits,
901 pData->pWallpaperBitmap->info,
914 fitFillScaleDen = scaledWidth;
919 fitFillScaleDen = scaledHeight;
922 fitFillWidth =
MulDiv(scaledWidth, fitFillScaleNum, fitFillScaleDen);
923 fitFillHeight =
MulDiv(scaledHeight, fitFillScaleNum, fitFillScaleDen);
935 pData->pWallpaperBitmap->width,
936 pData->pWallpaperBitmap->height,
937 pData->pWallpaperBitmap->bits,
938 pData->pWallpaperBitmap->info,
947 fitFillScaleDen = scaledWidth;
952 fitFillScaleDen = scaledHeight;
955 fitFillWidth =
MulDiv(scaledWidth, fitFillScaleNum, fitFillScaleDen);
956 fitFillHeight =
MulDiv(scaledHeight, fitFillScaleNum, fitFillScaleDen);
958 desX = (((fitFillWidth -
MONITOR_WIDTH) *
pData->pWallpaperBitmap->width) / (2 * fitFillWidth));
959 desY = (((fitFillHeight -
MONITOR_HEIGHT) *
pData->pWallpaperBitmap->height) / (2 * fitFillHeight));
970 pData->pWallpaperBitmap->bits,
971 pData->pWallpaperBitmap->info,
1049 if (
pData->backgroundItems[
pData->backgroundSelection].bWallpaper !=
FALSE)
1087 TEXT(
"ConvertedWallpaper"),
1097 TEXT(
"OriginalWallpaper"),
1258 if (
pData->bWallpaperChanged)
1260 if (
pData->bClrBackgroundChanged)
1262 if (
pData->desktopData.bSettingsChanged)
static VOID OnBrowseButton(HWND hwndDlg, PBACKGROUND_DATA pData)
static VOID InitBackgroundDialog(HWND hwndDlg, PBACKGROUND_DATA pData)
struct _BACKGROUND_DATA * PBACKGROUND_DATA
static VOID SetWallpaper(PBACKGROUND_DATA pData)
static VOID AddListViewItems(HWND hwndDlg, PBACKGROUND_DATA pData)
struct _BACKGROUND_DATA BACKGROUND_DATA
HRESULT GdipGetEncoderClsid(PCWSTR MimeType, CLSID *pClsid)
@ PLACEMENT_VALUE_STRETCH
static UINT AddWallpapersFromDirectory(UINT uCounter, HWND hwndBackgroundList, BackgroundItem *backgroundItem, PBACKGROUND_DATA pData, LPCTSTR wallpaperFilename, LPCTSTR wallpaperDirectory)
static VOID DrawBackgroundPreview(LPDRAWITEMSTRUCT draw, PBACKGROUND_DATA pData)
static BOOL CheckListViewFilenameExists(HWND hwndList, LPCTSTR tszFileName)
LPWSTR GdipGetSupportedFileExtensions(VOID)
INT_PTR CALLBACK BackgroundPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static VOID OnColorButton(HWND hwndDlg, PBACKGROUND_DATA pData)
static VOID ListViewItemChanged(HWND hwndDlg, PBACKGROUND_DATA pData, int itemIndex)
static VOID SetDesktopBackColor(HWND hwndDlg, PBACKGROUND_DATA pData)
static VOID OnCustomButton(HWND hwndDlg, PBACKGROUND_DATA pData)
#define RegCloseKey(hKey)
#define OFN_FILEMUSTEXIST
#define OFN_PATHMUSTEXIST
OPENFILENAMEA OPENFILENAME
VOID InitDesktopSettings(PDESKTOP_DATA pData)
BOOL SaveDesktopSettings(PDESKTOP_DATA pData)
INT_PTR CALLBACK DesktopPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
VOID SetDesktopSettings(PDESKTOP_DATA pData)
UINT ClrBtn_CustomDraw(NMCUSTOMDRAW *pCD, COLORREF Color)
VOID DibFreeImage(PDIBITMAP lpBitmap)
PDIBITMAP DibLoadImage(LPTSTR lpFilename)
#define IDC_BACKGROUND_LIST
#define IDD_DESKTOP_GENERAL
#define IDC_BACKGROUND_PREVIEW
#define IDS_BACKGROUND_COMDLG_FILTER
#define IDC_DESKTOP_CUSTOM
#define IDS_DESKTOP_ITEMS
#define IDC_PLACEMENT_COMBO
#define IDC_BROWSE_BUTTON
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage *image, GUID *format)
GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT *numEncoders, UINT *size)
GpStatus WINGDIPAPI GdipGetImageDecodersSize(UINT *numDecoders, UINT *size)
GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage *image, GDIPCONST WCHAR *filename, GDIPCONST CLSID *clsidEncoder, GDIPCONST EncoderParameters *encoderParams)
GpStatus WINGDIPAPI GdipDisposeImage(GpImage *image)
GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR *filename, GpImage **image)
GpStatus WINGDIPAPI GdipGetImageEncoders(UINT numEncoders, UINT size, ImageCodecInfo *encoders)
GpStatus WINGDIPAPI GdipGetImageDecoders(UINT numDecoders, UINT size, ImageCodecInfo *decoders)
BOOL WINAPI FindClose(HANDLE hFindFile)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP int __cdecl _wcsicmp(const wchar_t *, const wchar_t *)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
HRESULT WINAPI SHGetFolderPathW(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Status WINAPI GdiplusStartup(ULONG_PTR *token, const struct GdiplusStartupInput *input, struct GdiplusStartupOutput *output)
void WINAPI GdiplusShutdown(ULONG_PTR)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
static float(__cdecl *square_half_float)(float x
struct _PSP * HPROPSHEETPAGE
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
#define FILE_ATTRIBUTE_HIDDEN
#define REG_OPTION_NON_VOLATILE
#define MAKEINTRESOURCE(i)
#define PropSheet_Changed(d, w)
#define CreatePropertySheetPage
_Out_opt_ int _Out_opt_ int * cy
#define ListView_InsertItem(hwnd, pitem)
#define ListView_SetItemState(hwndLV, i, data, mask)
#define ListView_InsertColumn(hwnd, iCol, pcol)
#define ListView_SetImageList(hwnd, himl, iImageList)
#define ListView_GetImageList(hwnd, iImageList)
struct tagNMLISTVIEW * LPNMLISTVIEW
#define ImageList_AddIcon(himl, hicon)
#define ListView_FindItem(hwnd, iStart, plvfi)
#define IsEqualGUID(rguid1, rguid2)
#define PathRemoveExtension
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT sizeofpsfi, UINT flags)
#define SHGFI_DISPLAYNAME
#define CSIDL_FLAG_CREATE
#define CSIDL_LOCAL_APPDATA
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
TCHAR szFilename[MAX_PATH]
BOOL bClrBackgroundChanged
COLORREF custom_colors[16]
PDIBITMAP pWallpaperBitmap
BackgroundItem backgroundItems[MAX_BACKGROUNDS]
CHAR szDisplayName[MAX_PATH]
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
BOOL WINAPI GdiTransparentBlt(HDC hdcDst, int xDst, int yDst, int wDst, int hDst, HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, UINT crTransparent)
#define success(from, fromstr, to, tostr)
#define GetWindowsDirectory
#define ExpandEnvironmentStrings
#define SetDlgMsgResult(hwnd, msg, result)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
int WINAPI SetStretchBltMode(_In_ HDC, _In_ int)
int WINAPI StretchDIBits(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ const VOID *, _In_ const BITMAPINFO *, _In_ UINT, _In_ DWORD)
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
#define SPI_SETDESKWALLPAPER
BOOL WINAPI SetSysColors(_In_ int cElements, _In_reads_(cElements) CONST INT *lpaElements, _In_reads_(cElements) CONST COLORREF *lpaRgbValues)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define SPIF_UPDATEINIFILE
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
struct tagNMHDR * LPNMHDR
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define MAKEINTRESOURCEW(i)
#define SystemParametersInfo
#define SendDlgItemMessage
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI DestroyIcon(_In_ HICON)