2 * PROJECT: ReactOS Zip Shell Extension
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Ask the user to replace a file
5 * COPYRIGHT: Copyright 2017-2019 Mark Jansen (mark.jansen@reactos.org)
10 class CConfirmReplace
: public CDialogImpl
<CConfirmReplace
>
16 CConfirmReplace(const char* filename
)
18 m_Filename
= filename
;
21 LRESULT
OnInitDialog(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
23 CenterWindow(GetParent());
25 HICON hIcon
= LoadIcon(NULL
, IDI_EXCLAMATION
);
26 SendDlgItemMessage(IDC_EXCLAMATION_ICON
, STM_SETICON
, (WPARAM
)hIcon
);
28 /* Our CString does not support FormatMessage yet */
29 CStringA
message(MAKEINTRESOURCE(IDS_OVERWRITEFILE_TEXT
));
30 CHeapPtr
<CHAR
, CLocalAllocator
> formatted
;
34 (DWORD_PTR
)m_Filename
.GetString(),
38 ::FormatMessageA(FORMAT_MESSAGE_FROM_STRING
| FORMAT_MESSAGE_ALLOCATE_BUFFER
| FORMAT_MESSAGE_ARGUMENT_ARRAY
,
39 message
, 0, 0, (LPSTR
)&formatted
, 0, (va_list*)args
);
41 ::SetDlgItemTextA(m_hWnd
, IDC_MESSAGE
, formatted
);
45 LRESULT
OnButton(WORD wNotifyCode
, WORD wID
, HWND hWndCtl
, BOOL
& bHandled
)
52 enum { IDD
= IDD_CONFIRM_FILE_REPLACE
};
54 BEGIN_MSG_MAP(CConfirmReplace
)
55 MESSAGE_HANDLER(WM_INITDIALOG
, OnInitDialog
)
56 COMMAND_ID_HANDLER(IDYES
, OnButton
)
57 COMMAND_ID_HANDLER(IDYESALL
, OnButton
)
58 COMMAND_ID_HANDLER(IDNO
, OnButton
)
59 COMMAND_ID_HANDLER(IDCANCEL
, OnButton
)
64 eZipConfirmResponse
_CZipAskReplace(HWND hDlg
, PCSTR FullPath
)
66 PCSTR Filename
= PathFindFileNameA(FullPath
);
67 CConfirmReplace
confirm(Filename
);
68 INT_PTR Result
= confirm
.DoModal(hDlg
);
71 case IDYES
: return eYes
;
72 case IDYESALL
: return eYesToAll
;
74 case IDNO
: return eNo
;
75 case IDCANCEL
: return eCancel
;