https://git.reactos.org/?p=reactos.git;a=commitdiff;h=5a2c451696b0fdefe4b63…
commit 5a2c451696b0fdefe4b6381f4941b9347ae4199c
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Sun Dec 10 08:20:17 2023 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Sun Dec 10 08:20:17 2023 +0900
[SHIMGVW] Some minor refactoring (#6139)
Improve human readability. Reduce code amount.
CORE-19358
---
dll/win32/shimgvw/shimgvw.c | 296 +++++++++++++++++++-------------------------
1 file changed, 128 insertions(+), 168 deletions(-)
diff --git a/dll/win32/shimgvw/shimgvw.c b/dll/win32/shimgvw/shimgvw.c
index 86dec69785b..7a73eeaccb3 100644
--- a/dll/win32/shimgvw/shimgvw.c
+++ b/dll/win32/shimgvw/shimgvw.c
@@ -11,8 +11,6 @@
#define COM_NO_WINDOWS_H
#define INITGUID
-#include <stdarg.h>
-
#include <windef.h>
#include <winbase.h>
#include <winnls.h>
@@ -24,7 +22,6 @@
#include <commctrl.h>
#include <commdlg.h>
#include <gdiplus.h>
-#include <tchar.h>
#include <shlobj.h>
#include <strsafe.h>
#include <shlwapi.h>
@@ -66,7 +63,7 @@ typedef struct {
{ TBICON_##_name, IDC_##_name, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }
#define DEFINE_BTN_SEPARATOR \
- { 15, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0 }
+ { -1, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0 }
/* ToolBar Buttons */
static const TBBUTTON s_Buttons[] =
@@ -136,11 +133,9 @@ static void Anime_FreeInfo(void)
static BOOL Anime_LoadInfo(void)
{
- GUID *dims;
UINT nDimCount = 0;
UINT cbItem;
UINT result;
- PropertyItem *pItem;
Anime_FreeInfo();
KillTimer(g_hDispWnd, ANIME_TIMER_ID);
@@ -151,7 +146,7 @@ static BOOL Anime_LoadInfo(void)
GdipImageGetFrameDimensionsCount(g_pImage, &nDimCount);
if (nDimCount)
{
- dims = (GUID *)calloc(nDimCount, sizeof(GUID));
+ GUID *dims = (GUID *)calloc(nDimCount, sizeof(GUID));
if (dims)
{
GdipImageGetFrameDimensionsList(g_pImage, dims, nDimCount);
@@ -175,7 +170,7 @@ static BOOL Anime_LoadInfo(void)
cbItem = result;
if (cbItem)
{
- pItem = (PropertyItem *)malloc(cbItem);
+ PropertyItem *pItem = (PropertyItem *)malloc(cbItem);
if (pItem)
{
if (GdipGetPropertyItem(g_pImage, PropertyTagLoopCount, cbItem, pItem) ==
Ok)
@@ -254,27 +249,17 @@ static void UpdateZoom(UINT NewZoom, BOOL bEnableBestFit, BOOL
bEnableRealSize)
s_nZoomPercents = NewZoom;
/* Check if a zoom button of the toolbar must be grayed */
- bEnableZoomIn = bEnableZoomOut = TRUE;
+ bEnableZoomIn = (NewZoom < MAX_ZOOM);
+ bEnableZoomOut = (NewZoom > MIN_ZOOM);
- if (NewZoom >= MAX_ZOOM)
- {
- bEnableZoomIn = FALSE;
- }
- else if (NewZoom <= MIN_ZOOM)
- {
- bEnableZoomOut = FALSE;
- }
-
- /* Update the state of the zoom buttons */
+ /* Update toolbar buttons */
SendMessageW(g_hToolBar, TB_ENABLEBUTTON, IDC_ZOOM_OUT, bEnableZoomOut);
SendMessageW(g_hToolBar, TB_ENABLEBUTTON, IDC_ZOOM_IN, bEnableZoomIn);
+ SendMessageW(g_hToolBar, TB_ENABLEBUTTON, IDC_BEST_FIT, bEnableBestFit);
+ SendMessageW(g_hToolBar, TB_ENABLEBUTTON, IDC_REAL_SIZE, bEnableRealSize);
/* Redraw the display window */
InvalidateRect(g_hDispWnd, NULL, FALSE);
-
- /* Update toolbar buttons */
- SendMessageW(g_hToolBar, TB_ENABLEBUTTON, IDC_BEST_FIT, bEnableBestFit);
- SendMessageW(g_hToolBar, TB_ENABLEBUTTON, IDC_REAL_SIZE, bEnableRealSize);
}
static void ZoomInOrOut(BOOL bZoomIn)
@@ -292,10 +277,7 @@ static void ZoomInOrOut(BOOL bZoomIn)
if (s_nZoomPercents < s_ZoomSteps[i])
break;
}
- if (i == _countof(s_ZoomSteps))
- NewZoom = MAX_ZOOM;
- else
- NewZoom = s_ZoomSteps[i];
+ NewZoom = ((i >= _countof(s_ZoomSteps)) ? MAX_ZOOM : s_ZoomSteps[i]);
}
else /* zoom out */
{
@@ -306,10 +288,7 @@ static void ZoomInOrOut(BOOL bZoomIn)
if (s_ZoomSteps[i] < s_nZoomPercents)
break;
}
- if (i < 0)
- NewZoom = MIN_ZOOM;
- else
- NewZoom = s_ZoomSteps[i];
+ NewZoom = ((i < 0) ? MIN_ZOOM : s_ZoomSteps[i]);
}
/* Update toolbar and refresh screen */
@@ -534,8 +513,7 @@ pLoadImageFromNode(SHIMGVW_FILENODE *node, HWND hwnd)
pchFileTitle = PathFindFileNameW(node->FileName);
if (pchFileTitle && *pchFileTitle)
{
- StringCbPrintfW(szTitleBuf, sizeof(szTitleBuf),
- L"%ls%ls%ls", szResStr, L" - ",
pchFileTitle);
+ StringCbPrintfW(szTitleBuf, sizeof(szTitleBuf), L"%ls - %ls", szResStr,
pchFileTitle);
SetWindowTextW(hwnd, szTitleBuf);
}
else
@@ -607,7 +585,7 @@ pBuildFileList(LPWSTR szFirstFile)
// compare the name of the requested file with the one currently
found.
// if the name matches, the current node is returned by the
function.
- if (wcscmp(szFirstFile, conductor->FileName) == 0)
+ if (_wcsicmp(szFirstFile, conductor->FileName) == 0)
{
currentNode = conductor;
}
@@ -681,13 +659,6 @@ pFreeFileList(SHIMGVW_FILENODE *root)
}
}
-static VOID
-ImageView_UpdateWindow(HWND hwnd)
-{
- InvalidateRect(hwnd, NULL, FALSE);
- UpdateWindow(hwnd);
-}
-
static HBRUSH CreateCheckerBoardBrush(HDC hdc)
{
static const CHAR pattern[] =
@@ -823,28 +794,41 @@ ImageView_DrawImage(HWND hwnd)
EndPaint(hwnd, &ps);
}
-static BOOL
-ImageView_LoadSettings(VOID)
+static VOID
+ImageView_ResetSettings(VOID)
{
- HKEY hKey;
- DWORD dwSize;
- LONG nError;
-
g_Settings.Maximized = FALSE;
g_Settings.X = CW_USEDEFAULT;
g_Settings.Y = CW_USEDEFAULT;
g_Settings.Width = 520;
g_Settings.Height = 400;
+}
+
+static BOOL
+ImageView_LoadSettings(VOID)
+{
+ HKEY hKey;
+ DWORD dwSize;
+ LSTATUS nError;
nError = RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS\\shimgvw", 0,
KEY_READ, &hKey);
- if (nError)
+ if (nError != ERROR_SUCCESS)
+ {
+ ImageView_ResetSettings();
return FALSE;
+ }
dwSize = sizeof(g_Settings);
nError = RegQueryValueExW(hKey, L"Settings", NULL, NULL,
(LPBYTE)&g_Settings, &dwSize);
RegCloseKey(hKey);
- return !nError;
+ if (nError != ERROR_SUCCESS || dwSize != sizeof(g_Settings))
+ {
+ ImageView_ResetSettings();
+ return FALSE;
+ }
+
+ return TRUE;
}
static VOID
@@ -853,6 +837,7 @@ ImageView_SaveSettings(HWND hwnd)
WINDOWPLACEMENT wp;
HKEY hKey;
RECT *prc;
+ LSTATUS nError;
wp.length = sizeof(WINDOWPLACEMENT);
GetWindowPlacement(hwnd, &wp);
@@ -864,12 +849,13 @@ ImageView_SaveSettings(HWND hwnd)
g_Settings.Height = prc->bottom - prc->top;
g_Settings.Maximized = IsZoomed(hwnd);
- if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\ReactOS\\shimgvw"), 0,
NULL,
- REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS)
- {
- RegSetValueEx(hKey, _T("Settings"), 0, REG_BINARY,
(LPBYTE)&g_Settings, sizeof(SHIMGVW_SETTINGS));
- RegCloseKey(hKey);
- }
+ nError = RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS\\shimgvw",
+ 0, NULL, 0, KEY_WRITE, NULL, &hKey, NULL);
+ if (nError != ERROR_SUCCESS)
+ return;
+
+ RegSetValueExW(hKey, L"Settings", 0, REG_BINARY, (LPBYTE)&g_Settings,
sizeof(g_Settings));
+ RegCloseKey(hKey);
}
static BOOL
@@ -883,14 +869,13 @@ ImageView_CreateToolBar(HWND hwnd)
{
HIMAGELIST hImageList;
- SendMessageW(g_hToolBar, TB_SETEXTENDEDSTYLE,
- 0, TBSTYLE_EX_HIDECLIPPEDBUTTONS);
+ SendMessageW(g_hToolBar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_HIDECLIPPEDBUTTONS);
- SendMessageW(g_hToolBar, TB_BUTTONSTRUCTSIZE,
- sizeof(s_Buttons[0]), 0);
+ SendMessageW(g_hToolBar, TB_BUTTONSTRUCTSIZE, sizeof(s_Buttons[0]), 0);
hImageList = ImageList_Create(TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, ILC_MASK |
ILC_COLOR24, 1, 1);
- if (hImageList == NULL) return FALSE;
+ if (hImageList == NULL)
+ return FALSE;
for (UINT n = 0; n < _countof(s_ButtonConfig); n++)
{
@@ -923,9 +908,9 @@ static void ImageView_OnTimer(HWND hwnd)
}
LRESULT CALLBACK
-ImageView_DispWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
+ImageView_DispWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
- switch (Message)
+ switch (uMsg)
{
case WM_PAINT:
{
@@ -942,7 +927,7 @@ ImageView_DispWndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam)
break;
}
}
- return CallWindowProcW(g_fnPrevProc, hwnd, Message, wParam, lParam);
+ return CallWindowProcW(g_fnPrevProc, hwnd, uMsg, wParam, lParam);
}
static VOID
@@ -979,25 +964,15 @@ ImageView_OnSize(HWND hwnd, UINT state, INT cx, INT cy)
MoveWindow(g_hDispWnd, 0, 0, cx, cy - (rc.bottom - rc.top), TRUE);
- /* is it maximized or restored? */
- if (state == SIZE_MAXIMIZED || state == SIZE_RESTORED)
- {
- /* reset zoom */
+ if (!IsIconic(hwnd)) /* Is it not minimized? */
ResetZoom();
- }
}
-static LRESULT
+static VOID
ImageView_Delete(HWND hwnd)
{
WCHAR szCurFile[MAX_PATH + 1], szNextFile[MAX_PATH];
- SHFILEOPSTRUCT FileOp = { hwnd, FO_DELETE };
-
- if (g_pImage)
- {
- GdipDisposeImage(g_pImage);
- g_pImage = NULL;
- }
+ SHFILEOPSTRUCTW FileOp = { hwnd, FO_DELETE };
/* FileOp.pFrom must be double-null-terminated */
GetFullPathNameW(g_pCurrentFile->FileName, _countof(szCurFile) - 1, szCurFile,
NULL);
@@ -1007,71 +982,59 @@ ImageView_Delete(HWND hwnd)
GetFullPathNameW(g_pCurrentFile->Next->FileName, _countof(szNextFile),
szNextFile, NULL);
szNextFile[_countof(szNextFile) - 1] = UNICODE_NULL; /* Avoid buffer overrun */
+ /* FIXME: Our GdipLoadImageFromFile locks the image file */
+ if (g_pImage)
+ {
+ GdipDisposeImage(g_pImage);
+ g_pImage = NULL;
+ }
+
+ /* Confirm file deletion and delete if allowed */
FileOp.pFrom = szCurFile;
FileOp.fFlags = FOF_ALLOWUNDO;
- if (SHFileOperation(&FileOp) != 0)
- return 0;
+ if (SHFileOperationW(&FileOp) != 0)
+ {
+ DPRINT("ImageView_Delete: SHFileOperationW() failed or canceled\n");
- pFreeFileList(g_pCurrentFile);
- g_pCurrentFile = NULL;
+ pLoadImage(szCurFile);
+ return;
+ }
+ /* Reload the file list and go next file */
+ pFreeFileList(g_pCurrentFile);
g_pCurrentFile = pBuildFileList(szNextFile);
pLoadImageFromNode(g_pCurrentFile, hwnd);
-
- return 1;
}
-static LRESULT
+static VOID
ImageView_Modify(HWND hwnd)
{
- int nChars = GetFullPathNameW(g_pCurrentFile->FileName, 0, NULL, NULL);
- LPWSTR pszPathName;
+ WCHAR szPathName[MAX_PATH];
SHELLEXECUTEINFOW sei;
- if (!nChars)
- {
- DPRINT1("ImageView_Modify: failed to get full path name.\n");
- return 1;
- }
-
- pszPathName = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, nChars * sizeof(WCHAR));
- if (pszPathName == NULL)
- {
- DPRINT1("HeapAlloc() failed in ImageView_Modify()\n");
- return 1;
- }
-
- GetFullPathNameW(g_pCurrentFile->FileName, nChars, pszPathName, NULL);
+ GetFullPathNameW(g_pCurrentFile->FileName, _countof(szPathName), szPathName,
NULL);
+ szPathName[_countof(szPathName) - 1] = UNICODE_NULL; /* Avoid buffer overrun */
+ ZeroMemory(&sei, sizeof(sei));
sei.cbSize = sizeof(sei);
- sei.fMask = 0;
- sei.hwnd = NULL;
sei.lpVerb = L"edit";
- sei.lpFile = pszPathName;
- sei.lpParameters = NULL;
- sei.lpDirectory = NULL;
+ sei.lpFile = szPathName;
sei.nShow = SW_SHOWNORMAL;
- sei.hInstApp = NULL;
-
if (!ShellExecuteExW(&sei))
{
- DPRINT1("ImageView_Modify: ShellExecuteExW() failed with code %08X\n",
(int)GetLastError());
+ DPRINT1("ImageView_Modify: ShellExecuteExW() failed with code %ld\n",
GetLastError());
}
-
- HeapFree(GetProcessHeap(), 0, pszPathName);
-
- return 0;
}
LRESULT CALLBACK
-ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
+ImageView_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
- switch (Message)
+ switch (uMsg)
{
case WM_CREATE:
{
ImageView_InitControls(hwnd);
- return 0L;
+ break;
}
case WM_COMMAND:
@@ -1094,7 +1057,7 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam)
case IDC_REAL_SIZE:
UpdateZoom(100, TRUE, FALSE);
- return 0;
+ break;
case IDC_SLIDE_SHOW:
DPRINT1("IDC_SLIDE_SHOW unimplemented\n");
@@ -1120,7 +1083,7 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam)
if (g_pImage)
{
GdipImageRotateFlip(g_pImage, Rotate270FlipNone);
- ImageView_UpdateWindow(hwnd);
+ InvalidateRect(hwnd, NULL, FALSE);
}
break;
@@ -1128,23 +1091,24 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam)
if (g_pImage)
{
GdipImageRotateFlip(g_pImage, Rotate90FlipNone);
- ImageView_UpdateWindow(hwnd);
+ InvalidateRect(hwnd, NULL, FALSE);
}
break;
case IDC_DELETE:
- return ImageView_Delete(hwnd);
+ ImageView_Delete(hwnd);
+ break;
case IDC_MODIFY:
- return ImageView_Modify(hwnd);
+ ImageView_Modify(hwnd);
+ break;
}
}
break;
case WM_MOUSEWHEEL:
- ImageView_OnMouseWheel(hwnd,
- GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam),
- (SHORT)HIWORD(wParam), (UINT)LOWORD(wParam));
+ ImageView_OnMouseWheel(hwnd, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam),
+ (SHORT)HIWORD(wParam), (UINT)LOWORD(wParam));
break;
case WM_NOTIFY:
@@ -1153,15 +1117,12 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam)
switch (pnmhdr->code)
{
- case TTN_GETDISPINFO:
+ case TTN_GETDISPINFOW:
{
- LPTOOLTIPTEXTW lpttt;
-
- lpttt = (LPTOOLTIPTEXTW)lParam;
+ LPTOOLTIPTEXTW lpttt = (LPTOOLTIPTEXTW)lParam;
lpttt->hinst = g_hInstance;
-
lpttt->lpszText =
MAKEINTRESOURCEW(s_ButtonConfig[lpttt->hdr.idFrom - IDC_TOOL_BASE].ids);
- return 0;
+ break;
}
}
break;
@@ -1171,12 +1132,12 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam)
MINMAXINFO *pMMI = (MINMAXINFO*)lParam;
pMMI->ptMinTrackSize.x = 350;
pMMI->ptMinTrackSize.y = 290;
- return 0;
+ break;
}
case WM_SIZE:
{
ImageView_OnSize(hwnd, (UINT)wParam, GET_X_LPARAM(lParam),
GET_Y_LPARAM(lParam));
- return 0;
+ break;
}
case WM_DESTROY:
{
@@ -1185,9 +1146,13 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam)
PostQuitMessage(0);
break;
}
+ default:
+ {
+ return DefWindowProcW(hwnd, uMsg, wParam, lParam);
+ }
}
- return DefWindowProcW(hwnd, Message, wParam, lParam);
+ return 0;
}
LONG WINAPI
@@ -1196,34 +1161,30 @@ ImageView_CreateWindow(HWND hwnd, LPCWSTR szFileName)
struct GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
WNDCLASSW WndClass = {0};
- WCHAR szBuf[512];
+ WCHAR szBuf[256];
WCHAR szInitialFile[MAX_PATH];
HWND hMainWnd;
MSG msg;
- HACCEL hKbdAccel;
- HRESULT hComRes;
+ HACCEL hAccel;
+ HRESULT hrCoInit;
INITCOMMONCONTROLSEX Icc = { .dwSize = sizeof(Icc), .dwICC = ICC_WIN95_CLASSES };
InitCommonControlsEx(&Icc);
- hComRes = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
- if (hComRes != S_OK && hComRes != S_FALSE)
- {
- DPRINT1("Warning, CoInitializeEx failed with code=%08X\n",
(int)hComRes);
- }
+ /* Initialize COM */
+ hrCoInit = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
+ if (FAILED(hrCoInit))
+ DPRINT1("Warning, CoInitializeEx failed with code=%08X\n",
(int)hrCoInit);
ImageView_LoadSettings();
- // Initialize GDI+
- gdiplusStartupInput.GdiplusVersion = 1;
- gdiplusStartupInput.DebugEventCallback = NULL;
- gdiplusStartupInput.SuppressBackgroundThread = FALSE;
- gdiplusStartupInput.SuppressExternalCodecs = FALSE;
-
+ /* Initialize GDI+ */
+ ZeroMemory(&gdiplusStartupInput, sizeof(gdiplusStartupInput));
+ gdiplusStartupInput.GdiplusVersion = 1;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
pLoadImage(szFileName);
- // Create the window
+ /* Register window classes */
WndClass.lpszClassName = WC_SHIMGVW;
WndClass.lpfnWndProc = ImageView_WndProc;
WndClass.hInstance = g_hInstance;
@@ -1231,17 +1192,15 @@ ImageView_CreateWindow(HWND hwnd, LPCWSTR szFileName)
WndClass.hIcon = LoadIconW(g_hInstance, MAKEINTRESOURCEW(IDI_APP_ICON));
WndClass.hCursor = LoadCursorW(NULL, (LPCWSTR)IDC_ARROW);
WndClass.hbrBackground = NULL; /* less flicker */
+ if (!RegisterClassW(&WndClass))
+ return -1;
- if (!RegisterClassW(&WndClass)) return -1;
-
+ /* Create the main window */
LoadStringW(g_hInstance, IDS_APPTITLE, szBuf, _countof(szBuf));
hMainWnd = CreateWindowExW(WS_EX_WINDOWEDGE, WC_SHIMGVW, szBuf,
- WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CLIPSIBLINGS,
- g_Settings.X, g_Settings.Y,
- g_Settings.Width, g_Settings.Height,
+ WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS,
+ g_Settings.X, g_Settings.Y, g_Settings.Width,
g_Settings.Height,
NULL, NULL, g_hInstance, NULL);
- if (g_Settings.Maximized)
- ShowWindow(hMainWnd, SW_MAXIMIZE);
// make sure the path has no quotes on it
StringCbCopyW(szInitialFile, sizeof(szInitialFile), szFileName);
@@ -1254,27 +1213,28 @@ ImageView_CreateWindow(HWND hwnd, LPCWSTR szFileName)
}
/* Create accelerator table for keystrokes */
- hKbdAccel = LoadAcceleratorsW(g_hInstance, MAKEINTRESOURCEW(IDR_ACCELERATOR));
+ hAccel = LoadAcceleratorsW(g_hInstance, MAKEINTRESOURCEW(IDR_ACCELERATOR));
+
+ /* Show the main window now */
+ if (g_Settings.Maximized)
+ ShowWindow(hMainWnd, SW_SHOWMAXIMIZED);
+ else
+ ShowWindow(hMainWnd, SW_SHOWNORMAL);
- // Show it
- ShowWindow(hMainWnd, SW_SHOW);
UpdateWindow(hMainWnd);
- // Message Loop
- for (;;)
+ /* Message Loop */
+ while (GetMessageW(&msg, NULL, 0, 0) > 0)
{
- if (GetMessageW(&msg, NULL, 0, 0) <= 0)
- break;
+ if (TranslateAcceleratorW(hMainWnd, hAccel, &msg))
+ continue;
- if (!TranslateAcceleratorW(hMainWnd, hKbdAccel, &msg))
- {
- TranslateMessage(&msg);
- DispatchMessageW(&msg);
- }
+ TranslateMessage(&msg);
+ DispatchMessageW(&msg);
}
/* Destroy accelerator table */
- DestroyAcceleratorTable(hKbdAccel);
+ DestroyAcceleratorTable(hAccel);
pFreeFileList(g_pCurrentFile);
@@ -1289,10 +1249,10 @@ ImageView_CreateWindow(HWND hwnd, LPCWSTR szFileName)
GdiplusShutdown(gdiplusToken);
/* Release COM resources */
- if (SUCCEEDED(hComRes))
+ if (SUCCEEDED(hrCoInit))
CoUninitialize();
- return -1;
+ return 0;
}
VOID WINAPI