WINAPI - это набор функций и структур для
программирования приложений которые работают в операционной
системе Windows. WINAPI в основном спроектирован для работы с языком СИ.
Интерфейсы управления процессами от внешнего вида окон программ и до
работы с портами
ввода/вывода основаны на структурах языка СИ. Любые процессы в
компьютере контролирует операционная система, и Windows выделяет по
очереди время для каждой программы
в которое приложение имеет доступ до вычислительных ресурсов ПК.
Организацию приложения WINAPI можно разделить на три составляющие:
1) Окно приложения (его регистрация в операционной системе, создание и отображение).
2) OS WINDOWS.
3) Функция обработки сообщений WndProc.
В первом пункте создается переменная типа HWND (HWND hwnd) которая является дескриптором главного окна, именно через нее в ходе выполнения программы будет происходить управление главным окном (добавление/удаление элементов, вывод информации и другое). Переменную hwnd можно создать как глобальную (вне любых функций) или внутри главной функции с которой приложение начинает работу - WinMain. WinMain - функция создает еще несколько переменных, две из которых имеют тип HINSTANCE, где хранится дескриптор приложения, по которому Windows будет отличать программу из множества других. В функции WinMain также заполняется структура главного окна WNDCLASSEX (WNDCLASSEX wincl), в которой содержатся настройки окна (его вид, визуальный тип курсора и другое). Далее созданное окно регистрируется в системе функцией RegisterClassEx(&wincl). Следующим этапом идет отображение окна функцией ShowWindow (hwnd, nCmdShow);
Заключительным этапом первого пункта - запуск цикла сообщений , извлекаемых из операционной системы функцией GetMessage (&messages, NULL, 0, 0); где messages - ранее созданная переменная типа MSG. По параметрам этих сообщений определяются события происходящие в программе и в компьютере в целом.
Второй пункт OS WINDOWS, операционная система, она есть посредник между программой и аппаратурой компьютера. OS WINDOWS решает когда, и на сколько выделять ресурсы ПК для программы, и делает более читаемым вид событий которые происходят в системе на уровне электрических сигналов.
Третий , более абстрактный пункт - функция обработки сообщений WndProc(), это - логика приложения. Она вызывается операционной системой, и принимает сообщения из OS WINDOWS в виде параметров WPARAM wParam, LPARAM lParam . В свою очередь в зависимости от событий, программа решает что делать и какие действия производить в ответ на происходящее.
Данный пример кода создания окна является стартовым в среде разработки программ Code::Blocks:
Организацию приложения WINAPI можно разделить на три составляющие:
1) Окно приложения (его регистрация в операционной системе, создание и отображение).
2) OS WINDOWS.
3) Функция обработки сообщений WndProc.
В первом пункте создается переменная типа HWND (HWND hwnd) которая является дескриптором главного окна, именно через нее в ходе выполнения программы будет происходить управление главным окном (добавление/удаление элементов, вывод информации и другое). Переменную hwnd можно создать как глобальную (вне любых функций) или внутри главной функции с которой приложение начинает работу - WinMain. WinMain - функция создает еще несколько переменных, две из которых имеют тип HINSTANCE, где хранится дескриптор приложения, по которому Windows будет отличать программу из множества других. В функции WinMain также заполняется структура главного окна WNDCLASSEX (WNDCLASSEX wincl), в которой содержатся настройки окна (его вид, визуальный тип курсора и другое). Далее созданное окно регистрируется в системе функцией RegisterClassEx(&wincl). Следующим этапом идет отображение окна функцией ShowWindow (hwnd, nCmdShow);
Заключительным этапом первого пункта - запуск цикла сообщений , извлекаемых из операционной системы функцией GetMessage (&messages, NULL, 0, 0); где messages - ранее созданная переменная типа MSG. По параметрам этих сообщений определяются события происходящие в программе и в компьютере в целом.
Второй пункт OS WINDOWS, операционная система, она есть посредник между программой и аппаратурой компьютера. OS WINDOWS решает когда, и на сколько выделять ресурсы ПК для программы, и делает более читаемым вид событий которые происходят в системе на уровне электрических сигналов.
Третий , более абстрактный пункт - функция обработки сообщений WndProc(), это - логика приложения. Она вызывается операционной системой, и принимает сообщения из OS WINDOWS в виде параметров WPARAM wParam, LPARAM lParam . В свою очередь в зависимости от событий, программа решает что делать и какие действия производить в ответ на происходящее.
Данный пример кода создания окна является стартовым в среде разработки программ Code::Blocks:
- #include <tchar.h>
- #include <windows.h>
- LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
- TCHAR szClassName[ ] = _T("iVARIOUS.COM");
- int WINAPI WinMain (HINSTANCE hThisInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpszArgument,
- int nCmdShow)
- {
- HWND hwnd;
- MSG messages;
- WNDCLASSEX wincl;
- wincl.hInstance = hThisInstance;
- wincl.lpszClassName = szClassName;
- wincl.lpfnWndProc = WindowProcedure;
- wincl.style = CS_DBLCLKS;
- wincl.cbSize = sizeof (WNDCLASSEX);
- wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
- wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
- wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
- wincl.lpszMenuName = NULL;
- wincl.cbClsExtra = 0;
- wincl.cbWndExtra = 0;
- wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
- if (!RegisterClassEx (&wincl))
- return 0;
- hwnd = CreateWindowEx (
- 0,
- szClassName,
- _T("iVARIOUS.COM"),
- WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- 700,
- 600,
- HWND_DESKTOP,
- NULL,
- hThisInstance,
- NULL
- );
- ShowWindow (hwnd, nCmdShow);
- while (GetMessage (&messages, NULL, 0, 0))
- {
- TranslateMessage(&messages);
- DispatchMessage(&messages);
- }
- return messages.wParam;
- }
- LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- switch (message)
- {
- case WM_DESTROY:
- PostQuitMessage (0);
- break;
- default:
- return DefWindowProc (hwnd, message, wParam, lParam);
- }
- return 0;
- }
Комментариев нет:
Отправить комментарий