]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Make SaneDialogBox and SaneEndDialog use [GS]etWindowLong rather than
authorOwen Dunn <owen@greenend.org.uk>
Wed, 18 Jun 2003 17:25:18 +0000 (17:25 +0000)
committerOwen Dunn <owen@greenend.org.uk>
Wed, 18 Jun 2003 17:25:18 +0000 (17:25 +0000)
a global variable.  Should mean that pageant builds.

[originally from svn r3274]

win_res.rc
winmisc.c
winstuff.h

index 4c424711ad8fc070a13839085e3d7693712477c5..a056c5889db29bfc33c8c7ed162f632df16b3d38 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 d3d372dd652d913fce464c9340ef25344d23c4f4..caafd7d7b98a2851d6b9f66f0588535cfd8c96a7 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 4bc90db264bb983f35d70cd9c7253e189fd8bde0..37c66bbafd69807078724c9f47de31acc7b4cfca 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
@@ -70,11 +67,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.
  */