From: owen Date: Wed, 18 Jun 2003 17:25:18 +0000 (+0000) Subject: Make SaneDialogBox and SaneEndDialog use [GS]etWindowLong rather than X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/commitdiff_plain/2979718aac984b9456d093e4a4b6c81952942691 Make SaneDialogBox and SaneEndDialog use [GS]etWindowLong rather than a global variable. Should mean that pageant builds. git-svn-id: svn://svn.tartarus.org/sgt/putty@3274 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/win_res.rc b/win_res.rc index 4c424711..a056c588 100644 --- a/win_res.rc +++ b/win_res.rc @@ -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 diff --git a/winmisc.c b/winmisc.c index d3d372dd..caafd7d7 100644 --- 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 diff --git a/winstuff.h b/winstuff.h index 4bc90db2..37c66bba 100644 --- a/winstuff.h +++ b/winstuff.h @@ -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;