(from <Someone>)

This implements some items on the ToDo list:
- H0005: Space does the same as PgDn in text, menu and 'menutext'
        windows if NetHack mode is on.
- M0004: The cursor (caret) is hidden in text windows and menu
         windows.
         PgUp/PgDn/Up/Dn don't move the cursor, but scroll the
         window.
This commit is contained in:
nethack.allison
2002-03-19 22:37:22 +00:00
parent bdfcd6915e
commit 184ce30dad
2 changed files with 89 additions and 25 deletions
+59 -21
View File
@@ -306,6 +306,14 @@ BOOL CALLBACK MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
data->done = 1; data->done = 1;
data->result = 0; data->result = 0;
return TRUE; return TRUE;
case IDC_MENU_TEXT:
switch (HIWORD(wParam))
{
case EN_SETFOCUS:
HideCaret((HWND)lParam);
return TRUE;
}
} }
} break; } break;
@@ -1012,23 +1020,33 @@ BOOL onListChar(HWND hWnd, HWND hwndList, WORD ch)
return -2; return -2;
case ' ': case ' ':
/* ends menu for PICK_ONE/PICK_NONE if (GetNHApp()->regNetHackMode) {
select item for PICK_ANY */ /* NetHack mode: Scroll down one page */
if( data->how==PICK_ONE || data->how==PICK_NONE ) { topIndex = ListView_GetTopIndex( hwndList );
data->done = 1; pageSize = ListView_GetCountPerPage( hwndList );
data->result = 0; i = min(topIndex+pageSize, data->menu.size-1);
return -2; ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
} else if( data->how==PICK_ANY ) { ListView_EnsureVisible(hwndList, i, FALSE);
i = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED); return -2;
if( i>=0 ) { } else {
SelectMenuItem( /* Windows mode: ends menu for PICK_ONE/PICK_NONE
hwndList, select item for PICK_ANY */
data, if( data->how==PICK_ONE || data->how==PICK_NONE ) {
i, data->done = 1;
NHMENU_IS_SELECTED(data->menu.items[i])? 0 : -1 data->result = 0;
); return -2;
} } else if( data->how==PICK_ANY ) {
} i = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
if( i>=0 ) {
SelectMenuItem(
hwndList,
data,
i,
NHMENU_IS_SELECTED(data->menu.items[i])? 0 : -1
);
}
}
}
break; break;
default: default:
@@ -1270,15 +1288,35 @@ LRESULT CALLBACK NHMenuListWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
return 0; return 0;
} }
/*-----------------------------------------------------------------------------*/ /*-----------------------------------------------------------------------------*/
/* Text control window proc - implements close on space */ /* Text control window proc - implements scrolling without a cursor */
LRESULT CALLBACK NHMenuTextWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK NHMenuTextWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{ {
switch(message) { switch(message) {
/* close on space */
case WM_KEYDOWN: case WM_KEYDOWN:
if( wParam==VK_SPACE ) { switch (wParam)
PostMessage(GetParent(hWnd), WM_COMMAND, MAKELONG(IDOK, 0), 0); {
/* close on space in Windows mode
page down on space in NetHack mode */
case VK_SPACE:
if (GetNHApp()->regNetHackMode)
SendMessage(hWnd, EM_SCROLL, SB_PAGEDOWN, 0);
else
PostMessage(GetParent(hWnd), WM_COMMAND, MAKELONG(IDOK, 0), 0);
return 0;
case VK_NEXT:
SendMessage(hWnd, EM_SCROLL, SB_PAGEDOWN, 0);
return 0;
case VK_PRIOR:
SendMessage(hWnd, EM_SCROLL, SB_PAGEUP, 0);
return 0;
case VK_UP:
SendMessage(hWnd, EM_SCROLL, SB_LINEUP, 0);
return 0;
case VK_DOWN:
SendMessage(hWnd, EM_SCROLL, SB_LINEDOWN, 0);
return 0;
} }
break; break;
+30 -4
View File
@@ -125,6 +125,13 @@ BOOL CALLBACK NHTextWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara
DestroyWindow(hWnd); DestroyWindow(hWnd);
SetFocus(GetNHApp()->hMainWnd); SetFocus(GetNHApp()->hMainWnd);
return TRUE; return TRUE;
case IDC_TEXT_CONTROL:
switch (HIWORD(wParam))
{
case EN_SETFOCUS:
HideCaret((HWND)lParam);
return TRUE;
}
} }
break; break;
@@ -203,13 +210,32 @@ LRESULT CALLBACK NHEditHookWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
{ {
switch(message) { switch(message) {
/* close on space */
case WM_KEYDOWN: case WM_KEYDOWN:
if( wParam==VK_SPACE ) { switch (wParam)
PostMessage(GetParent(hWnd), WM_COMMAND, MAKELONG(IDOK, 0), 0); {
/* close on space in Windows mode
page down on space in NetHack mode */
case VK_SPACE:
if (GetNHApp()->regNetHackMode)
SendMessage(hWnd, EM_SCROLL, SB_PAGEDOWN, 0);
else
PostMessage(GetParent(hWnd), WM_COMMAND, MAKELONG(IDOK, 0), 0);
return 0;
case VK_NEXT:
SendMessage(hWnd, EM_SCROLL, SB_PAGEDOWN, 0);
return 0;
case VK_PRIOR:
SendMessage(hWnd, EM_SCROLL, SB_PAGEUP, 0);
return 0;
case VK_UP:
SendMessage(hWnd, EM_SCROLL, SB_LINEUP, 0);
return 0;
case VK_DOWN:
SendMessage(hWnd, EM_SCROLL, SB_LINEDOWN, 0);
return 0;
} }
break; break;
} }
if( editControlWndProc ) if( editControlWndProc )