// CEditWnd::DispatchEvent_PPB
...
case WM_KEYDOWN:
switch(wParam){
case VK_UP:
OnVScroll(MAKEWPARAM(SB_LINEUP, 0), m_hwndVScrollBar);
break;
case VK_DOWN: ... break;
case VK_PAGEUP:
// トップを表示していれば前のページへ。さもなければ上にずらす。
GetScrollInfo(m_hwndVScr~, SB_CTL|SB_VERT, &m_si);
if(m_si.nPos == 0 || m_si.nPos == m_si.nMin)
OnVScroll(MAKEWPARAM(SB_PAGEUP, 0), m_hwndVSc~);
else OnPreviewGoPage(m_nCurPageNum-1); ... break;
case VK_PAGEDOWN: ...
SCROLLINFOをメンバーに加えれば(m_si)、{G,S}etScroll{Pos,Range}を{G,S}etScrollInfoに吸収合併できるし、コードの節約になる。
できたら、WM_LBUTTON{DOWN,UP},WM_MOUSEMOVEをハンドルして、ハンドドラッグを実装してください。プレビュー時に手の形のカーソルにし、ドラッグしたらスクロールするように。制限時間30分。