2. Структура винпрогр (1058834)
Текст из файла
1. Структура WINDOWS – программы.Любая программа начинается с текста:#include <windows.h>#include <stdlib.h>const char szClassName[] = "Имя класса окна";const char szWindowName[] = "Заголовок окна";// Прототип функции обработки сообщений главного окна приложенияLRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam);#pragma argsused // Не будет предупреждения, что функция не пользуется своими параметрамиint PASCAL WinMain// компилиция в стиле Паскаль (с очисткой стека отпараметров функции) – ускоряет время работы(HINSTANCE hInstance,// идентификатор приложенияHINSTANCE hPrevInstance, // идентификатор предыдущей копии приложенияLPSTR lpszCmdLine,// адрес командной строкиint nCmdShow)// будет ли видимым или невидимым{тело функции}Функция WinMain – обязательна, получает управление при запуске приложения, возвращает значениетипа int, что позволяет передать операционной системе Windows или отладчику код завершенияприложения. {Устанавливает расположение стека, выполняет все необходимые инициализирующиефункции}Структура программы в Windows:Асинхр.
– формируется самому себеили другому приложению, минуясистемную очередьСинхр – через системную очередь, вочередь приложения.GetMessage выбирает сообщения изочереди приложения и осуществляетзаполнение структуры MSG – длявременного хранения информации осообщении.TranslateMessage – занимаетсяобработкой клавишных команд.DispatchMessage – определяет,какому окну данного приложениянаправить сообщение. Предусмотренапередача управления в Windows.Затем Windows берет обработчик,дополняет необходимым кодом(“Prolog”), чтобы функциясоответствовала ОС.
В этот моментWindows может перехватить управление.В WM_QUIT проверяется, не окончание ли это работы. Да – выход, нет – идем дальше.WM_DESTROY – сообщение, в случае закрытия окна. При его выводе из очереди приложения запускаетсяфункция, которая генерирует сообщение WM_QUIT и только после этого закрывается окно: для того, чтобызакрывалось не только окно, но и все приложение + сохранить изменения и т.п.Функция WndProc НЕ ВЫЗЫВАЕТСЯ ни из одной функции приложения.
Эту функцию вызываетWindows в процессе обработки сообщений. Для этого адрес функции WndProc указывается прирегистрации класса окна. Функция выполняет обработку сообщений главного окна приложения.Пример простейшего Windows-приложения.// 1а. Подключение необходимых библиотек#include <windows.h>#include <stdlib.h>// 1б. Объявление необходимых переменныхconst char szClassName[] = "WinLab_01"; // Имя класса окнаconst char szWindowName[] = "Term II. Windows Lab 01."; // Заголовок окна// 1б. Объявление прототипа функции обработки сообщенийLRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam);// 2. Главная функция Windows-приложения – функция WinMain#pragma argsusedint PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow){// 2а. Объявление идентификатора окнаHWND hWnd;// 2б.
Описание класса окнаWNDCLASS wndclass;wndclass.style= CS_HREDRAW | CS_VREDRAW;wndclass.lpfnWndProc= WndProc;wndclass.hInstance= hInstance;wndclass.hIcon= LoadIcon(hInstance, IDI_APPLICATION);wndclass.hCursor= LoadCursor(NULL, IDC_ARROW);wndclass.hbrBackground= 5;wndclass.lpszMenuName= NULL;wndclass.lpszClassName= szClassName;// 2в. Регистрируем класс окнаif (!RegisterClass(&wndclass)) exit(FALSE);// 2г. Создаем окно функцией CreateWindow и проверяем успешность созданияhWnd=CreateWindow(szClassName,szWindowName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);if (!hWnd) exit(FALSE);// 2д.
Показываем окноShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);// 2е. Цикл сообщенийMSG msg;while(GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}/* 3. Обработчик сообщений */LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){switch (iMessage){case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, iMessage, wParam, lParam); }return 0;}.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.