
- •Оглавление
- •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), яка забезпечує роботу з стандартним елементом керування - набірний лічильник.
7. Створити програму у Windows (Win32 api), яка забезпечує при отриманні повідомлення wm_paint вивід текстових строк у вікно.
#include <windows.h>
boolRegClass(WNDPROC,LPCTSTR,UINT);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE hInstance;
charszMainClass[]="MainClass";
charszTitle[]="Выводтекста";
int WINAPI WinMain(HINSTANCE hInst,HINSTANCEhPrevInst,
LPSTR lpszCmdLine, intnCmdShow)
{
MSG msg;
hInstance=hInst;
HWND hwnd;
if (!RegClass(WndProc,szMainClass,COLOR_WINDOW))
return FALSE;
hwnd=CreateWindow(szMainClass,szTitle,WS_POPUPWINDOW|WS_CAPTION|
WS_MINIMIZEBOX|WS_VISIBLE,0,0,500,500,0,0,hInstance,NULL);
if (!hwnd) return FALSE;
ShowWindow(hwnd,SW_SHOWMAXIMIZED);
UpdateWindow(hwnd);
while (GetMessage(&msg,0,0,0))
DispatchMessage(&msg);
returnmsg.wParam;
}
boolRegClass(WNDPROC Proc,LPCTSTRszName,UINTbrBackground)
{
WNDCLASS wc;
wc.style=CS_HREDRAW|CS_VREDRAW;
wc.cbClsExtra=wc.cbWndExtra=0;
wc.lpfnWndProc=Proc;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)(brBackground+1);
wc.lpszMenuName=(LPCTSTR)NULL;
wc.lpszClassName=szName;
return (RegisterClass(&wc)!=0);
}LRESULT CALLBACK WndProc(HWND hwnd,UINTmsg,WPARAMwParam,LPARAMlParam)
{charszText[]="Выводимтекст";
static short cx,cy;
switch(msg)
{
case WM_SIZE:
{cx=LOWORD(lParam);
cy=HIWORD(lParam);
return 0;
}
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc=BeginPaint(hwnd,&ps);
SetTextColor(hdc,RGB(255,0,0));
SetBkColor(hdc,RGB(0,255,255));
SetTextAlign(hdc,TA_CENTER);
TextOut(hdc,cx/2,cy/2,szText,strlen(szText));
EndPaint(hwnd,&ps);
return 0;
}
case WM_DESTROY:
{PostQuitMessage(0); return 0;}
}
returnDefWindowProc(hwnd,msg,wParam,lParam);
}
8) Створити програму у Windows (Win32 api), яка забезпечує при отриманні повідомлення wm_paint вивід різноманітних типів ліній у вікно.
#include <windows.h>
boolRegClass(WNDPROC,LPCTSTR,UINT);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE hInstance;
charszMainClass[]="MainClass";
charszTitle[]="Выводтекста";
int WINAPI WinMain(HINSTANCE hInst,HINSTANCEhPrevInst,
LPSTR lpszCmdLine, intnCmdShow)
{
MSG msg;
hInstance=hInst;
HWND hwnd;
if (!RegClass(WndProc,szMainClass,COLOR_WINDOW))
return FALSE;
hwnd=CreateWindow(szMainClass,szTitle,WS_POPUPWINDOW|WS_CAPTION|
WS_MINIMIZEBOX|WS_VISIBLE,0,0,500,500,0,0,hInstance,NULL);
if (!hwnd) return FALSE;
ShowWindow(hwnd,SW_SHOWMAXIMIZED);
UpdateWindow(hwnd);
while (GetMessage(&msg,0,0,0))
DispatchMessage(&msg);
returnmsg.wParam;
}
boolRegClass(WNDPROC Proc,LPCTSTRszName,UINTbrBackground)
{
WNDCLASS wc;
wc.style=CS_HREDRAW|CS_VREDRAW;
wc.cbClsExtra=wc.cbWndExtra=0;
wc.lpfnWndProc=Proc;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)(brBackground+1);
wc.lpszMenuName=(LPCTSTR)NULL;
wc.lpszClassName=szName;
return (RegisterClass(&wc)!=0);
}LRESULT CALLBACK WndProc(HWND hwnd,UINTmsg,WPARAMwParam,LPARAMlParam)
{charszText[]="Выводимтекст";
static short cx,cy;
switch(msg)
{
case WM_SIZE:
{cx=LOWORD(lParam);
cy=HIWORD(lParam);
return 0;
}
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc=BeginPaint(hwnd,&ps);
//Создание красного пера
hPen=CreatePen(1,4,RGB(255,25,0));
SelectObject(hdc, hPen);
//синусоида
for(i=0; i<450; i++){
y=180.0*(exp(-i*0.01))*sin(pi*i*(200.0/400.0)/180.0); // Синусоиды можно поменть на любую др.
LineTo(hdc, i, (int)y);
}
//Делаем перо снова чёрным
hPen=CreatePen(1,1,RGB(0,0,0));
SelectObject(hdc, hPen);
//синусоида
for(i=0; i<450; i++){
y=180.0*(exp(-i*0.01))*sin(pi*i*(456.0/40.0)/76.0); // любые линии можно не синусоиду
LineTo(hdc, i, (int)y);
}
EndPaint(hwnd,&ps);
return 0;
}
case WM_DESTROY:
{PostQuitMessage(0); return 0;}
}
returnDefWindowProc(hwnd,msg,wParam,lParam);
}