]> granicus.if.org Git - nethack/commitdiff
deal with some win/win32 warnings
authornhmall <nhmall@nethack.org>
Fri, 29 Jan 2021 18:00:00 +0000 (13:00 -0500)
committernhmall <nhmall@nethack.org>
Fri, 29 Jan 2021 18:00:00 +0000 (13:00 -0500)
win/win32/mhdlg.c(137)   : warning C4456: declaration of 'wbuf' hides
                           previous local declaration
win/win32/mhdlg.c(62)    : note: see declaration of 'wbuf'
win/win32/mhdlg.c(875)   : warning C4189: 'gender': local variable is
                           initialized but not referenced
win/win32/mhdlg.c(874)   : warning C4189: 'race': local variable is
                           initialized but not referenced
win/win32/mhdlg.c(876)   : warning C4189: 'alignment': local variable is
                           initialized but not referenced
win/win32/mhdlg.c(873)   : warning C4189: 'role': local variable is
                           initialized but not referenced
win/win32/mhinput.h(24)  : warning C4201: nonstandard extension used:
                           nameless struct/union
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhinput.h(24)  : warning C4201: nonstandard extension used:
                           nameless struct/union
win/win32/mhinput.h(24)  : warning C4201: nonstandard extension used:
                           nameless struct/union
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhmenu.c(62)   : warning C4201: nonstandard extension used:
                           nameless struct/union
win/win32/mhmenu.c(1082) : warning C4456: declaration of 'monitorScale'
                           hides previous local declaration
win/win32/mhmenu.c(995)  : note: see declaration of 'monitorScale'
win/win32/mhmenu.c(1142) : warning C4456: declaration of 'wbuf' hides
                           previous local declaration
win/win32/mhmenu.c(986)  : note: see declaration of 'wbuf'
win/win32/mhmenu.c(1082) : warning C4189: 'monitorScale': local variable
                           is initialized but not referenced
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhmsgwnd.c(700): warning C4701: potentially uninitialized
                           local variable 'size' used
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhsplash.c(158): warning C4189: 'verstrsize': local variable
                           is initialized but not referenced
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhstatus.c(353): warning C4057: 'function':
                           'const unsigned char *' differs in indirection
                           to slightly different base types from 'const char *'
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/mhmsg.h(70)    : warning C4200: nonstandard extension used:
                           zero-sized array in struct/union
win/win32/NetHackW.c(181): warning C4456: declaration of 'buf' hides
                           previous local declaration
win/win32/NetHackW.c(90) : note: see declaration of 'buf'
win/win32/NetHackW.c(189): warning C4456: declaration of 'buf' hides
                           previous local declaration
win/win32/NetHackW.c(90) : note: see declaration of 'buf'

12 files changed:
win/win32/NetHackW.c
win/win32/mhdlg.c
win/win32/mhinput.c
win/win32/mhinput.h
win/win32/mhmain.c
win/win32/mhmenu.c
win/win32/mhmsg.h
win/win32/mhmsgwnd.c
win/win32/mhsplash.c
win/win32/mhstatus.c
win/win32/mswproc.c
win/win32/winMS.h

index 38533b4853cdcfebc662f706b1fee55b8138556b..e6a31381d8f2442ac96a161d86a9023c75d03fa3 100644 (file)
@@ -178,21 +178,21 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
 
     // init controls
     if (FAILED(GetComCtlVersion(&major, &minor))) {
-        char buf[TBUFSZ];
-        Sprintf(buf, "Cannot load common control library.\n%s\n%s",
+        char buf2[TBUFSZ];
+        Sprintf(buf2, "Cannot load common control library.\n%s\n%s",
                 "For further information, refer to the installation notes at",
                 INSTALL_NOTES);
-        panic(buf);
+        panic(buf2);
     }
     if (major < MIN_COMCTLMAJOR
         || (major == MIN_COMCTLMAJOR && minor < MIN_COMCTLMINOR)) {
-        char buf[TBUFSZ];
-        Sprintf(buf, "Common control library is outdated.\n%s %d.%d\n%s\n%s",
+        char buf2[TBUFSZ];
+        Sprintf(buf2, "Common control library is outdated.\n%s %d.%d\n%s\n%s",
                 "NetHack requires at least version ", MIN_COMCTLMAJOR,
                 MIN_COMCTLMINOR,
                 "For further information, refer to the installation notes at",
                 INSTALL_NOTES);
-        panic(buf);
+        panic(buf2);
     }
     ZeroMemory(&InitCtrls, sizeof(InitCtrls));
     InitCtrls.dwSize = sizeof(InitCtrls);
index 9e064229b3f214e8cf0d747d819aa4914a8252fd..166af608270dd629f7272e35f61f4c9a68f8fc3f 100644 (file)
@@ -134,7 +134,7 @@ GetlinDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
         break;
 
     case WM_COMMAND: {
-        TCHAR wbuf[BUFSZ];
+        TCHAR wbuf2[BUFSZ];
 
         switch (LOWORD(wParam)) {
         /* OK button was pressed */
@@ -142,8 +142,8 @@ GetlinDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
             data =
                 (struct getlin_data *) GetWindowLongPtr(hWnd, GWLP_USERDATA);
             SendDlgItemMessage(hWnd, IDC_GETLIN_EDIT, WM_GETTEXT,
-                               (WPARAM) sizeof(wbuf), (LPARAM) wbuf);
-            NH_W2A(wbuf, data->result, data->result_size);
+                               (WPARAM) sizeof(wbuf2), (LPARAM) wbuf2);
+            NH_W2A(wbuf2, data->result, data->result_size);
 
         /* Fall through. */
 
@@ -870,11 +870,16 @@ plselAdjustSelections(HWND hWnd)
 int
 plselFinalSelection(HWND hWnd)
 {
-    int role = flags.initrole;
-    int race = flags.initrace;
-    int gender = flags.initgend;
-    int alignment = flags.initalign;
+    int role, race, gender, alignment;
 
+    nhUse(role);
+    nhUse(race);
+    nhUse(gender);
+    nhUse(alignment);
+    role = flags.initrole;
+    race = flags.initrace;
+    gender = flags.initgend;
+    alignment = flags.initalign;
     assert(role != ROLE_RANDOM && role != ROLE_NONE);
     assert(race != ROLE_RANDOM && race != ROLE_NONE);
     assert(gender != ROLE_RANDOM && gender != ROLE_NONE);
@@ -889,6 +894,7 @@ plselFinalSelection(HWND hWnd)
 
 static boolean plselRandomize(plsel_data_t * data)
 {
+    int role, race, gender, alignment;
     boolean fully_specified = TRUE;
 
     // restore back to configuration settings
@@ -914,10 +920,10 @@ static boolean plselRandomize(plsel_data_t * data)
 
     rigid_role_checks();
 
-    int role = flags.initrole;
-    int race = flags.initrace;
-    int gender = flags.initgend;
-    int alignment = flags.initalign;
+    role = flags.initrole;
+    race = flags.initrace;
+    gender = flags.initgend;
+    alignment = flags.initalign;
 
     assert(role != ROLE_RANDOM && role != ROLE_NONE);
     assert(race != ROLE_RANDOM && race != ROLE_NONE);
index fb57ea9176cd4cdb98b14cbd0062c326e874d556..bc1fc08911351e8d55a78ff5db9004b3d692d0ca 100644 (file)
@@ -72,7 +72,7 @@ mswin_input_pop(void)
     if (g.program_state.done_hup) {
         static MSNHEvent hangup_event;
         hangup_event.type = NHEVENT_CHAR;
-        hangup_event.kbd.ch = '\033';
+        hangup_event.ei.kbd.ch = '\033';
         return &hangup_event;
     }
 #endif
@@ -101,7 +101,7 @@ mswin_input_peek(void)
     if (g.program_state.done_hup) {
         static MSNHEvent hangup_event;
         hangup_event.type = NHEVENT_CHAR;
-        hangup_event.kbd.ch = '\033';
+        hangup_event.ei.kbd.ch = '\033';
         return &hangup_event;
     }
 #endif
index 67ff973477aaf72b79e64953fd09d2203cdbae78..e94e3dbda3e56bb0df9ab31f8df6807f57ce5778 100644 (file)
 
 #define NHEVENT_CHAR 1
 #define NHEVENT_MOUSE 2
+
+union event_innards {
+    struct {
+        int ch;
+    } kbd;
+
+    struct {
+       int mod;
+       int x, y;
+    } ms;
+};
+
 typedef struct mswin_event {
     int type;
-    union {
-        struct {
-            int ch;
-        } kbd;
-
-        struct {
-            int mod;
-            int x, y;
-        } ms;
-    };
+    union event_innards ei;
 } MSNHEvent, *PMSNHEvent;
 
 #define NHEVENT_KBD(c)         \
     {                          \
         MSNHEvent e;           \
         e.type = NHEVENT_CHAR; \
-        e.kbd.ch = (c);        \
+        e.ei.kbd.ch = (c);        \
         mswin_input_push(&e);  \
     }
 #define NHEVENT_MS(_mod, _x, _y) \
     {                            \
         MSNHEvent e;             \
         e.type = NHEVENT_MOUSE;  \
-        e.ms.mod = (_mod);       \
-        e.ms.x = (_x);           \
-        e.ms.y = (_y);           \
+        e.ei.ms.mod = (_mod);       \
+        e.ei.ms.x = (_x);           \
+        e.ei.ms.y = (_y);           \
         mswin_input_push(&e);    \
     }
 
index ca1835a52db866480dcb81cf634d057b8cf360bb..5511e396d6b38375b66745675b094cae69ef6f61 100644 (file)
@@ -1248,7 +1248,6 @@ mswin_apply_window_style_all(void)
 }
 
 // returns strdup() created pointer - callee assumes the ownership
-#define TEXT_BUFFER_SIZE 4096
 char *
 nh_compose_ascii_screenshot(void)
 {
index 91480dd3408b3c3bf3d3032b469a44695e032fd2..6b3ce179abfbe510f3b06ec87974ce3758f9ab61 100644 (file)
@@ -39,27 +39,29 @@ typedef struct mswin_menu_item {
     BOOL has_focus;
 } NHMenuItem, *PNHMenuItem;
 
+union menu_innards {
+    struct menu_list {
+        int size;            /* number of items in items[] */
+        int allocated;       /* number of allocated slots in items[] */
+        PNHMenuItem items;   /* menu items */
+        char gacc[QBUFSZ];   /* group accelerators */
+        BOOL counting;       /* counting flag */
+        char prompt[QBUFSZ]; /* menu prompt */
+        int tab_stop_size[NUMTABS]; /* tabstops to align option values */
+        int menu_cx;                /* menu width */
+    } menu;
+
+    struct menu_text {
+        TCHAR *text;
+        SIZE text_box_size;
+    } text;
+};
+
 typedef struct mswin_nethack_menu_window {
     int type; /* MENU_TYPE_TEXT or MENU_TYPE_MENU */
     int how;  /* for menus: PICK_NONE, PICK_ONE, PICK_ANY */
 
-    union {
-        struct menu_list {
-            int size;            /* number of items in items[] */
-            int allocated;       /* number of allocated slots in items[] */
-            PNHMenuItem items;   /* menu items */
-            char gacc[QBUFSZ];   /* group accelerators */
-            BOOL counting;       /* counting flag */
-            char prompt[QBUFSZ]; /* menu prompt */
-            int tab_stop_size[NUMTABS]; /* tabstops to align option values */
-            int menu_cx;                /* menu width */
-        } menu;
-
-        struct menu_text {
-            TCHAR *text;
-            SIZE text_box_size;
-        } text;
-    };
+    union menu_innards menui;
     int result;
     int done;
 
@@ -162,23 +164,23 @@ mswin_menu_window_select_menu(HWND hWnd, int how, MENU_ITEM_P **_selected,
     if (data->type == MENU_TYPE_MENU) {
         char next_char = 'a';
 
-        data->menu.gacc[0] = '\0';
-        ap = data->menu.gacc;
-        for (i = 0; i < data->menu.size; i++) {
-            if (data->menu.items[i].accelerator != 0) {
-                if (isalpha(data->menu.items[i].accelerator)) {
-                    next_char = (char)(data->menu.items[i].accelerator + 1);
+        data->menui.menu.gacc[0] = '\0';
+        ap = data->menui.menu.gacc;
+        for (i = 0; i < data->menui.menu.size; i++) {
+            if (data->menui.menu.items[i].accelerator != 0) {
+                if (isalpha(data->menui.menu.items[i].accelerator)) {
+                    next_char = (char)(data->menui.menu.items[i].accelerator + 1);
                 }
-            } else if (NHMENU_IS_SELECTABLE(data->menu.items[i])) {
+            } else if (NHMENU_IS_SELECTABLE(data->menui.menu.items[i])) {
                 if (isalpha(next_char)) {
-                    data->menu.items[i].accelerator = next_char;
+                    data->menui.menu.items[i].accelerator = next_char;
                 } else {
                     if (next_char > 'z')
                         next_char = 'A';
                     else if (next_char > 'Z')
                         next_char = 'a';
 
-                    data->menu.items[i].accelerator = next_char;
+                    data->menui.menu.items[i].accelerator = next_char;
                 }
 
                 next_char++;
@@ -186,12 +188,12 @@ mswin_menu_window_select_menu(HWND hWnd, int how, MENU_ITEM_P **_selected,
         }
 
         /* collect group accelerators */
-        for (i = 0; i < data->menu.size; i++) {
+        for (i = 0; i < data->menui.menu.size; i++) {
             if (data->how != PICK_NONE) {
-                if (data->menu.items[i].group_accel
-                    && !strchr(data->menu.gacc,
-                               data->menu.items[i].group_accel)) {
-                    *ap++ = data->menu.items[i].group_accel;
+                if (data->menui.menu.items[i].group_accel
+                    && !strchr(data->menui.menu.gacc,
+                               data->menui.menu.items[i].group_accel)) {
+                    *ap++ = data->menui.menu.items[i].group_accel;
                     *ap = '\x0';
                 }
             }
@@ -219,9 +221,9 @@ mswin_menu_window_select_menu(HWND hWnd, int how, MENU_ITEM_P **_selected,
         } else if (how == PICK_ONE || how == PICK_ANY) {
             /* count selected items */
             ret_val = 0;
-            for (i = 0; i < data->menu.size; i++) {
-                if (NHMENU_IS_SELECTABLE(data->menu.items[i])
-                    && NHMENU_IS_SELECTED(data->menu.items[i])) {
+            for (i = 0; i < data->menui.menu.size; i++) {
+                if (NHMENU_IS_SELECTABLE(data->menui.menu.items[i])
+                    && NHMENU_IS_SELECTED(data->menui.menu.items[i])) {
                     ret_val++;
                 }
             }
@@ -234,12 +236,12 @@ mswin_menu_window_select_menu(HWND hWnd, int how, MENU_ITEM_P **_selected,
                     panic("out of memory");
 
                 sel_ind = 0;
-                for (i = 0; i < data->menu.size; i++) {
-                    if (NHMENU_IS_SELECTABLE(data->menu.items[i])
-                        && NHMENU_IS_SELECTED(data->menu.items[i])) {
+                for (i = 0; i < data->menui.menu.size; i++) {
+                    if (NHMENU_IS_SELECTABLE(data->menui.menu.items[i])
+                        && NHMENU_IS_SELECTED(data->menui.menu.items[i])) {
                         selected[sel_ind].item =
-                            data->menu.items[i].identifier;
-                        selected[sel_ind].count = data->menu.items[i].count;
+                            data->menui.menu.items[i].identifier;
+                        selected[sel_ind].count = data->menui.menu.items[i].count;
                         sel_ind++;
                     }
                 }
@@ -259,10 +261,10 @@ mswin_menu_window_select_menu(HWND hWnd, int how, MENU_ITEM_P **_selected,
          */
         if (iflags.perm_invent && mswin_winid_from_handle(hWnd) == WIN_INVEN
             && how != PICK_NONE) {
-            data->menu.prompt[0] = '\0';
+            data->menui.menu.prompt[0] = '\0';
             SetMenuListType(hWnd, PICK_NONE);
-            for (i = 0; i < data->menu.size; i++)
-                data->menu.items[i].count = 0;
+            for (i = 0; i < data->menui.menu.size; i++)
+                data->menui.menu.items[i].count = 0;
             LayoutMenu(hWnd);
         }
     }
@@ -362,7 +364,7 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
         case IDCANCEL:
             if (data->type == MENU_TYPE_MENU
                 && (data->how == PICK_ONE || data->how == PICK_ANY)
-                && data->menu.counting) {
+                && data->menui.menu.counting) {
                 HWND list;
                 int i;
 
@@ -397,9 +399,9 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
             case LVN_ITEMACTIVATE: {
                 LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW) lParam;
                 if (data->how == PICK_ONE) {
-                    if (lpnmlv->iItem >= 0 && lpnmlv->iItem < data->menu.size
+                    if (lpnmlv->iItem >= 0 && lpnmlv->iItem < data->menui.menu.size
                         && NHMENU_IS_SELECTABLE(
-                               data->menu.items[lpnmlv->iItem])) {
+                               data->menui.menu.items[lpnmlv->iItem])) {
                         SelectMenuItem(lpnmlv->hdr.hwndFrom, data,
                                        lpnmlv->iItem, -1);
                         data->done = 1;
@@ -416,7 +418,7 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
                 if (data->how == PICK_ANY) {
                     SelectMenuItem(
                         lpnmitem->hdr.hwndFrom, data, lpnmitem->iItem,
-                        NHMENU_IS_SELECTED(data->menu.items[lpnmitem->iItem])
+                        NHMENU_IS_SELECTED(data->menui.menu.items[lpnmitem->iItem])
                             ? 0
                             : -1);
                 }
@@ -430,7 +432,7 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
                     return 0;
 
                 if (data->how == PICK_ONE || data->how == PICK_ANY) {
-                    data->menu.items[lpnmlv->iItem].has_focus =
+                    data->menui.menu.items[lpnmlv->iItem].has_focus =
                         !!(lpnmlv->uNewState & LVIS_FOCUSED);
                     ListView_RedrawItems(lpnmlv->hdr.hwndFrom, lpnmlv->iItem,
                                          lpnmlv->iItem);
@@ -447,7 +449,7 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 
                 /* check item focus */
                 if (data->how == PICK_ONE || data->how == PICK_ANY) {
-                    data->menu.items[lpnmlv->iItem].has_focus =
+                    data->menui.menu.items[lpnmlv->iItem].has_focus =
                         !!(lpnmlv->uNewState & LVIS_FOCUSED);
                     ListView_RedrawItems(lpnmlv->hdr.hwndFrom, lpnmlv->iItem,
                                          lpnmlv->iItem);
@@ -512,8 +514,8 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
             DeleteObject(data->bmpCheckedCount);
             DeleteObject(data->bmpNotChecked);
             if (data->type == MENU_TYPE_TEXT) {
-                if (data->text.text)
-                    free(data->text.text);
+                if (data->menui.text.text)
+                    free(data->menui.text.text);
             }
             free(data);
             SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) 0);
@@ -542,27 +544,27 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
         if (data->type != MENU_TYPE_TEXT)
             SetMenuType(hWnd, MENU_TYPE_TEXT);
 
-        if (!data->text.text) {
+        if (!data->menui.text.text) {
             text_size = strlen(msg_data->text) + 4;
-            data->text.text =
-                (TCHAR *) malloc(text_size * sizeof(data->text.text[0]));
-            ZeroMemory(data->text.text,
-                       text_size * sizeof(data->text.text[0]));
+            data->menui.text.text =
+                (TCHAR *) malloc(text_size * sizeof(data->menui.text.text[0]));
+            ZeroMemory(data->menui.text.text,
+                       text_size * sizeof(data->menui.text.text[0]));
         } else {
-            text_size = _tcslen(data->text.text) + strlen(msg_data->text) + 4;
-            data->text.text = (TCHAR *) realloc(
-                data->text.text, text_size * sizeof(data->text.text[0]));
+            text_size = _tcslen(data->menui.text.text) + strlen(msg_data->text) + 4;
+            data->menui.text.text = (TCHAR *) realloc(
+                data->menui.text.text, text_size * sizeof(data->menui.text.text[0]));
         }
-        if (!data->text.text)
+        if (!data->menui.text.text)
             break;
 
-        _tcscat(data->text.text, NH_A2W(msg_data->text, wbuf, BUFSZ));
-        _tcscat(data->text.text, TEXT("\r\n"));
+        _tcscat(data->menui.text.text, NH_A2W(msg_data->text, wbuf, BUFSZ));
+        _tcscat(data->menui.text.text, TEXT("\r\n"));
 
         text_view = GetDlgItem(hWnd, IDC_MENU_TEXT);
         if (!text_view)
             panic("cannot get text view window");
-        SetWindowText(text_view, data->text.text);
+        SetWindowText(text_view, data->menui.text.text);
 
         /* calculate dimensions of the added line of text */
         hdc = GetDC(text_view);
@@ -572,9 +574,9 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
         DrawTextA(hdc, msg_data->text, strlen(msg_data->text), &text_rt,
                  DT_CALCRECT | DT_TOP | DT_LEFT | DT_NOPREFIX
                      | DT_SINGLELINE);
-        data->text.text_box_size.cx =
-            max(text_rt.right - text_rt.left, data->text.text_box_size.cx);
-        data->text.text_box_size.cy += text_rt.bottom - text_rt.top;
+        data->menui.text.text_box_size.cx =
+            max(text_rt.right - text_rt.left, data->menui.text.text_box_size.cx);
+        data->menui.text.text_box_size.cy += text_rt.bottom - text_rt.top;
         SelectObject(hdc, saveFont);
         ReleaseDC(text_view, hdc);
     } break;
@@ -584,16 +586,16 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
         if (data->type != MENU_TYPE_MENU)
             SetMenuType(hWnd, MENU_TYPE_MENU);
 
-        if (data->menu.items)
-            free(data->menu.items);
+        if (data->menui.menu.items)
+            free(data->menui.menu.items);
         data->how = PICK_NONE;
-        data->menu.items = NULL;
-        data->menu.size = 0;
-        data->menu.allocated = 0;
+        data->menui.menu.items = NULL;
+        data->menui.menu.size = 0;
+        data->menui.menu.allocated = 0;
         data->done = 0;
         data->result = 0;
         for (i = 0; i < NUMTABS; ++i)
-            data->menu.tab_stop_size[i] = MIN_TABSTOP_SIZE;
+            data->menui.menu.tab_stop_size[i] = MIN_TABSTOP_SIZE;
     } break;
 
     case MSNH_MSG_ADDMENU: {
@@ -609,34 +611,34 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
         if (data->type != MENU_TYPE_MENU)
             break;
 
-        if (data->menu.size == data->menu.allocated) {
-            data->menu.allocated += 10;
-            data->menu.items = (PNHMenuItem) realloc(
-                data->menu.items, data->menu.allocated * sizeof(NHMenuItem));
+        if (data->menui.menu.size == data->menui.menu.allocated) {
+            data->menui.menu.allocated += 10;
+            data->menui.menu.items = (PNHMenuItem) realloc(
+                data->menui.menu.items, data->menui.menu.allocated * sizeof(NHMenuItem));
         }
 
-        new_item = data->menu.size;
-        ZeroMemory(&data->menu.items[new_item],
-                   sizeof(data->menu.items[new_item]));
-        data->menu.items[new_item].glyphinfo = msg_data->glyphinfo;
-        data->menu.items[new_item].identifier = *msg_data->identifier;
-        data->menu.items[new_item].accelerator = msg_data->accelerator;
-        data->menu.items[new_item].group_accel = msg_data->group_accel;
-        data->menu.items[new_item].attr = msg_data->attr;
-        strncpy(data->menu.items[new_item].str, msg_data->str,
+        new_item = data->menui.menu.size;
+        ZeroMemory(&data->menui.menu.items[new_item],
+                   sizeof(data->menui.menu.items[new_item]));
+        data->menui.menu.items[new_item].glyphinfo = msg_data->glyphinfo;
+        data->menui.menu.items[new_item].identifier = *msg_data->identifier;
+        data->menui.menu.items[new_item].accelerator = msg_data->accelerator;
+        data->menui.menu.items[new_item].group_accel = msg_data->group_accel;
+        data->menui.menu.items[new_item].attr = msg_data->attr;
+        strncpy(data->menui.menu.items[new_item].str, msg_data->str,
                 NHMENU_STR_SIZE);
        /* prevent & being interpreted as a mnemonic start */
-        strNsubst(data->menu.items[new_item].str, "&", "&&", 0);
-        data->menu.items[new_item].presel = msg_data->presel;
-        data->menu.items[new_item].itemflags = msg_data->itemflags;
+        strNsubst(data->menui.menu.items[new_item].str, "&", "&&", 0);
+        data->menui.menu.items[new_item].presel = msg_data->presel;
+        data->menui.menu.items[new_item].itemflags = msg_data->itemflags;
 
         /* calculate tabstop size */
         hDC = GetDC(hWnd);
         cached_font * font = mswin_get_font(NHW_MENU, msg_data->attr, hDC, FALSE);
         saveFont = SelectObject(hDC, font->hFont);
         GetTextMetrics(hDC, &tm);
-        p1 = data->menu.items[new_item].str;
-        p = strchr(data->menu.items[new_item].str, '\t');
+        p1 = data->menui.menu.items[new_item].str;
+        p = strchr(data->menui.menu.items[new_item].str, '\t');
         column = 0;
         for (;;) {
             TCHAR wbuf[BUFSZ];
@@ -647,11 +649,11 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
             DrawText(hDC, NH_A2W(p1, wbuf, BUFSZ), strlen(p1), &drawRect,
                      DT_CALCRECT | DT_LEFT | DT_VCENTER | DT_EXPANDTABS
                          | DT_SINGLELINE);
-            data->menu.tab_stop_size[column] =
-                max(data->menu.tab_stop_size[column],
+            data->menui.menu.tab_stop_size[column] =
+                max(data->menui.menu.tab_stop_size[column],
                     drawRect.right - drawRect.left);
 
-            menuitemwidth += data->menu.tab_stop_size[column];
+            menuitemwidth += data->menui.menu.tab_stop_size[column];
 
             if (p != NULL)
                 *p = '\t';
@@ -671,22 +673,22 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
         ReleaseDC(hWnd, hDC);
 
         /* calculate new menu width */
-        data->menu.menu_cx =
-            max(data->menu.menu_cx,
+        data->menui.menu.menu_cx =
+            max(data->menui.menu.menu_cx,
                 2 * TILE_X + menuitemwidth
                     + (tm.tmAveCharWidth + tm.tmOverhang) * 12);
 
         /* increment size */
-        data->menu.size++;
+        data->menui.menu.size++;
     } break;
 
     case MSNH_MSG_ENDMENU: {
         PMSNHMsgEndMenu msg_data = (PMSNHMsgEndMenu) lParam;
         if (msg_data->text) {
-            strncpy(data->menu.prompt, msg_data->text,
-                    sizeof(data->menu.prompt) - 1);
+            strncpy(data->menui.menu.prompt, msg_data->text,
+                    sizeof(data->menui.menu.prompt) - 1);
         } else {
-            ZeroMemory(data->menu.prompt, sizeof(data->menu.prompt));
+            ZeroMemory(data->menui.menu.prompt, sizeof(data->menui.menu.prompt));
         }
     } break;
 
@@ -768,7 +770,7 @@ LayoutMenu(HWND hWnd)
         ListView_SetColumnWidth(
             GetMenuControl(hWnd), 0,
             max(clrt.right - clrt.left - GetSystemMetrics(SM_CXVSCROLL),
-                data->menu.menu_cx));
+                data->menui.menu.menu_cx));
     }
 
     MoveWindow(GetMenuControl(hWnd), pt_elem.x, pt_elem.y, sz_elem.cx,
@@ -845,7 +847,7 @@ SetMenuListType(HWND hWnd, int how)
         panic("how should be one of PICK_NONE, PICK_ONE or PICK_ANY");
     };
 
-    if (strlen(data->menu.prompt) == 0) {
+    if (strlen(data->menui.menu.prompt) == 0) {
         dwStyles |= LVS_NOCOLUMNHEADER;
     }
 
@@ -882,22 +884,22 @@ SetMenuListType(HWND hWnd, int how)
     ZeroMemory(&lvcol, sizeof(lvcol));
     lvcol.mask = LVCF_WIDTH | LVCF_TEXT;
     lvcol.cx = monitorInfo.width;
-    lvcol.pszText = NH_A2W(data->menu.prompt, wbuf, BUFSZ);
+    lvcol.pszText = NH_A2W(data->menui.menu.prompt, wbuf, BUFSZ);
     ListView_InsertColumn(control, 0, &lvcol);
 
     /* add items to the list view */
-    for (i = 0; i < data->menu.size; i++) {
+    for (i = 0; i < data->menui.menu.size; i++) {
         LVITEM lvitem;
         ZeroMemory(&lvitem, sizeof(lvitem));
-        sprintf(buf, "%c - %s", max(data->menu.items[i].accelerator, ' '),
-                data->menu.items[i].str);
+        sprintf(buf, "%c - %s", max(data->menui.menu.items[i].accelerator, ' '),
+                data->menui.menu.items[i].str);
 
         lvitem.mask = LVIF_PARAM | LVIF_STATE | LVIF_TEXT;
         lvitem.iItem = i;
         lvitem.iSubItem = 0;
-        lvitem.state = data->menu.items[i].presel ? LVIS_SELECTED : 0;
+        lvitem.state = data->menui.menu.items[i].presel ? LVIS_SELECTED : 0;
         lvitem.pszText = NH_A2W(buf, wbuf, BUFSZ);
-        lvitem.lParam = (LPARAM) &data->menu.items[i];
+        lvitem.lParam = (LPARAM) &data->menui.menu.items[i];
         nItem = (int) SendMessage(control, LB_ADDSTRING, (WPARAM) 0,
                                   (LPARAM) buf);
         if (ListView_InsertItem(control, &lvitem) == -1) {
@@ -951,8 +953,8 @@ onMeasureItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
 
     /* Set the height of the list box items to max height of the individual
      * items */
-    for (i = 0; i < data->menu.size; i++) {
-        if (NHMENU_HAS_GLYPH(data->menu.items[i])
+    for (i = 0; i < data->menui.menu.size; i++) {
+        if (NHMENU_HAS_GLYPH(data->menui.menu.items[i])
             && !IS_MAP_ASCII(iflags.wc_map_mode)) {
             lpmis->itemHeight =
                 max(lpmis->itemHeight,
@@ -1006,7 +1008,7 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
 
     data = (PNHMenuWindow) GetWindowLongPtr(hWnd, GWLP_USERDATA);
 
-    item = &data->menu.items[lpdis->itemID];
+    item = &data->menui.menu.items[lpdis->itemID];
 
     tileDC = CreateCompatibleDC(lpdis->hDC);
     cached_font * font = mswin_get_font(NHW_MENU, item->attr, lpdis->hDC, FALSE);
@@ -1046,7 +1048,7 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
 
             y = (lpdis->rcItem.bottom + lpdis->rcItem.top - tileYScaled) / 2;
             bmpSaved = SelectBitmap(data->bmpDC, bmpCheck);
-            StretchBlt(lpdis->hDC, x, y, tileXScaled, tileYScaled, 
+            StretchBlt(lpdis->hDC, x, y, tileXScaled, tileYScaled,
                 data->bmpDC, 0, 0,  CHECK_WIDTH, CHECK_HEIGHT, SRCCOPY);
             SelectObject(data->bmpDC, bmpSaved);
         }
@@ -1079,7 +1081,10 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
     if (NHMENU_HAS_GLYPH(*item)) {
         if (!IS_MAP_ASCII(iflags.wc_map_mode)) {
             HGDIOBJ saveBmp;
-            double monitorScale = win10_monitor_scale(hWnd);
+            double monitorScale2;
+
+            nhUse(monitorScale2);
+            monitorScale2 = win10_monitor_scale(hWnd);
 
             saveBmp = SelectObject(tileDC, GetNHApp()->bmpMapTiles);
             ntile = glyph2tile[item->glyphinfo.glyph];
@@ -1092,13 +1097,13 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
 
             if (GetNHApp()->bmpMapTiles == GetNHApp()->bmpTiles) {
                 /* using original nethack tiles - apply image transparently */
-                (*GetNHApp()->lpfnTransparentBlt)(lpdis->hDC, x, y, 
+                (*GetNHApp()->lpfnTransparentBlt)(lpdis->hDC, x, y,
                                           tileXScaled, tileYScaled,
                                           tileDC, t_x, t_y, TILE_X, TILE_Y,
                                           TILE_BK_COLOR);
             } else {
                 /* using custom tiles - simple blt */
-                StretchBlt(lpdis->hDC, x, y, tileXScaled, tileYScaled, 
+                StretchBlt(lpdis->hDC, x, y, tileXScaled, tileYScaled,
                     tileDC, t_x, t_y, GetNHApp()->mapTile_X, GetNHApp()->mapTile_Y, SRCCOPY);
             }
             SelectObject(tileDC, saveBmp);
@@ -1136,13 +1141,13 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
     p = strchr(item->str, '\t');
     column = 0;
     SetRect(&drawRect, x, lpdis->rcItem.top,
-            min(x + data->menu.tab_stop_size[0], lpdis->rcItem.right),
+            min(x + data->menui.menu.tab_stop_size[0], lpdis->rcItem.right),
             lpdis->rcItem.bottom);
     for (;;) {
-        TCHAR wbuf[BUFSZ];
+        TCHAR wbuf2[BUFSZ];
         if (p != NULL)
             *p = '\0'; /* for time being, view tab field as zstring */
-        DrawText(lpdis->hDC, NH_A2W(p1, wbuf, BUFSZ), strlen(p1), &drawRect,
+        DrawText(lpdis->hDC, NH_A2W(p1, wbuf2, BUFSZ), strlen(p1), &drawRect,
                  DT_LEFT | DT_VCENTER | DT_SINGLELINE);
         if (p != NULL)
             *p = '\t';
@@ -1153,25 +1158,25 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
         p = strchr(p1, '\t');
         drawRect.left = drawRect.right + TAB_SEPARATION;
         ++column;
-        drawRect.right = min(drawRect.left + data->menu.tab_stop_size[column],
+        drawRect.right = min(drawRect.left + data->menui.menu.tab_stop_size[column],
                              lpdis->rcItem.right);
     }
 
     /* draw focused item */
     if (item->has_focus || (NHMENU_IS_SELECTABLE(*item)
-                            && data->menu.items[lpdis->itemID].count != -1)) {
+                            && data->menui.menu.items[lpdis->itemID].count != -1)) {
         RECT client_rt;
 
         GetClientRect(lpdis->hwndItem, &client_rt);
         client_rt.right = min(client_rt.right, lpdis->rcItem.right);
         if (NHMENU_IS_SELECTABLE(*item)
-            && data->menu.items[lpdis->itemID].count != 0
+            && data->menui.menu.items[lpdis->itemID].count != 0
             && item->glyphinfo.glyph != NO_GLYPH) {
-            if (data->menu.items[lpdis->itemID].count == -1) {
+            if (data->menui.menu.items[lpdis->itemID].count == -1) {
                 _stprintf(wbuf, TEXT("Count: All"));
             } else {
                 _stprintf(wbuf, TEXT("Count: %d"),
-                          data->menu.items[lpdis->itemID].count);
+                          data->menui.menu.items[lpdis->itemID].count);
             }
 
             /* TOOD: add blinking for blink text */
@@ -1231,8 +1236,8 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
     data = (PNHMenuWindow) GetWindowLongPtr(hWnd, GWLP_USERDATA);
 
     is_accelerator = FALSE;
-    for (i = 0; i < data->menu.size; i++) {
-        if (data->menu.items[i].accelerator == ch) {
+    for (i = 0; i < data->menui.menu.size; i++) {
+        if (data->menui.menu.items[i].accelerator == ch) {
             is_accelerator = TRUE;
             break;
         }
@@ -1253,7 +1258,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
         return -2;
 
     case MENU_LAST_PAGE:
-        i = max(0, data->menu.size - 1);
+        i = max(0, data->menui.menu.size - 1);
         ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
         ListView_EnsureVisible(hwndList, i, FALSE);
         return -2;
@@ -1263,10 +1268,10 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
         pageSize = ListView_GetCountPerPage(hwndList);
         curIndex = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
         /* Focus down one page */
-        i = min(curIndex + pageSize, data->menu.size - 1);
+        i = min(curIndex + pageSize, data->menui.menu.size - 1);
         ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
         /* Scrollpos down one page */
-        i = min(topIndex + (2 * pageSize - 1), data->menu.size - 1);
+        i = min(topIndex + (2 * pageSize - 1), data->menui.menu.size - 1);
         ListView_EnsureVisible(hwndList, i, FALSE);
         return -2;
 
@@ -1285,7 +1290,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
     case MENU_SELECT_ALL:
         if (data->how == PICK_ANY) {
             reset_menu_count(hwndList, data);
-            for (i = 0; i < data->menu.size; i++) {
+            for (i = 0; i < data->menui.menu.size; i++) {
                 SelectMenuItem(hwndList, data, i, -1);
             }
             return -2;
@@ -1295,7 +1300,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
     case MENU_UNSELECT_ALL:
         if (data->how == PICK_ANY) {
             reset_menu_count(hwndList, data);
-            for (i = 0; i < data->menu.size; i++) {
+            for (i = 0; i < data->menui.menu.size; i++) {
                 SelectMenuItem(hwndList, data, i, 0);
             }
             return -2;
@@ -1305,11 +1310,11 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
     case MENU_INVERT_ALL:
         if (data->how == PICK_ANY) {
             reset_menu_count(hwndList, data);
-            for (i = 0; i < data->menu.size; i++) {
-                if (menuitem_invert_test(0, data->menu.items[i].itemflags,
-                                         NHMENU_IS_SELECTED(data->menu.items[i])))
+            for (i = 0; i < data->menui.menu.size; i++) {
+                if (menuitem_invert_test(0, data->menui.menu.items[i].itemflags,
+                                         NHMENU_IS_SELECTED(data->menui.menu.items[i])))
                     SelectMenuItem(hwndList, data, i,
-                               NHMENU_IS_SELECTED(data->menu.items[i]) ? 0
+                               NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0
                                                                        : -1);
             }
             return -2;
@@ -1323,7 +1328,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
             topIndex = ListView_GetTopIndex(hwndList);
             pageSize = ListView_GetCountPerPage(hwndList);
             from = max(0, topIndex);
-            to = min(data->menu.size, from + pageSize);
+            to = min(data->menui.menu.size, from + pageSize);
             for (i = from; i < to; i++) {
                 SelectMenuItem(hwndList, data, i, -1);
             }
@@ -1338,7 +1343,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
             topIndex = ListView_GetTopIndex(hwndList);
             pageSize = ListView_GetCountPerPage(hwndList);
             from = max(0, topIndex);
-            to = min(data->menu.size, from + pageSize);
+            to = min(data->menui.menu.size, from + pageSize);
             for (i = from; i < to; i++) {
                 SelectMenuItem(hwndList, data, i, 0);
             }
@@ -1353,12 +1358,12 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
             topIndex = ListView_GetTopIndex(hwndList);
             pageSize = ListView_GetCountPerPage(hwndList);
             from = max(0, topIndex);
-            to = min(data->menu.size, from + pageSize);
+            to = min(data->menui.menu.size, from + pageSize);
             for (i = from; i < to; i++) {
-                if (menuitem_invert_test(0, data->menu.items[i].itemflags,
-                                         NHMENU_IS_SELECTED(data->menu.items[i])))                    
+                if (menuitem_invert_test(0, data->menui.menu.items[i].itemflags,
+                                         NHMENU_IS_SELECTED(data->menui.menu.items[i])))                    
                     SelectMenuItem(hwndList, data, i,
-                               NHMENU_IS_SELECTED(data->menu.items[i]) ? 0
+                               NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0
                                                                        : -1);
             }
             return -2;
@@ -1377,13 +1382,13 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
                 SetFocus(hwndList); // set focus back to the list control
             if (!*buf || *buf == '\033')
                 return -2;
-            for (i = 0; i < data->menu.size; i++) {
-                if (NHMENU_IS_SELECTABLE(data->menu.items[i])
-                    && strstr(data->menu.items[i].str, buf)) {
+            for (i = 0; i < data->menui.menu.size; i++) {
+                if (NHMENU_IS_SELECTABLE(data->menui.menu.items[i])
+                    && strstr(data->menui.menu.items[i].str, buf)) {
                     if (data->how == PICK_ANY) {
                         SelectMenuItem(
                             hwndList, data, i,
-                            NHMENU_IS_SELECTED(data->menu.items[i]) ? 0 : -1);
+                            NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0 : -1);
                     } else if (data->how == PICK_ONE) {
                         SelectMenuItem(hwndList, data, i, -1);
                         ListView_SetItemState(hwndList, i, LVIS_FOCUSED,
@@ -1418,10 +1423,10 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
             pageSize = ListView_GetCountPerPage(hwndList);
             curIndex = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
             /* Focus down one page */
-            i = min(curIndex + pageSize, data->menu.size - 1);
+            i = min(curIndex + pageSize, data->menui.menu.size - 1);
             ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
             /* Scrollpos down one page */
-            i = min(topIndex + (2 * pageSize - 1), data->menu.size - 1);
+            i = min(topIndex + (2 * pageSize - 1), data->menui.menu.size - 1);
             ListView_EnsureVisible(hwndList, i, FALSE);
 
             return -2;
@@ -1437,7 +1442,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
                 if (i >= 0) {
                     SelectMenuItem(
                         hwndList, data, i,
-                        NHMENU_IS_SELECTED(data->menu.items[i]) ? 0 : -1);
+                        NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0 : -1);
                 }
             }
         }
@@ -1445,18 +1450,18 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
 
     accelerator:
     default:
-        if (strchr(data->menu.gacc, ch)
-            && !(ch == '0' && data->menu.counting)) {
+        if (strchr(data->menui.menu.gacc, ch)
+            && !(ch == '0' && data->menui.menu.counting)) {
             /* matched a group accelerator */
             if (data->how == PICK_ANY || data->how == PICK_ONE) {
                 reset_menu_count(hwndList, data);
-                for (i = 0; i < data->menu.size; i++) {
-                    if (NHMENU_IS_SELECTABLE(data->menu.items[i])
-                        && data->menu.items[i].group_accel == ch) {
+                for (i = 0; i < data->menui.menu.size; i++) {
+                    if (NHMENU_IS_SELECTABLE(data->menui.menu.items[i])
+                        && data->menui.menu.items[i].group_accel == ch) {
                         if (data->how == PICK_ANY) {
                             SelectMenuItem(
                                 hwndList, data, i,
-                                NHMENU_IS_SELECTED(data->menu.items[i]) ? 0
+                                NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0
                                                                         : -1);
                         } else if (data->how == PICK_ONE) {
                             SelectMenuItem(hwndList, data, i, -1);
@@ -1477,14 +1482,14 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
             int count;
             i = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
             if (i >= 0) {
-                count = data->menu.items[i].count;
+                count = data->menui.menu.items[i].count;
                 if (count == -1)
                     count = 0;
                 count *= 10L;
                 count += (int) (ch - '0');
                 if (count != 0) /* ignore leading zeros */ {
-                    data->menu.counting = TRUE;
-                    data->menu.items[i].count = min(100000, count);
+                    data->menui.menu.counting = TRUE;
+                    data->menui.menu.items[i].count = min(100000, count);
                     ListView_RedrawItems(hwndList, i,
                                          i); /* update count mark */
                 }
@@ -1496,15 +1501,15 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
             || is_accelerator) {
             if (data->how == PICK_ANY || data->how == PICK_ONE) {
                 topIndex = ListView_GetTopIndex(hwndList);
-                if( topIndex < 0 || topIndex > data->menu.size ) break; // impossible?
+                if( topIndex < 0 || topIndex > data->menui.menu.size ) break; // impossible?
                 int iter = topIndex;
                 do {
-                    i = iter % data->menu.size;
-                    if (data->menu.items[i].accelerator == ch) {
+                    i = iter % data->menui.menu.size;
+                    if (data->menui.menu.items[i].accelerator == ch) {
                         if (data->how == PICK_ANY) {
                             SelectMenuItem(
                                 hwndList, data, i,
-                                NHMENU_IS_SELECTED(data->menu.items[i]) ? 0
+                                NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0
                                                                         : -1);
                             ListView_SetItemState(hwndList, i, LVIS_FOCUSED,
                                                   LVIS_FOCUSED);
@@ -1517,7 +1522,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
                             return -2;
                         }
                     }
-                } while( (++iter % data->menu.size) != topIndex ); 
+                } while( (++iter % data->menui.menu.size) != topIndex );
             }
         }
         break;
@@ -1549,10 +1554,10 @@ mswin_menu_window_size(HWND hWnd, LPSIZE sz)
         extra_cx = (wrt.right - wrt.left) - sz->cx;
 
         if (data->type == MENU_TYPE_MENU) {
-            sz->cx = data->menu.menu_cx + GetSystemMetrics(SM_CXVSCROLL);
+            sz->cx = data->menui.menu.menu_cx + GetSystemMetrics(SM_CXVSCROLL);
         } else {
             /* Use the width of the text box */
-            sz->cx = data->text.text_box_size.cx
+            sz->cx = data->menui.text.text_box_size.cx
                      + 2 * GetSystemMetrics(SM_CXVSCROLL);
         }
         sz->cx += extra_cx;
@@ -1569,18 +1574,18 @@ SelectMenuItem(HWND hwndList, PNHMenuWindow data, int item, int count)
 {
     int i;
 
-    if (item < 0 || item >= data->menu.size)
+    if (item < 0 || item >= data->menui.menu.size)
         return;
 
     if (data->how == PICK_ONE && count != 0) {
-        for (i = 0; i < data->menu.size; i++)
-            if (item != i && data->menu.items[i].count != 0) {
-                data->menu.items[i].count = 0;
+        for (i = 0; i < data->menui.menu.size; i++)
+            if (item != i && data->menui.menu.items[i].count != 0) {
+                data->menui.menu.items[i].count = 0;
                 ListView_RedrawItems(hwndList, i, i);
             };
     }
 
-    data->menu.items[item].count = count;
+    data->menui.menu.items[item].count = count;
     ListView_RedrawItems(hwndList, item, item);
     reset_menu_count(hwndList, data);
 }
@@ -1589,7 +1594,7 @@ void
 reset_menu_count(HWND hwndList, PNHMenuWindow data)
 {
     int i;
-    data->menu.counting = FALSE;
+    data->menui.menu.counting = FALSE;
     if (IsWindow(hwndList)) {
         i = ListView_GetNextItem((hwndList), -1, LVNI_FOCUSED);
         if (i >= 0)
index 2289b5889024414d185abd0eab04aa48f63d66c5..7cffdd509d25cb8122b9c190d9de43c2687b9d09 100644 (file)
@@ -67,7 +67,7 @@ typedef struct mswin_nhmsg_end_menu {
 
 typedef struct mswin_nhmsg_get_text {
     size_t max_size;
-    char buffer[];
+    char buffer[TEXT_BUFFER_SIZE];
 } MSNHMsgGetText, *PMSNHMsgGetText;
 
 typedef struct mswin_nhmsg_update_status {
index 1e73527dd60592d873f62a5796306cee7f3528b1..69d039bf1fb1698ba2e57fd1cd6d5e1b2fdda6e3 100644 (file)
@@ -664,7 +664,7 @@ onPaint(HWND hWnd)
             /* Find out the cursor (caret) position */
             if (i == MSG_LINES - 1) {
                 int nnum, numfit;
-                SIZE size;
+                SIZE size = {0};
                 TCHAR *nbuf;
                 int nlen;
 
index b53899189a40a612d7bcb9195abb6a310c913fd6..3f0c448cfb7cb42030ce9b65c45ffa55c0ff4b5e 100644 (file)
@@ -155,8 +155,8 @@ mswin_display_splash_window(BOOL show_ver)
         /* Show complete version information */
         dlb *f;
         char verbuf[BUFSZ];
-        int verstrsize = 0;
+        /* int verstrsize = 0; */
+
         getversionstring(verbuf);
         strbuf_append(&strbuf, verbuf);
         strbuf_append(&strbuf, "\n\n");
index 07855155b989a5a8dea55ac95ceba7f422943c1d..d60d7d970f71c3e0f0100748d037a36118470860 100644 (file)
@@ -350,7 +350,7 @@ onWMPaint(HWND hWnd, WPARAM wParam, LPARAM lParam)
 
                 BOOL useUnicode = fnt->supportsUnicode;
 
-                winos_ascii_to_wide_str(str, wbuf, SIZE(wbuf));
+                winos_ascii_to_wide_str((const unsigned char *) str, wbuf, SIZE(wbuf));
 
                 nFg = (clr == NO_COLOR ? status_fg_color
                     : ((clr >= 0 && clr < CLR_MAX) ? nhcolor_to_RGB(clr)
index 35083c5b9f0d6b4af1cfb1c782dc85fc2f727bdd..4a5fb1987fdfea655fbe8e6eb029f14633533e85 100644 (file)
@@ -1418,7 +1418,7 @@ mswin_nhgetch(void)
     while ((event = mswin_input_pop()) == NULL || event->type != NHEVENT_CHAR)
         mswin_main_loop();
 
-    key = event->kbd.ch;
+    key = event->ei.kbd.ch;
     return (key);
 }
 
@@ -1450,13 +1450,13 @@ mswin_nh_poskey(int *x, int *y, int *mod)
 
     if (event->type == NHEVENT_MOUSE) {
        if (iflags.wc_mouse_support) {
-            *mod = event->ms.mod;
-            *x = event->ms.x;
-            *y = event->ms.y;
+            *mod = event->ei.ms.mod;
+            *x = event->ei.ms.x;
+            *y = event->ei.ms.y;
         }
         key = 0;
     } else {
-        key = event->kbd.ch;
+        key = event->ei.kbd.ch;
     }
     return (key);
 }
@@ -2062,7 +2062,6 @@ mswin_preference_update(const char *pref)
     }
 }
 
-#define TEXT_BUFFER_SIZE 4096
 char *
 mswin_getmsghistory(boolean init)
 {
index 03d92973a01c72d91c3a5d67c517358673764b34..1b2e664b4558dcb6e6256b0f1e2cabd88cd00198 100644 (file)
@@ -35,6 +35,8 @@
 #include "hack.h"
 #include "color.h"
 
+#define TEXT_BUFFER_SIZE 4096
+
 /* Create an array to keep track of the various windows */
 
 #ifndef MAXWINDOWS