* winmisc.c: miscellaneous Windows-specific things.
*/
-#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "putty.h"
-#include "winstuff.h"
+
+OSVERSIONINFO osVersion;
void platform_get_x11_auth(char *display, int *proto,
unsigned char *data, int *datalen)
return !*fn.path;
}
+char *get_username(void)
+{
+ DWORD namelen;
+ char *user;
+
+ namelen = 0;
+ if (GetUserName(NULL, &namelen) == FALSE)
+ return NULL;
+
+ user = snewn(namelen, char);
+ GetUserName(user, &namelen);
+
+ return user;
+}
+
int SaneDialogBox(HINSTANCE hinst,
LPCTSTR tmpl,
HWND hwndparent,
DLGPROC lpDialogFunc)
{
- HWND boxhwnd;
+ WNDCLASS wc;
+ HWND hwnd;
MSG msg;
-
- boxhwnd = CreateDialog(hinst, tmpl, hwndparent, lpDialogFunc);
- while (GetMessage(&msg, NULL, 0, 0)) {
- if (!(boxinfo.flags & DF_END) && !IsDialogMessage(boxhwnd, &msg))
+ int flags;
+ int ret;
+ int gm;
+
+ 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 ((gm=GetMessage(&msg, NULL, 0, 0)) > 0) {
+ 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;
+
+ if (gm == 0)
+ PostQuitMessage(msg.wParam); /* We got a WM_QUIT, pass it on */
+
+ 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);
+}
+
+BOOL init_winver(void)
+{
+ ZeroMemory(&osVersion, sizeof(osVersion));
+ osVersion.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
+ return GetVersionEx ( (OSVERSIONINFO *) &osVersion);
}
#ifdef DEBUG