in src/wfgoto.cpp [499:538]
LRESULT APIENTRY GotoEditSubclassProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
switch (uMsg)
{
case WM_GETDLGCODE:
if (lParam) {
LPMSG lpmsg = (LPMSG)lParam;
if (lpmsg->message == WM_KEYDOWN && (lpmsg->wParam == VK_DOWN || lpmsg->wParam == VK_UP || lpmsg->wParam == VK_HOME || lpmsg->wParam == VK_END)) {
HWND hwndDlg = GetParent(hwnd);
DWORD iSel = SendDlgItemMessage(hwndDlg, IDD_GOTOLIST, LB_GETCURSEL, 0, 0);
if (iSel == LB_ERR)
iSel = 0;
else if (lpmsg->wParam == VK_DOWN)
iSel++;
else if (lpmsg->wParam == VK_UP)
iSel--;
else if (lpmsg->wParam == VK_HOME)
iSel = 0;
else if (lpmsg->wParam == VK_END)
{
iSel = SendDlgItemMessage(hwndDlg, IDD_GOTOLIST, LB_GETCOUNT, 0, 0) - 1;
}
if (SendDlgItemMessage(hwndDlg, IDD_GOTOLIST, LB_SETCURSEL, iSel, 0) == LB_ERR) {
if (lpmsg->wParam == VK_DOWN)
SendDlgItemMessage(hwndDlg, IDD_GOTOLIST, LB_SETCURSEL, 0, 0);
else if (lpmsg->wParam == VK_UP)
SendDlgItemMessage(hwndDlg, IDD_GOTOLIST, LB_SETCURSEL, SendDlgItemMessage(hwndDlg, IDD_GOTOLIST, LB_GETCOUNT, 0, 0) - 1, 0);
}
return DLGC_WANTALLKEYS;
}
}
break;
}
return CallWindowProc(wpOrigEditProc, hwnd, uMsg, wParam, lParam);
}