summaryrefslogtreecommitdiff
path: root/redo/dialog_windows.c
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-08-19 03:31:53 -0400
committerPietro Gagliardi <[email protected]>2014-08-19 03:31:53 -0400
commitb6a5735f8954a22f37da0e4d393ef38ccfb7fba4 (patch)
tree313112dc8bc540ad31eff718e8e54a4c7241a881 /redo/dialog_windows.c
parent32c1d47fd8ad9a0d542cc88ab713feaef9fa49d6 (diff)
Implemented new dialog box techniques on Windows... kinda.
Diffstat (limited to 'redo/dialog_windows.c')
-rw-r--r--redo/dialog_windows.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/redo/dialog_windows.c b/redo/dialog_windows.c
index d5b69f7..fff8e95 100644
--- a/redo/dialog_windows.c
+++ b/redo/dialog_windows.c
@@ -6,6 +6,17 @@
// this should be reasonable
#define NFILENAME 4096
+static UINT_PTR CALLBACK openSaveFileHook(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ // the hook procedure is documented as being the dialog procedure for a special child dialog box, not the main one
+ // as such, the WM_DESTROY here is for that child dialog box, not for the main one
+ // I /think/ this would be perfect for re-enabling other windows in the right order (see http://blogs.msdn.com/b/oldnewthing/archive/2004/02/27/81155.aspx)
+ // TODO THIS DOES NOT WORK
+ if (uMsg == WM_DESTROY)
+ SendMessageW(msgwin, msgEndModal, 0, 0);
+ return 0;
+}
+
WCHAR *openFile(void)
{
OPENFILENAMEW ofn;
@@ -28,7 +39,9 @@ WCHAR *openFile(void)
ofn.lpstrTitle = NULL; // let system decide
// TODO OFN_SHAREAWARE?
// TODO remove OFN_NODEREFERENCELINKS? or does no filters ensure that anyway?
- ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_FORCESHOWHIDDEN | OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_NOCHANGEDIR | OFN_NODEREFERENCELINKS | OFN_NOTESTFILECREATE | OFN_PATHMUSTEXIST;
+ ofn.Flags = OFN_ENABLEHOOK | OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_FORCESHOWHIDDEN | OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_NOCHANGEDIR | OFN_NODEREFERENCELINKS | OFN_NOTESTFILECREATE | OFN_PATHMUSTEXIST;
+ ofn.lpfnHook = openSaveFileHook;
+ SendMessageW(msgwin, msgBeginModal, 0, 0);
if (GetOpenFileNameW(&ofn) == FALSE) {
// TODO stringify
err = CommDlgExtendedError();