case VK_PRIOR:

  PageUp();

  break;

 case VK_NEXT:

  PageDown();

  break;

 case VK_ESCAPE:

 case VK_SPACE:

 case VK_RETURN:

  ShowDialog();

  break;

 }

 DirectDrawWin::OnKeyDown(key, nRepCnt, nFlags);

}

С первого взгляда на листинг OnKeyDown() можно разве что понять, какие клавиши обрабатываются программой, потому что вся содержательная работа поручается другим функциям. Обратите внимание — при нажатии клавиш Escape, пробел и Enter вызывается одна и та же функция ShowDialog(). Это облегчает вызов диалогового окна после вывода изображения.

Остальные восемь функций, вызываемых функцией OnKeyDown(), изменяют положение поверхности во время прокрутки:

• Up()

• Down()

• Left()

• Right()

• Home()

• End()

• PageUp()

• PageDown()

Каждая из этих функций определяет положение поверхности по значениям переменных x, y, xlimit, ylimit, xscroll и yscroll. Код всех восьми функций приведен в листинге 5.9.

Листинг 5.9. Функции смещения поверхности

void BmpViewWin::Up(int inc) {

 if (!yscroll) return;

 if (y+inc<0) {

  y+=inc;

  update_screen=TRUE;

 } else {

  y=0;

  update_screen=TRUE;

 }

}

void BmpViewWin::Down(int inc) {

 if (!yscroll) return;

 if (y-inc>=ylimit) {

  y-=inc;

  update_screen=TRUE;

 } else {

  y=ylimit;

  update_screen=TRUE;

 }

}

void BmpViewWin::Left(int inc) {

 if (!xscroll)  return;

 if (x+inc<0) {

  x+=inc;

  update_screen=TRUE;

 } else {

  x=0;

  update_screen=TRUE;

 }

}

void BmpViewWin::Right(int inc) {

 if (!xscroll) return;

 if (x-inc>=xlimit) {

  x-=inc;

  update_screen=TRUE;

 } else {

  x=xlimit;

  update_screen=TRUE;

 }

}

void BmpViewWin::Home() {

 if (xscroll && x!=0) {

  x=0;

  update_screen=TRUE;

 }

 if (yscroll && y!=0) {

  y=0;

  update_screen=TRUE;

 }

}

void BmpViewWin::End() {

 if (yscroll) {

  y=-(bmprect.Height()-displayrect.Height());

  update_screen=TRUE;

 }

 if (xscroll) {

  x=-(bmprect.Width()-displayrect.Width());

  update_screen=TRUE;

 }

}

void BmpViewWin::PageUp() {

 if (yscroll) {

  if (y-displayrect.Height()>0)   {

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату