Mikołaj Zalewski : shell32: Allow for custom icons in confirmation messages.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jul 3 05:22:48 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: cb0c81ae8c7b5ee804ff3cdcf1b2c67b42b63b6f
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=cb0c81ae8c7b5ee804ff3cdcf1b2c67b42b63b6f

Author: Mikołaj Zalewski <mikolaj at zalewski.pl>
Date:   Fri Jun 30 22:47:12 2006 +0200

shell32: Allow for custom icons in confirmation messages.

---

 dlls/shell32/shlfileop.c |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index 242e252..90cf9e2 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -67,11 +67,15 @@ static DWORD SHFindAttrW(LPCWSTR pName, 
 
 typedef struct
 {
+        HINSTANCE hIconInstance;
+        UINT icon_resource_id;
 	UINT caption_resource_id, text_resource_id;
 } SHELL_ConfirmIDstruc;
 
 static BOOL SHELL_ConfirmIDs(int nKindOfDialog, SHELL_ConfirmIDstruc *ids)
 {
+        ids->hIconInstance = NULL;
+        ids->icon_resource_id = IDI_WARNING;
 	switch (nKindOfDialog) {
 	  case ASK_DELETE_FILE:
 	    ids->caption_resource_id  = IDS_DELETEITEM_CAPTION;
@@ -99,6 +103,7 @@ BOOL SHELL_ConfirmDialogW(HWND hWnd, int
 {
 	WCHAR szCaption[255], szText[255], szBuffer[MAX_PATH + 256];
 	SHELL_ConfirmIDstruc ids;
+	MSGBOXPARAMSW params;
 
 	if (!SHELL_ConfirmIDs(nKindOfDialog, &ids))
 	  return FALSE;
@@ -109,7 +114,16 @@ BOOL SHELL_ConfirmDialogW(HWND hWnd, int
 	FormatMessageW(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ARGUMENT_ARRAY,
 	               szText, 0, 0, szBuffer, sizeof(szBuffer), (va_list*)&szDir);
 
-	return (IDOK == MessageBoxW(hWnd, szBuffer, szCaption, MB_OKCANCEL | MB_ICONEXCLAMATION));
+        ZeroMemory(&params, sizeof(params));
+        params.cbSize = sizeof(MSGBOXPARAMSW);
+        params.hwndOwner = hWnd;
+        params.hInstance = ids.hIconInstance;
+        params.lpszText = szBuffer;
+        params.lpszCaption = szCaption;
+        params.lpszIcon = (LPWSTR)MAKEINTRESOURCE(ids.icon_resource_id);
+        params.dwStyle = MB_OKCANCEL | MB_USERICON;
+
+	return (IDOK == MessageBoxIndirectW(&params));
 }
 
 static DWORD SHELL32_AnsiToUnicodeBuf(LPCSTR aPath, LPWSTR *wPath, DWORD minChars)




More information about the wine-cvs mailing list