// FUNCTION: WndProc(HWND, unsigned, WORD, LONG) // // PURPOSE: Processes messages for the main window. */
| 199 | // PURPOSE: Processes messages for the main window. |
| 200 | */ |
| 201 | LRESULT CALLBACK |
| 202 | MainWndProc(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 |
nothing calls this directly
no test coverage detected