
- •Оглавление
- •1. Интерфейс графического устройства gdi. Обработка сообщений wm_paint.
- •2. Обмін інформацією між процесами та потоками. Обмін даними за допомогою файлів.
- •3.Створити програму у Windows (Win32 api), яка виводе одне (головне) вікно.
- •4. Обмін інформацією між процесами та потоками. Обмін повідомленнями.
- •5. Створити програму у Windows (Win32 api), яка демонструє основні стилі вікон (вікно верхнього рівня, спливаюче вікно з головним вікном та без нього, дочірнє вікно).
- •6. Процеси та потоки. Створення процесу. Створення потоку
- •7. Створити програму у Windows (Win32 api), яка забезпечує при отриманні повідомлення wm_paint вивід текстових строк у вікно.
- •8) Створити програму у Windows (Win32 api), яка забезпечує при отриманні повідомлення wm_paint вивід різноманітних типів ліній у вікно.
- •9. Робота з файлами. Асинхронні операції з файлами.
- •10. Створити простішу програму у Windows (Win32 api), яка забезпечує при отриманні повідомлення wm_paint вивід простих геометричних фігур у вікно.
- •11. Створити програму у Windows (Win32 api), яка забезпечує обробку повідомлень wm_paint, wm_destroy, wm_create, wm_command. Другі повідомлення передати на обробку стандартній функції вікна.
- •№ 12 Стандартні елементи керування. Графічний список. Індикатор прогресу. Складальний лічильник.
- •13. Створити простішу програму у Windows (Win32 api), яка забезпечує обробку повідомлень миші (wm_lbuttondown, wm_rbuttondown) у вікні.
- •15. Базові команди. Класифікація команд. Команди передачі даних. Команди обміну процесора з пам'яттю. Команди передачі кодів між процесором і периферією.
- •16. Команди обробки даних. Базові арифметичні команди.
- •17. Створити програму у Windows (Win32 api), яка забезпечує обробку повідомлень клавіатури (wm_keyup, wm_keydown) у вікні.
- •18. ВікнаWindows.Процедура створенняд очірнього вікна. Повідомлення wm_create.
- •19. Створити програму у Windows (Win32 api), яка забезпечує роботу з таймером.
- •20.Таймери Windows і служба часу.
- •24. Інтерфейс графічних пристроїв gdi. Обробка повідомлень wm_paint.
- •26. Створити простішу програму у Windows (Win32 api), яка забезпечує роботу з стандартним елементом керування - графічний список.
- •27. Основи розробки Windows-додатків. Головна функція WinMain(). Повідомлення Windows.
- •29 Створити програму у Windows (Win32 api), яка забезпечує роботу з стандартним елементом керування - набірний лічильник.
19. Створити програму у Windows (Win32 api), яка забезпечує роботу з таймером.
/*Файл 7-1.Н*/
#define XSIZE 205//Горизонтальный размер главного окна
#define YSIZE 45//Вертикальный размер главного окна
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL OnCreate(HWND,LPCREATESTRUCT);
void OnPaint(HWND);
void OnTimer(HWND,UINT);
void OnGetMinMaxInfotHWND,LPMINMAXINFO);
void OnDestroy(HWND);
void OutDateTime(void);
/*Файл 7-l.cpp*/
#include <windows.h>
#include <windowsx.h>
#include "7-1.h"
/*Глобальные переменные*/
char szCurrentTime[40];//Для формирования выводимой строки
HWND hwndMain;
/*Главная функция WlnMaln*/
int WINAPI WinMain(HINSTANCE hlnst,HINSTANCE,LPSTR,int){
char szClassName[]="MainWindow";
char szTitle[]="Текущее время";
MSG msg;
WNDCLASS we; /
ZeroMemory(&wc,sizeof(we));
we .lpfnWndProc=WndProc;
we.hlnstance=hlnst;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=GetStockBrush(LTGRAY_BRUSH) ,- / / Светло-серый фон окна
we.lpszClassName=szClassName;
RegisterClass(&wc);//Регистрируем класс главного окна
hwndMain=CreateWindowEx(WS_EX_TOPMOST,szClassName,szTitle,//Создаем окно
WS_CAPTION|WS_SYSMENU,0,0,XSIZE,YSIZE,HWND_DESKTOP,NULL,hlnst,NULL);
ShowWindow(hwndMain,SW_SHOWNORMAL);//Показываем окно
while(GetMessage(&msg,NULL,0,0))11 Цикл
DispatchMessage (Scinsg ) ; /1 обработки сообщений
return 0;
}
/*Оконная процедура главного окна*/
LRESULT CALLBACK WndProc(HWND hwnd.UINT msg,WPARAM wParam,LPARAM lParam){
switch(msg){
HANDLE_MSG(hwnd,WM_CREATE,OnCreate);
HANDLE_MSG(hwnd,WM_TIMER,OnTimer);
HANDLE_MSG(hwnd,WM_PAINT,OnPaint);
HANDLE_MSG(hwnd,WM_GETMINMAXINFO,OnGetMinMaxInfo);
HANDLE_MSG(hwnd,WM_DESTROY,OnDestroy) ;
default:
return(DefWindowProc(hwnd,msg,wParam, lParam)) ;
}
}
/•Функция обработки сообщения о создании главного окна*/
BOOL OnCreate(HWND hwnd,LPCREATESTRUCT){
OutDateTime();//Первый немедленный вывод текущего времени
SetTimer(hwnd,1,1000,NULL);//Установим таймер с периодом 1с
return TRUE;
}
/•функция обработки сообщения WM_PAINT главного окна*/
void OnPaint(HWND hwnd){
PAINTSTRUCT ps;
HDC hdc=BeginPaint(hwnd,&ps);
SetBkMode(hdc,TRANSPARENT);//Сделаем фон символов прозрачным
TextOut(hdc,5,0,szCurrentTime,strlen(szCurrentTime));11Вывод строки
EndPaint(hwnd,&ps);
}
/*функция обработки сообщения WM_GETMINMAXINFO главного окна*/
void OnGetMinMaxInfo(HWND,LPMINMAXINFO lpmmi){
lpmmi->ptMinTrackSize.x=XSIZE;//Минимальный
lpmmi->ptMinTrackSize.y=YSIZE,-11и максимальный
lpmmi -^ptMaxTrackSize.x=XSIZE;//размеры главного
lpmmi->ptMaxTrackSize.y=YSIZE;11 окна совпадают
}
/**ункция обработки сообщения WM_DESTROY главного окна*/
void OnDestroy(HWND hwnd){
KillTimer(hwnd,1);//Перед завершением уничтожим таймер
PostQuitMessage (0);
}
/*функция обработки сообщений WM_TIMER*/
void OnTimer(HWND.UINT){
OutDateTime();//Периодический вывод текущего времени
}
/**ункция получения текущего времени и преобразования его в символы*/
void OutDateTime(){
char* szDay[7]=("Век","Пнд","Втр","Ср","Чтв","Птн","Суб"};
char* szMonth[13]={"","Янв","Февр","Март","Апр","Май","Июнь",
"Июль","Авг","Сент","Окт","Нояб","Дек");
char szT[20];
SYSTEMTIME SystemTime;//Структура для получения системного времени
GetLocalTime (ScSystemTime) ; //Получим текущее местное время
strcpy(szCurrentTime,szDay[SystemTime.wDayOfWeek]);//День недели
strcat(szCurrentTime," ");//Разделяющий пробел
strcat(szCurrentTime,szMonth[SystemTime.wMonth]);//Месяц
strcat(szCurrentTime," ")}//Разделяющий пробел
wsprintf(szT,"%d",SystemTime.wDay);//Дата в символы
strcat(szCurrentTime,szT);//Добавим ее
strcat(szCurrentTime," ");//Разделяющий пробел
wsprintf (szT, "%d", SystemTime.wYear) , - //Год в символы
strcat(szCurrentTime,szT);//Добавим его
strcat(szCurrentTime," ">;//Разделяющие символы
wsprintf (szT, "%d",'SystemTime.wHour) г I/Часы в символы
strcat (szCurrentTime, szT) , - //Добавим их
strcat(szCurrentTime,":");//Разделяющее двоеточие
wsprintf(szT,"%d",SystemTime.wMinute);//Минуты в символы
strcat(szCurrentTime,szT);//Добавим их
strcat (szCurrentTime, " : ") , - //Разделяющее двоеточие
wsprintf(szT,"%d",SystemTime.wSecond);//Секунды в символы
strcat(szCurrentTime,szT);//Добавим их
InvalidateRect(hwndMain,NULL,TRUE);//Перерисовка окна
}