Make SaneDialogBox and SaneEndDialog use [GS]etWindowLong rather than
authorowen <owen@cda61777-01e9-0310-a592-d414129be87e>
Wed, 18 Jun 2003 17:25:18 +0000 (17:25 +0000)
committerowen <owen@cda61777-01e9-0310-a592-d414129be87e>
Wed, 18 Jun 2003 17:25:18 +0000 (17:25 +0000)
a global variable.  Should mean that pageant builds.

git-svn-id: svn://svn.tartarus.org/sgt/putty@3274 cda61777-01e9-0310-a592-d414129be87e

win_res.rc
winmisc.c
winstuff.h

index 4c42471..a056c58 100644 (file)
@@ -47,6 +47,7 @@ IDD_MAINBOX DIALOG DISCARDABLE 0, 0, 280, 252
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "PuTTY Configuration"
 FONT 8, "MS Shell Dlg"
+CLASS "PuTTYConfigBox"
 BEGIN
 END
 
index d3d372d..caafd7d 100644 (file)
--- a/winmisc.c
+++ b/winmisc.c
@@ -42,24 +42,46 @@ int SaneDialogBox(HINSTANCE hinst,
                  HWND hwndparent,
                  DLGPROC lpDialogFunc)
 {
-    HWND boxhwnd;
+    WNDCLASS wc;
+    HWND hwnd;
     MSG msg;
-    
-    boxhwnd = CreateDialog(hinst, tmpl, hwndparent, lpDialogFunc);
+    int flags;
+    int ret;
+
+    wc.style = CS_DBLCLKS | CS_SAVEBITS | CS_BYTEALIGNWINDOW;
+    wc.lpfnWndProc = DefDlgProc;
+    wc.cbClsExtra = 0;
+    wc.cbWndExtra = DLGWINDOWEXTRA + 8;
+    wc.hInstance = hinst;
+    wc.hIcon = NULL;
+    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
+    wc.hbrBackground = (HBRUSH) (COLOR_BACKGROUND +1);
+    wc.lpszMenuName = NULL;
+    wc.lpszClassName = "PuTTYConfigBox";
+    RegisterClass(&wc);
+
+    hwnd = CreateDialog(hinst, tmpl, hwndparent, lpDialogFunc);
+
+    SetWindowLong(hwnd, BOXFLAGS, 0); /* flags */
+    SetWindowLong(hwnd, BOXRESULT, 0); /* result from SaneEndDialog */
+
     while (GetMessage(&msg, NULL, 0, 0)) {
-       if (!(boxinfo.flags & DF_END) && !IsDialogMessage(boxhwnd, &msg))
+       flags=GetWindowLong(hwnd, BOXFLAGS);
+       if (!(flags & DF_END) && !IsDialogMessage(hwnd, &msg))
            DispatchMessage(&msg);
-       if (boxinfo.flags & DF_END) break;
+       if (flags & DF_END)
+           break;
     }
-    boxinfo.flags=0;
-    return boxinfo.result;
+
+    ret=GetWindowLong(hwnd, BOXRESULT);
+    DestroyWindow(hwnd);
+    return ret;
 }
 
 void SaneEndDialog(HWND hwnd, int ret)
 {
-    boxinfo.result = ret;
-    boxinfo.flags |= DF_END;
-    DestroyWindow(hwnd);
+    SetWindowLong(hwnd, BOXRESULT, ret);
+    SetWindowLong(hwnd, BOXFLAGS, DF_END);
 }
 
 #ifdef DEBUG
index 4bc90db..37c66bb 100644 (file)
@@ -23,18 +23,15 @@ struct FontSpec {
     int charset;
 };
 
-struct dlgboxinfo {
-    int result;
-    int flags;
-};
-
+#define BOXFLAGS DLGWINDOWEXTRA
+#define BOXRESULT DLGWINDOWEXTRA + 4
 #define DF_END 0x0001
 
 /*
  * Global variables. Most modules declare these `extern', but
  * window.c will do `#define PUTTY_DO_GLOBALS' before including this
  * module, and so will get them properly defined.
- */
+*/
 #ifndef GLOBAL
 #ifdef PUTTY_DO_GLOBALS
 #define GLOBAL
@@ -71,11 +68,6 @@ typedef HDC Context;
 GLOBAL HWND logbox;
 
 /*
- * Global structure to hold return values from the config box.
- */
-GLOBAL struct dlgboxinfo boxinfo;
-
-/*
  * The all-important instance handle.
  */
 GLOBAL HINSTANCE hinst;