Пример программы.
message handling II.hpp #include <afxwin.h> // Класс основного окна class CMainWin: public CFrameWnd { public: CMainWin(); afx_msg void OnPaint(); // Обработчик сообщения WM_DESTROY afx_msg void OnDestroy(); // Обработчик сообщения WM_TIMER afx_msg void OnTimer(UINT ID); char str[50]; DECLARE_MESSAGE_MAP() }; // Класс приложения class CApp: public CWinApp { public: BOOL InitInstance(); }; message handling II.cpp #include <afxwin.h> #include <time.h> #include <string.h> #include "MESSAGE HANDLING - II.HPP" // Реализация BOOL CApp::InitInstance() { m_pMainWnd = new CMainWin; m_pMainWnd->ShowWindow(SW_RESTORE); m_pMainWnd->UpdateWindow(); // Установка таймера с идентификатором 1 и // интервалом 500 мс m_pMainWnd->SetTimer(1, 500, 0); return TRUE; } CMainWin::CMainWin() { // Определение прямоугольника, в котором будет // размещено окно RECT rect; rect.left = rect.top = 10; rect.right = 200; rect.bottom = 60; // Создание окна в определенном экранном // прямоугольнике this->Create(0, "CLOCK", WS_OVERLAPPEDWINDOW, rect); strcpy(str, ""); } // Реализация карты сообщений главного окна BEGIN_MESSAGE_MAP(CMainWin, CFrameWnd) ON_WM_PAINT() ON_WM_DESTROY() ON_WM_TIMER() END_MESSAGE_MAP() afx_msg void CMainWin::OnPaint() { CPaintDC dc(this); // Выводим в окно строку текущего времени dc.TextOut(1, 1, " ", 3); dc.TextOut(1, 1, str); } afx_msg void CMainWin::OnTimer(UINT ID) { // Предполагаем, что в программе один таймер, поэтому // не проверяем ID. // Получаем строку текущего времени CTime curtime = CTime::GetCurrentTime(); tm *newtime; newtime = curtime.GetLocalTm(); sprintf(str, asctime(newtime)); str[strlen(str) - 1] = '\0'; // Посылаем сообщение WM_PAINT -- его обработчик // отобразит строку. this->InvalidateRect(0); } afx_msg void CMainWin::OnDestroy() { // При закрытии окна удаляем связанный с ним // таймер. KillTimer(1); } CApp App; // Единственный экземпляр приложения.
Рис. 4. Программа-"часы"
Мы получаем текущее время с помощью класса CTime. Это еще один полезный класс общего назначения из MFC. Вы можете использовать приведенный выше код для получения текущего локального времени. Также, мы при создании окна явно задали координаты прямоугольника, в котором оно должно быть отображено, с помощью структуры RECT. Таким образом, всегда можно задать начальные размеры и положение окна на экране.
Дата добавления: 2015-07-20; просмотров: 86 | Нарушение авторских прав
Читайте в этой же книге: История | Исходные тексты примера | Включение обработчиков сообщений в описание класса | Сообщение WM_PAINT | Методичні рекомендації щодо написання рефератів |
mybiblioteka.su - 2015-2025 год. (0.006 сек.)