9 #define WIN32_NO_STATUS 11 #define COM_NO_WINDOWS_H 51 10, 25, 50, 100, 200, 400, 800, 1600
54 #define MIN_ZOOM ZoomSteps[0] 55 #define MAX_ZOOM ZoomSteps[_countof(ZoomSteps)-1] 64 #define DEFINE_BTN_INFO(_name) \ 65 { TBICON_##_name, IDC_##_name, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 } 67 #define DEFINE_BTN_SEPARATOR \ 68 { 15, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0 } 94 #define DEFINE_BTN_CONFIG(_name) { IDB_##_name, IDS_TOOLTIP_##_name } 121 #define ANIME_TIMER_ID 9999 203 guid = FrameDimensionPage;
247 BOOL bEnableZoomIn, bEnableZoomOut;
256 bEnableZoomIn = bEnableZoomOut =
TRUE;
260 bEnableZoomIn =
FALSE;
264 bEnableZoomOut =
FALSE;
317 UINT ImageWidth, ImageHeight, NewZoom;
329 if (ImageHeight *
Rect.right <
Rect.bottom * ImageWidth)
331 if (
Rect.right < ImageWidth)
334 NewZoom = (
Rect.right * 100) / ImageWidth;
344 if (
Rect.bottom < ImageHeight)
347 NewZoom = (
Rect.bottom * 100) / ImageHeight;
364 DPRINT1(
"File %s not found!\n", szOpenFileName);
372 DPRINT1(
"GdipLoadImageFromFile() failed\n");
377 if (szOpenFileName && szOpenFileName[0])
404 DPRINT1(
"malloc() failed in pSaveImageAs()\n");
416 sizeRemain = sizeRemain + (((
wcslen(codecInfo[
j].FormatDescription) + (
wcslen(codecInfo[
j].FilenameExtension) * 2) + 5) *
sizeof(
WCHAR)));
420 sizeRemain = sizeRemain + (
sizeof(
WCHAR) * 2);
422 szFilterMask =
malloc(sizeRemain);
425 DPRINT1(
"cannot allocate memory for filter mask in pSaveImageAs()");
430 ZeroMemory(szSaveFileName,
sizeof(szSaveFileName));
445 StringCbPrintfExW(
c, sizeRemain, &
c, &sizeRemain, 0,
L"%ls (%ls)", codecInfo[
j].FormatDescription, codecInfo[
j].FilenameExtension);
449 sizeRemain -=
sizeof(*c);
455 sizeRemain -=
sizeof(*c);
470 DPRINT1(
"FIXME: save animation\n");
473 DPRINT1(
"GdipSaveImageToFile() failed\n");
483 DPRINT1(
"GdipSaveImageToFile() failed\n");
508 WCHAR szTitleBuf[800];
531 L"%ls%ls%ls", szResStr,
L" - ", pchFileTitle);
559 StringCbCopyW(szSearchPath,
sizeof(szSearchPath), szFirstFile);
566 DPRINT1(
"malloc() failed in pLoadFileList()\n");
575 DPRINT1(
"malloc() failed in pLoadFileList()\n");
584 StringCbCopyW(szFileTypes,
sizeof(szFileTypes), codecInfo[
j].FilenameExtension);
586 extension =
wcstok(szFileTypes,
L";");
587 while (extension !=
NULL)
602 currentNode = conductor;
608 if (!conductor->
Next)
610 DPRINT1(
"malloc() failed in pLoadFileList()\n");
613 root->Prev = conductor;
620 conductor->
Next->Prev = conductor;
621 conductor = conductor->
Next;
634 if (currentNode ==
NULL)
637 currentNode = conductor;
641 conductor = conductor->
Prev;
647 root->Prev = conductor;
648 conductor = currentNode;
684 "\x28\x00\x00\x00\x10\x00\x00\x00\x10\x00\x00\x00\x01\x00\x04\x00\x00\x00" 685 "\x00\x00\x80\x00\x00\x00\x23\x2E\x00\x00\x23\x2E\x00\x00\x10\x00\x00\x00" 686 "\x00\x00\x00\x00\x99\x99\x99\x00\xCC\xCC\xCC\x00\x00\x00\x00\x00\x00\x00" 687 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" 688 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" 689 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x11\x11\x11" 690 "\x00\x00\x00\x00\x11\x11\x11\x11\x00\x00\x00\x00\x11\x11\x11\x11\x00\x00" 691 "\x00\x00\x11\x11\x11\x11\x00\x00\x00\x00\x11\x11\x11\x11\x00\x00\x00\x00" 692 "\x11\x11\x11\x11\x00\x00\x00\x00\x11\x11\x11\x11\x00\x00\x00\x00\x11\x11" 693 "\x11\x11\x00\x00\x00\x00\x00\x00\x00\x00\x11\x11\x11\x11\x00\x00\x00\x00" 694 "\x11\x11\x11\x11\x00\x00\x00\x00\x11\x11\x11\x11\x00\x00\x00\x00\x11\x11" 695 "\x11\x11\x00\x00\x00\x00\x11\x11\x11\x11\x00\x00\x00\x00\x11\x11\x11\x11" 696 "\x00\x00\x00\x00\x11\x11\x11\x11\x00\x00\x00\x00\x11\x11\x11\x11";
705 UINT ImageWidth, ImageHeight;
706 INT ZoomedWidth, ZoomedHeight,
x,
y;
719 DPRINT1(
"BeginPaint() failed\n");
726 DPRINT1(
"GdipCreateFromHDC() failed\n");
755 x = (
rect.right - ZoomedWidth) / 2;
756 y = (
rect.bottom - ZoomedHeight) / 2;
763 margin.
top =
y + ZoomedHeight + 1;
768 margin.
bottom =
y + ZoomedHeight + 1;
772 margin.
left =
x + ZoomedWidth + 1;
776 DPRINT(
"x = %d, y = %d, ImageWidth = %u, ImageHeight = %u\n");
777 DPRINT(
"rect.right = %ld, rect.bottom = %ld\n",
rect.right,
rect.bottom);
778 DPRINT(
"ZoomPercents = %d, ZoomedWidth = %d, ZoomedHeight = %d\n",
981 DPRINT1(
"ImageView_Delete: unimplemented.\n");
994 DPRINT1(
"ImageView_Modify: failed to get full path name.\n");
999 if (pszPathName ==
NULL)
1001 DPRINT1(
"HeapAlloc() failed in ImageView_Modify()\n");
1007 sei.
cbSize =
sizeof(sei);
1011 sei.
lpFile = pszPathName;
1019 DPRINT1(
"ImageView_Modify: ShellExecuteExW() failed with code %08X\n", (
int)
GetLastError());
1053 DPRINT1(
"IDC_BEST_FIT unimplemented\n");
1061 DPRINT1(
"IDC_SLIDE_SHOW unimplemented\n");
1115 switch (pnmhdr->
code)
1176 DPRINT1(
"Warning, CoInitializeEx failed with code=%08X\n", (
int)hComRes);
1198 WndClass.lpszClassName =
L"shimgvw_window";
1215 StringCbCopyW(szInitialFile,
sizeof(szInitialFile), szFileName);
1292 DPRINT(
"ImageView_PrintTo() not implemented\n");
1298 DPRINT(
"ImageView_PrintToA() not implemented\n");
1304 DPRINT(
"ImageView_PrintToW() not implemented\n");
VOID WINAPI ImageView_PrintToW(HWND hwnd, HINSTANCE hInst, LPCWSTR path, int nShow)
HGDIOBJ WINAPI GetStockObject(_In_ int)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
static void UpdateZoom(UINT NewZoom)
SHIMGVW_SETTINGS shiSettings
GpStatus WINGDIPAPI GdipGetImageEncoders(UINT numEncoders, UINT size, ImageCodecInfo *encoders)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath)
#define TB_BUTTONSTRUCTSIZE
#define PropertyTagLoopCount
GpStatus WINGDIPAPI GdipImageGetFrameCount(GpImage *image, GDIPCONST GUID *dimensionID, UINT *count)
static void ResetZoom(void)
struct _WINDOWPLACEMENT WINDOWPLACEMENT
GpStatus WINGDIPAPI GdipLoadImageFromFile(GDIPCONST WCHAR *filename, GpImage **image)
#define TBSTYLE_EX_HIDECLIPPEDBUTTONS
LONG WINAPI ImageView_CreateWindow(HWND hwnd, LPCWSTR szFileName)
BOOL WINAPI Rectangle(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
GpStatus WINGDIPAPI GdipGetImageWidth(GpImage *image, UINT *width)
#define DLL_THREAD_ATTACH
#define HKEY_CURRENT_USER
TW_UINT32 TW_UINT16 TW_UINT16 MSG
GpStatus WINGDIPAPI GdipGetPropertyItemSize(GpImage *image, PROPID propid, UINT *size)
VOID WINAPI ImageView_FullscreenA(HWND hwnd, HINSTANCE hInst, LPCSTR path, int nShow)
BOOL WINAPI UpdateWindow(_In_ HWND)
_Check_return_ _CRTIMP wchar_t *__cdecl wcstok(_Inout_opt_z_ wchar_t *_Str, _In_z_ const wchar_t *_Delim)
#define DEFINE_BTN_SEPARATOR
VOID WINAPI ImageView_Fullscreen(HWND hwnd, HINSTANCE hInst, LPCWSTR path, int nShow)
static const TB_BUTTON_CONFIG BtnConfig[]
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
GLint GLint GLint GLint GLint x
#define DLL_PROCESS_ATTACH
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
#define WPF_RESTORETOMAXIMIZED
GpStatus WINGDIPAPI GdipGetImageFlags(GpImage *image, UINT *flags)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
struct SHIMGVW_FILENODE_INTERNAL * Next
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
static BOOL ImageView_LoadSettings(VOID)
BOOL Anime_Step(DWORD *pdwDelay)
GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage *image, GDIPCONST WCHAR *filename, GDIPCONST CLSID *clsidEncoder, GDIPCONST EncoderParameters *encoderParams)
LRESULT CALLBACK ImageView_DispWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
VOID WINAPI ImageView_PrintTo(HWND hwnd, HINSTANCE hInst, LPCWSTR path, int nShow)
static const UINT ZoomSteps[]
static BOOL ImageView_CreateToolBar(HWND hwnd)
static IN DWORD IN LPVOID lpvReserved
BOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW ofn)
struct tagNMHDR * LPNMHDR
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
GpStatus WINGDIPAPI GdipGetImageDecodersSize(UINT *numDecoders, UINT *size)
GpStatus WINGDIPAPI GdipImageRotateFlip(GpImage *image, RotateFlipType type)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
#define ICC_WIN95_CLASSES
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
void WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv)
static LRESULT ImageView_Modify(HWND hwnd)
GpStatus WINGDIPAPI GdipGetImageHeight(GpImage *image, UINT *height)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mode)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
#define DEFINE_BTN_INFO(_name)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
LRESULT CALLBACK ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
static VOID pPrintImage(HWND hwnd)
_Out_opt_ int _Out_opt_ int * cy
HACCEL WINAPI LoadAcceleratorsW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
DWORD Anime_GetFrameDelay(UINT nFrameIndex)
static SHIMGVW_FILENODE * pBuildFileList(LPWSTR szFirstFile)
#define PropertyTagFrameDelay
STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat,...)
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
GpStatus WINGDIPAPI GdipGetImageRawFormat(GpImage *image, GUID *format)
GpStatus WINGDIPAPI GdipGetImageDecoders(UINT numDecoders, UINT size, ImageCodecInfo *decoders)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
static VOID ImageView_UpdateWindow(HWND hwnd)
BOOL WINAPI GetWindowPlacement(_In_ HWND, _Inout_ WINDOWPLACEMENT *)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
static BOOL Anime_LoadInfo(void)
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 GLint GLint j
SHIMGVW_FILENODE * currentFile
#define REG_OPTION_NON_VOLATILE
static void Anime_FreeInfo(void)
GpStatus WINGDIPAPI GdipImageSelectActiveFrame(GpImage *image, GDIPCONST GUID *dimensionID, UINT frame)
static VOID pLoadImageFromNode(SHIMGVW_FILENODE *node, HWND hwnd)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
GpStatus WINGDIPAPI GdipDrawImageRectI(GpGraphics *graphics, GpImage *image, INT x, INT y, INT width, INT height)
GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics *graphics, InterpolationMode mode)
static void ZoomInOrOut(BOOL bZoomIn)
void WINAPI GdiplusShutdown(ULONG_PTR)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
static LRESULT ImageView_Delete(HWND hwnd)
Status WINAPI GdiplusStartup(ULONG_PTR *token, const struct GdiplusStartupInput *input, struct GdiplusStartupOutput *output)
GpStatus WINGDIPAPI GdipGetPropertyItem(GpImage *image, PROPID propid, UINT size, PropertyItem *buffer)
VOID WINAPI ImageView_FullscreenW(HWND hwnd, HINSTANCE hInst, LPCWSTR path, int nShow)
static ULONG_PTR gdiplusToken
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
int WINAPI TranslateAcceleratorW(_In_ HWND, _In_ HACCEL, _In_ LPMSG)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
static VOID ImageView_OnMouseWheel(HWND hwnd, INT x, INT y, INT zDelta, UINT fwKeys)
static VOID pFreeFileList(SHIMGVW_FILENODE *root)
PropertyItem * m_pDelayItem
static VOID ImageView_OnSize(HWND hwnd, UINT state, INT cx, INT cy)
GpStatus WINGDIPAPI GdipGetImageEncodersSize(UINT *numEncoders, UINT *size)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
static void Anime_SetFrameIndex(UINT nFrameIndex)
GpStatus WINGDIPAPI GdipDisposeImage(GpImage *image)
static VOID ImageView_DrawImage(HWND hwnd)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
static HBRUSH CreateCheckerBoardBrush(HDC hdc)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
BOOL WINAPI DestroyAcceleratorTable(_In_ HACCEL)
BOOL WINAPI DllMain(IN HINSTANCE hinstDLL, IN DWORD dwReason, IN LPVOID lpvReserved)
static void ImageView_OnTimer(HWND hwnd)
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
struct SHIMGVW_FILENODE_INTERNAL * Prev
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define OFN_OVERWRITEPROMPT
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
VOID WINAPI PathUnquoteSpacesW(LPWSTR lpszPath)
GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics)
STRSAFEAPI StringCbPrintfExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat,...)
BOOL WINAPI IsZoomed(_In_ HWND)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
GpStatus WINGDIPAPI GdipImageGetFrameDimensionsCount(GpImage *image, UINT *count)
GLint GLint GLint GLint GLint GLint y
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define MultiByteToWideChar
static VOID EnableToolBarButtons(BOOL bEnable)
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WS_OVERLAPPEDWINDOW
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
static void pSaveImageAs(HWND hwnd)
GpStatus WINGDIPAPI GdipImageGetFrameDimensionsList(GpImage *image, GUID *dimensionIDs, UINT count)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
static VOID ImageView_InitControls(HWND hwnd)
INT WINAPI ImageList_AddMasked(HIMAGELIST himl, HBITMAP hBitmap, COLORREF clrMask)
#define MAKEINTRESOURCEW(i)
static const TBBUTTON Buttons[]
static VOID ImageView_SaveSettings(HWND hwnd)
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
LPWSTR WINAPI PathCombineW(LPWSTR lpszDest, LPCWSTR lpszDir, LPCWSTR lpszFile)
HBRUSH WINAPI CreateDIBPatternBrushPt(_In_ const VOID *pvPackedDIB, _In_ UINT uUsage)
#define DEFINE_BTN_CONFIG(_name)
#define HeapFree(x, y, z)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define RegCloseKey(hKey)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
VOID WINAPI ImageView_PrintToA(HWND hwnd, HINSTANCE hInst, LPCSTR path, int nShow)
#define TB_SETEXTENDEDSTYLE
static void pLoadImage(LPCWSTR szOpenFileName)
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)