notepad2 컴파일 삽질기 부록#7 : Shift+마우스 휠에 Page Up/Down 기능 부여

이 기능은 okto 님께서 건의하신 기능임. 구버전에 있었다고 주장하시지만, 그건 아니더라. ㅋㅋ

notepad2에 있는 마우스 휠 기능은 Ctrl키(확대/축소)가 전부다.
(Shift키와 함께 휠을 굴리면 아무런 동작을 하지 않는다)

그런데, Shift키와 함께 휠을 굴리면 Page Up/Down 기능이 동작되게 해달라는 요청이 있었다.
처음엔 그냥 못 들은 척 하려고 했지만(ㅎㅎㅎ) 사용자의 건의를 무시할 수 없어 기능을 부여하게 되었다.

이 기능을 부여하려면 아래처럼 수정하면 된다.

수정 대상 파일은 ScintillaWin.cxx 하나이며, 수정할 함수는 sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam)이다.
그리고, 이 함수는 전체가 하나의 switch-case 문으로 되어있는데, 이 중 case WM_MOUSEWHEEL: 부분만 수정하면 된다.

case 바로 아래를 보면 아래와 같은 내용이 있다.

if (wParam & MK_SHIFT) {
    return ::DefWindowProc(MainHWND(), iMessage, wParam, lParam);
}

이 곳은 Shift키와 함께 휠을 굴리면 무시하는 부분인데, 이 내용을 삭제한다.


다음으로, case 문의 끝부분에 있는 아래와 같은 내용을 찾는다.

    } else {
        // Scroll
        ScrollTo(topLine + linesToScroll);
    }

이 부분을 아래와 같이 수정한다.

    } else if (wParam & MK_SHIFT) {
        int topLineNew=topLine;
        if (linesToScroll < 0)
            topLineNew -= LinesToScroll();
        else
            topLineNew += LinesToScroll();
            ScrollTo(topLineNew);
    } else {
        // Scroll
        ScrollTo(topLine + linesToScroll);
    }

앞에서 무력화시킨 Shift의 처리를 여기에 추가하는 것이다.

이렇게 하면 Shift+휠을 Page Up/Down으로 사용할 수 있다.
여러분~ 즐삽하세요~