Системное программирование Лб-1, 6 вариант

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#include <windows.h> // подключение библиотеки с функциями API
#include "resource.h"
// Глобальные переменные:
HINSTANCE hInst; // Указатель приложения
LPCTSTR szWindowClass = "Silin_Dyachenko";
LPCTSTR szTitle = "ПЕРВАЯ ПРОГРАММА";
// Предварительное описание функций
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
// Основная программа
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
// Регистрация класса окна
MyRegisterClass(hInstance);
// Создание окна приложения
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
// Цикл обработки сообщений
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// FUNCTION: MyRegisterClass()
// Регистрирует класс окна
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_DBLCLKS; // стиль окна
wcex.lpfnWndProc = (WNDPROC)WndProc; // оконная процедура
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance; // указатель приложения
wcex.hIcon = LoadIcon(NULL, IDI_INFORMATION); // определение иконки
wcex.hCursor = LoadCursor(NULL, IDC_NO); // определение курсора
wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // установка фона
wcex.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); // определение меню
wcex.lpszClassName = szWindowClass; // имя класса
wcex.hIconSm = NULL;
return RegisterClassEx(&wcex); // регистрация класса окна
}
// FUNCTION: InitInstance(HANDLE, int)
// Создает окно приложения и сохраняет указатель приложения в переменной hInst
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // сохраняет указатель приложения в переменной hInst
hWnd=CreateWindow(szWindowClass, // имя класса окна
szTitle, // имя приложения
WS_CAPTION |WS_BORDER |WS_SYSMENU , // стиль окна
100, // положение по Х
0, // положение по Y
400, // размер по Х
500, // размер по Y
NULL, // описатель родительского окна
NULL, // описатель меню окна
hInstance, // указатель приложения
NULL); // параметры создания.
if (!hWnd) // Если окно не создалось, функция возвращает FALSE
{
return FALSE;
}
ShowWindow(hWnd, SW_SHOWMINIMIZED); // Показать окно
UpdateWindow(hWnd); // Обновить окно
return TRUE; //Успешное завершение функции
}
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
// Оконная процедура. Принимает и обрабатывает все сообщения, приходящие в приложение
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
RECT rt;
char buf[100];
switch (message)
{
case WM_CREATE: // Сообщение приходит при создании окна
break;
case WM_PAINT: // Перерисовать окно
hdc = BeginPaint(hWnd, &ps); // Начать графический вывод
GetClientRect(hWnd, &rt); // Область окна для рисования
DrawText(hdc, "Привет, мир!", -1, &rt, DT_SINGLELINE|DT_CENTER | DT_VCENTER);
EndPaint(hWnd, &ps); // Закончить графический вывод
break;
case WM_LBUTTONDBLCLK:
MessageBox(hWnd,"lalka1337", "ki-13-3", MB_OK);
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_CHANGE_ICON:
SetClassLong(hWnd, GCL_HICON,(LONG)LoadIcon(hInst, MAKEINTRESOURCE (IDI_ICON1)));
break;
case ID_CHANGE_CURSORE:
SetClassLong(hWnd, GCL_HCURSOR, (LONG)LoadCursor(hInst, MAKEINTRESOURCE(IDC_CURSOR1)));
break;
case ID_CHANGE_TEXT:
LoadString(hInst,IDS_STRING105,buf,100);
SetWindowText(hWnd,buf);
break;
case ID_ABOUT_ABOUT:
MessageBox(hWnd,"hghhghjgh","77777",MB_OK);
break;
}
break;
case WM_DESTROY: // Завершение работы
PostQuitMessage(0);
break;
default:
// Обработка сообщений, которые не обработаны пользователем
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}