- •Оглавление
- •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), яка забезпечує роботу з стандартним елементом керування - набірний лічильник.
13. Створити простішу програму у Windows (Win32 api), яка забезпечує обробку повідомлень миші (wm_lbuttondown, wm_rbuttondown) у вікні.
#include <windows.h>
HINSTANCE hInst;
LRESULT CALLBACK WinProc (HWND hWnd, UINT Message, UINT wParam, LONG lParam )
{
// обработка сообщений
switch(Message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_LBUTTONDOWN:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
return 0;
case WM_RBUTTONDOWN:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
return 0;
}
return DefWindowProc(hWnd,Message,wParam, lParam);
}
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR IpszCmdParam, int nCmdShow)
{
HWND hWnd;
WNDCLASS WndClass;
MSG Msg;
char szClassName[] = "ResourcesDemo";
hInst = hInstance;
// регистрация окного класса
WndClass.style = CS_HREDRAW | CS_VREDRAW;
WndClass.lpfnWndProc = WinProc;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hInstance = hInst ;
WndClass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
WndClass.lpszMenuName = NULL;
WndClass.lpszClassName = szClassName;
if ( !RegisterClass(&WndClass) )
{
MessageBox(NULL,"Cannot register class", "Error", MB_OK);
return 0;
}
char szWinCaption[64];
LoadString(hInst, IDS_WINCAPTION, szWinCaption, 64);
// создает окно
hWnd = CreateWindow(szClassName, szWinCaption,
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance,NULL);
// сообщение об ошибке
if(!hWnd)
{
MessageBox(NULL,"Cannot create window", "Error",MB_OK);
return 0;
}
/* показует наше окно */
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
/* обработка сообщений */
while(GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
№ 14 Ресурси: Растрові зображення. Вивід растрових зображень.
Имеется несколько возможностей хранения растровых изображений:
• в файлах с расширением .BMP, создаваемых обычно с помощью того или иного графического редактора, например пакета CorelDraw от Corel Corporation, встроенной в Windows программы Paint (Paintbrush) или одного из универсальных редакторов ресурсов, входящих в пакеты сред программирования Borland C++ или Visual C++; файл можно также получить путем сканирования фотографии с переводом результата в формат .BMP;
• в файле ресурсов в виде таблицы чисел, которую можно получить с помощью того
же редактора ресурсов;
• непосредственно в полях данных приложения в виде массива целых чисел.
Если связь файла .BMP с приложением осуществляется посредством файла ресурсов, то в нем должна быть строка, описывающая файл с изображением:
Check BITMAP "check.bmp"
На имя этого ресурса ("Check") программа будет ссылаться при загрузке изображения в память.
Ссылка на файл .BMP в файле ресурсов может быть заменено непосредственным описанием в файле ресурсов самого изображения в виде таблицы шестнадцатеричных
Загрузка растрового изображения
Для того чтобы изображение можно было вывести на экран, оно должно находиться не в файле, а в памяти. Если исходное изображение хранится в файле .BMP, то загрузить его в память можно двумя способами. Первый требует использования файла ресурсов, в котором должно быть предложение, описывающее файл с изображением: pict BITMAP "apple.bmp" На имя этого ресурса ("pict" в данном примере) программа будет ссылаться при загрузке изображения в память. Как известно, при компиляции проекта, в который входит файл ресурсов, фактически выполняются две операции компиляции: исходного текста программы с образованием объектного файла с расширением .OBJ, и файла ресурсов с образованием второго ромежуточного файла с расширением .RES. Этот файл содержит изображение практически в том же виде, что и исходный файл .BMP. Далее файлы .OBJ и .RES обрабатываются компоновщиком, который объединяет файлы .OBJ и .RES и создает загрузочный файл .ЕХЕ, готовый к выполнению. Ресурсы (не только изображения, но и описание диалогов, меню, текстовых строк и проч.) сохраняются в файле .ЕХЕ в специальном формате, понятном редактору ресурсов. Это дает возможность редактировать ресурсы в файле .ЕХЕ, не имея исходного текста программы. Загрузка изображения-ресурса из файла .ЕХЕ в память осуществляется в программе вызовом функции Loadlmage(). После этого программа может приступить к процедуре вывода изображения в окно. Отметим, что в этом случае для выполнения программы файл .BMP уже не нужен; изображение хранится в выполнимом файле .ЕХЕ, который в силу этого может иметь значительный размер.
Другой способ загрузки Изображения в память не требует наличия файла ресурсов;
загрузка изображения осуществляется той же функцией Loadlmage() непосредственно из файла .BMP. Однако в этом случае приложение может выполняться, только если ему доступны все необходимые файлы с рисунками, поскольку в выполнимом файле рисунков нет. Легко сообразить, что именно такой метод используется в программах, позволяющих просматривать рисунки, хранящиеся на дисках
