MCPcopy Create free account
hub / github.com/NetHack/NetHack / MainWndProc

Function MainWndProc

win/win32/mhmain.c:201–528  ·  view source on GitHub ↗

// FUNCTION: WndProc(HWND, unsigned, WORD, LONG) // // PURPOSE: Processes messages for the main window. */

Source from the content-addressed store, hash-verified

199// PURPOSE: Processes messages for the main window.
200*/
201LRESULT CALLBACK
202MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
203{
204 PNHMainWindow data = (PNHMainWindow) GetWindowLongPtr(hWnd, GWLP_USERDATA);
205
206 switch (message) {
207 case WM_CREATE:
208 /* set window data */
209 data = (PNHMainWindow) malloc(sizeof(NHMainWindow));
210 if (!data)
211 panic("out of memory");
212
213 ZeroMemory(data, sizeof(NHMainWindow));
214 data->mapAcsiiModeSave = MAP_MODE_ASCII12x16;
215 SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) data);
216 windowdata[NHW_MAIN].address = (genericptr_t) data;
217
218 /* update menu items */
219 CheckMenuItem(
220 GetMenu(hWnd), IDM_SETTING_LOCKWINDOWS,
221 MF_BYCOMMAND
222 | (GetNHApp()->bWindowsLocked ? MF_CHECKED : MF_UNCHECKED));
223
224 CheckMenuItem(GetMenu(hWnd), IDM_SETTING_AUTOLAYOUT,
225 GetNHApp()->bAutoLayout ? MF_CHECKED : MF_UNCHECKED);
226
227 /* store handle to the mane menu in the application record */
228 GetNHApp()->hMainWnd = hWnd;
229 break;
230
231 case WM_MSNH_COMMAND:
232 onMSNHCommand(hWnd, wParam, lParam);
233 break;
234
235 case WM_KEYDOWN: {
236
237 /* translate arrow keys into nethack commands */
238 switch (wParam) {
239 case VK_LEFT:
240 if (STATEON(VK_CONTROL)) {
241 /* scroll map window one line left */
242 SendMessage(mswin_hwnd_from_winid(WIN_MAP), WM_HSCROLL,
243 MAKEWPARAM(SB_LINEUP, 0), (LPARAM) NULL);
244 } else {
245 NHEVENT_KBD(KEYTABLE(KEY_W));
246 }
247 return 0;
248
249 case VK_RIGHT:
250 if (STATEON(VK_CONTROL)) {
251 /* scroll map window one line right */
252 SendMessage(mswin_hwnd_from_winid(WIN_MAP), WM_HSCROLL,
253 MAKEWPARAM(SB_LINEDOWN, 0), (LPARAM) NULL);
254 } else {
255 NHEVENT_KBD(KEYTABLE(KEY_E));
256 }
257 return 0;
258

Callers

nothing calls this directly

Calls 12

NHMessageBoxFunction · 0.85
hangupFunction · 0.85
dosaveFunction · 0.85
doneFunction · 0.85
GetNHAppFunction · 0.70
onMSNHCommandFunction · 0.70
mswin_hwnd_from_winidFunction · 0.70
mswin_select_map_modeFunction · 0.70
onWMCommandFunction · 0.70
mswin_layout_main_windowFunction · 0.70
bailFunction · 0.70
panicFunction · 0.50

Tested by

no test coverage detected