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 обеспечивает работу со всей плоскостью окна.