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

Function onMSNHCommand

win/win32/mhmap.c:667–805  ·  view source on GitHub ↗

on WM_COMMAND */

Source from the content-addressed store, hash-verified

665
666/* on WM_COMMAND */
667void
668onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
669{
670 PNHMapWindow data;
671
672 data = (PNHMapWindow) GetWindowLongPtr(hWnd, GWLP_USERDATA);
673 switch (wParam) {
674 case MSNH_MSG_PRINT_GLYPH: {
675 PMSNHMsgPrintGlyph msg_data = (PMSNHMsgPrintGlyph) lParam;
676 setGlyph(data, msg_data->x, msg_data->y,
677 &msg_data->glyphinfo, &msg_data->bkglyphinfo);
678 } break;
679
680 case MSNH_MSG_CLIPAROUND: {
681 PMSNHMsgClipAround msg_data = (PMSNHMsgClipAround) lParam;
682 int x, y;
683 BOOL scroll_x, scroll_y;
684 int mcam = iflags.wc_scroll_margin;
685
686 /* calculate if you should clip around */
687 scroll_x =
688 !GetNHApp()->bNoHScroll
689 && (msg_data->x < (data->xPos + mcam)
690 || msg_data->x > (data->xPos + data->xPageSize - mcam));
691 scroll_y =
692 !GetNHApp()->bNoVScroll
693 && (msg_data->y < (data->yPos + mcam)
694 || msg_data->y > (data->yPos + data->yPageSize - mcam));
695
696 mcam += iflags.wc_scroll_amount - 1;
697 /* get page size and center horizontally on x-position */
698 if (scroll_x) {
699 if (data->xPageSize <= 2 * mcam) {
700 x = max(0, min(COLNO, msg_data->x - data->xPageSize / 2));
701 } else if (msg_data->x < data->xPos + data->xPageSize / 2) {
702 x = max(0, min(COLNO, msg_data->x - mcam));
703 } else {
704 x = max(0, min(COLNO, msg_data->x - data->xPageSize + mcam));
705 }
706 SendMessage(hWnd, WM_HSCROLL, (WPARAM) MAKELONG(SB_THUMBTRACK, x),
707 (LPARAM) NULL);
708 }
709
710 /* get page size and center vertically on y-position */
711 if (scroll_y) {
712 if (data->yPageSize <= 2 * mcam) {
713 y = max(0, min(ROWNO, msg_data->y - data->yPageSize / 2));
714 } else if (msg_data->y < data->yPos + data->yPageSize / 2) {
715 y = max(0, min(ROWNO, msg_data->y - mcam));
716 } else {
717 y = max(0, min(ROWNO, msg_data->y - data->yPageSize + mcam));
718 }
719 SendMessage(hWnd, WM_VSCROLL, (WPARAM) MAKELONG(SB_THUMBTRACK, y),
720 (LPARAM) NULL);
721 }
722 } break;
723
724 case MSNH_MSG_CLEAR_WINDOW:

Callers 1

MapWndProcFunction · 0.70

Calls 5

setGlyphFunction · 0.85
clearAllFunction · 0.85
dirtyFunction · 0.85
winos_ascii_to_wideFunction · 0.85
GetNHAppFunction · 0.70

Tested by

no test coverage detected