пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Обробка повідомлень WM_CHAR, WM_PAINT.

WM_CHAR - нажата кнопка на клавиатуре. WM_PAINT - необходимо обновление окна. Пример обработчика нажатия клавиш клавиатуры:

char str [80]; // рядок символів для виводу

void CMainWin::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)

[CClientDC dc(this);                         // отримання контексту вікна

  dc.TextOut(1,1," ", 3);                     // стирання старого тексту

  wsprintf(str,"%с", ch);                     // формування рядка із кодом клавіші

  dc.TextOut(1, 1, str, strlen(str));      // вивід рядка у координату (1, 1)

]

Для обновления содержимого рабочего окна программы необходимо отправить сообщения WM_PAINT. Вне его применением содержимое окна может не отображаться. То есть каждый раз, когда есть потребность выводить информацию в окно программы, следует обращаться к этому сообщению.Сообщению WM_PAINT соответствует макрокоманда ON_WM_PAINT (), а макрокоманде - обработчик OnPaint (). Этот обработчик может выглядеть так:

void CMinWin::OnChar(UINT ch,UINT count,UINT flags)

     [ char *str;

        wsprintf(str, "%c", ch);

        MessageBox(str,"Pressed key!",MB_ICONHAND|MB_ABORTRETRYIGNORE);]

В примере приведены обработчик OnPaint (), обеспечивающий вывод на экран символа, введенного с клавиатуры пользователем соответствии обработчике OnChar (). Видно, что для получения контекста устройства здесь использовано объект другого типа, а именно CPaintDC. CClientDC сотрудничает только с клиентской частью окна программы, CPaintDC обеспечивает работу со всей плоскостью окна.


22.06.2015; 09:38
хиты: 291
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь