Окно это программа под Windows

Программирование Windows-приложений построено на работе с окнами и обработке сообщений, что накладывает на структуру программы определенные ограничения.

Любая программа под Windows состоит минимум из двух функций — WinMain() и оконной функции.
Функция WinMain() должна выполнять следующие операции:

1. Определять класс окна

2. Регистрировать класс окна

3. Поиск уже запущенной копии приложения

4. Создавать окно данного класса

5. Отображать окно

6. Запускать цикл обработки сообщений

Оконная функция предназначена для обработки сообщений, относящихся к данному окну

Исходный текст приложения, которое создает главное окно. При нажатии левой клавишей мыши в клиентской области окна при помощи стандартной диалоговой панели сообщений выдается информация о приложении.

// — Обязательный включаемый файл

// — Прототип функции главного окна

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

Видео #7. Окна программ в Windows 10

// — Объявление глобальных переменных

HINSTANCE hInst; // Дескриптор экземпляра приложения

char ClassName[]=»Window»; // Название класса окна

// — Главная функция приложения WinMain

int APIENTRY _tWinMain(HINSTANCE hInstance,

LPSTR lpCmdLine, int nCmdShow)

WNDCLASS wc; // Структура для инф-ции о классе окна

HWND hWnd; // Дескриптор главного окна приложения

MSG msg; // Структура для хранения сообщения

// — Проверяем, было ли приложение запущено ранее.

// Если прилож. было запущено ранее, активизировать

// и выдвинуть на передний план его главное окно

if(IsIconic(hWnd)) ShowWindow(hWnd, SW_RESTORE);

// Работа новой копии прекращается.

// Заполнение полей стр-ры WNDCLASS

memset( // Очистка полей структуры 0

wc.lpszClassName=ClassName; // Имя класса окон

wc.lpfnWndProc=(WNDPROC)WndProc; //Адр. окон. ф-ции

wc.style=CS_HREDRAW|CS_VREDRAW; // Стиль класса окон

wc.hInstance=hInstance; // Экземпляр приложения

wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);// Пиктограмм-ма для окон

wc.hCursor=LoadCursor(NULL,IDC_ARROW); // Курсор мыши для окон

wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); // Кисть для окон

wc.lpszMenuName=NULL; // Ресурс меню окон

wc.cbClsExtra=0; // Дополнительная память

wc.cbWndExtra=0; // Дополнительная память

// Pегистрация класса окна.

// Создаем главное окно приложения.

ClassName, // Имя класса окон

WS_OVERLAPPEDWINDOW, // Стиль окна

CW_USEDEFAULT, // Ширина окна

CW_USEDEFAULT, // Высота окна

NULL, // Дескриптор окна-родителя

NULL, // Дескриптор меню окна

hInst, // Дескриптор экз. приложения

NULL); // Дополнительная информация

// Окно не создано, выдается предупреждение.

MessageBox(NULL,»Window create error», AppTitle,

// Обновление содержимого клиентской области окна.

// Запуск цикла обработки очереди сообщений.

Если окно программы выходит за рамки окна нетбука

while(GetMessage( // Завершение работы приложения

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)

// Нажата левая кнопка мыши в клиентской обл. окна.

// Вывод информации о приложении с помощью

// диалоговой панели сообщений MessageBox()

MessageBox(hWnd, «Win32 aplication», «Window»,

// Пользователь удалил окно.

// Если это оконная функция главного окна, то следует

// в очередь сообщений послать сообщение WM_QUIT

// Необработанные сообщ. передаются в стандартную

// функцию обработки сообщений по умолчанию.

return DefWindowProc(hWnd, msg, wParam, lParam);

Пояснения к тексту программы

Главная функция приложения WinMain

Точкой входа для любой Windows-программы является функция WinMain, которая всегда определяется следующим образом:

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE

hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

Эта функция использует последовательность вызовов APIENTRY (соглашение о передаче аргументов при вызове функций WINAPI) и, по своему завершению, возвращает операционной системе Windows целое число.

Назначение параметров функции WinMain:

· hInstance называется дескриптором экземпляра приложения. Это уникальное число, идентифицирующее программу, когда она запущена в Windows. Каждая копия одной и той же запущенной несколько раз программы имеет свое значение hInstance.

· hPrevInstance ранее использовался в Win16 и в Win32 всегда равен NULL.

· lpCmdLine является указателем на оканчивающуюся нулем строку, в которой содержаться параметры, переданные программе из командной строки.

Читайте также:
Программа Horizon не запускается на Windows 10

· nCmdShow определяет, как приложение первоначально отображается на дисплее: пиктограммой (SW_SHOWMINNOACTIVE) или в виде открытого окна (SW_SHOWNORMAL).

Поиск работающей копии приложения

Для проверки того было ли приложение запущено ранее, используется функция FindWindow, которая позволяет найти окно верхнего уровня по имени класса или по заголовку окна:

HWND FindWindow(LPCTSTR lpClassName,

· lpClassName – это указатель на текстовую строку, в которой задается имя класса искомого окна. На базе одного и того же класса может быть создано несколько окон.

· lpWindowName – это указатель на текстовую строку, содержащую искомый заголовок окна. Если же подойдет любое окно, то параметр lpWindowName имеет значение NULL.

В приведенном тексте функции WinMain, проверяется, было ли ранее приложение запущено и при положительном ответе выдвигается на передний план главное окно ранее запущенной копии с помощью функции SetForegroundWindow(hWnd);

Замечание. Если необходимо, чтобы каждая копия приложения работала как отдельный процесс, то указанный фрагмент кода следует не включать в функцию WinMain.

Регистрация класса окна

Класс окна определяет общее поведение нового типа окон, включая адрес новой оконной процедуры. Новый класс окна регистрируется при вызове приложением следующей функции:

ATOM RegisterClass(const WNDCLASS *lpwc);

Параметр lpwc указывает на структуру типа WNDCLASS, описывающую тип нового окна. Возвращаемое значение является атомом Windows – 16-разрядным значением, идентифицирующим уникальную символьную строку в таблице Windows.

Затем приложение должно создать само окно с помощью функции CreateWindow, которая возвращает дескриптор созданного окна типа HWND:

HWND CreateWindow(LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hInstance, LPVOID *lpParam);

У каждого окна в Windows имеется уникальный дескриптор типа HWND. Дескриптор окна – это один из важнейших описателей, которыми оперирует программа для Windows. Для многих функций Windows требуется дескриптор окна, благодаря которому Windows знает, к какому окну применить функцию.

Параметры функции CreateWindow:

· lpClassName указывает имя класса, поведение которого наследует данное окно. Этот класс должен быть зарегистрирован с помощью фунцкии RegisterClass или может быть одним из предопределенных классов элементов управления с именами “button”, “combobox”, “listbox”, “edit”, “scrollbar” и “static”.

· lpWindowName определяет строку, которая выводится в заголовке создаваемого окна.

· dwStyle определяет стиль окна. (см. тему «Классы и стили окон»).

· x, y, nWidth и nHeight задают начальные геометрические размеры окна. Если при задании параметров x, y, nWidth и nHeight использовать константу CW_USEDEFAULT, то Windows установит расположение и размеры окна самостоятельно.

· hWndParent задает для создаваемого окна дескриптор его окна-родителя. Если окно является главным окном приложения, то этому параметру присваивается значение NULL.

· hMenu определяет для окна дескриптор меню. Значение NULL на месте дескриптора меню говорит о том, что у окна будет только меню класса, общее для всех окон этого класса.

· hInstance задает дескриптор экземпляра приложения, которое создает окно.

· lpParam используется для передачи окну дополнительных данных (если их нет, то он должен быть равен NULL).

Для отображения окна на экране используется функция:

BOOL ShowWindow(HWND hwnd, int nCmdShow);

· hwnd задает дескриптор окна.

· nCmdShow задает начальный вид окна на экране (для главного окна приложения используется величина, передаваемая в качестве параметра функции WinMain). Для всплывающих и дочерних окон nCmdShow задает, как окно первоначально отображается: пиктограммой (SW_SHOWMINNOACTIVE) или в виде открытого окна (SW_SHOWNORMAL)..

Для перерисовки рабочей области производится вызов функции:

void UpdateWindow(HWND hwnd);

Функция UpdateWindow передает функции окна сообщение WM_PAINT. Получив его, функция окна обновляет содержимое экрана.

Цикл обработки очереди сообщений

Windows поддерживает очередь сообщений (message queue) для каждой программы, работающей в данный момент в системе. Когда происходит какое-либо событие (нажатие клавиши, щелчок мыши), Windows преобразовывает его в сообщение, которое помещается в очередь сообщений приложения.

Читайте также:
Как настроить запуск программы от имени администратора Windows 10

Программа извлекает сообщения из очереди сообщений, выполняя блок команд, известный как цикл обработки сообщений (message loop).

Простейший цикл обработки сообщений имеет следующий вид:

while(GetMessage(

· lpmsg является дальним указателем на структуру сообщения типа MSG (см. тему «Сообщения Windows. Типы сообщений»).

· hwnd определяет дескриптор окна – источника сообщений. Если задать этому аргументу NULL, то программа будет получать сообщения от всех окон, созданных программой.

· uMsgFilterMin и uMsgFilterMax позволяют задать диапазон значений для фильтрации сообщений, получаемых программой. Если на их месте задать 0, то программа будет получать все сообщения.

Если поле message сообщения msg, извлеченного из очереди сообщений, равно любому значению, кроме WM_QUIT, то функция GetMessage возвращает ненулевое значение. Если из очереди извлечено сообщение WM_QUIT, то GetMessage возвращает нуль, что прерывает цикл обработки сообщений.

Каждое получаемое приложением сообщение (за исключением WM_QUIT) направлено одному из окон приложения. Поскольку приложение не должно прямо вызывать функцию обработки окна, для передачи сообщения нужному окну используется функция:

LONG DispatchMessage(const MSG FAR* lpmsg);

Эта функция передает msg обратно в Windows, которая отправляет его для обработки соответствующей оконной процедуре.

Перед вызовом функции DispatchMessage помещена специальная функция, производящая преобразование кодов комбинаций некоторых клавиш в символьные сообщения:

BOOL TranslateMessage(const MSG FAR* lpmsg);

Завершение работы приложения

Приложение завершает свою работу тогда, когда функция WinMain передает управление Windows. Передать управление можно в любом месте WinMain, в том числе и до входа в цикл обработки очереди сообщений.

Однако после входа в цикл обработки очереди сообщений единственным способом завершить приложение является посылка в очередь приложения сообщения WM_QUIT. Сообщение помещается в очередь сообщений только функцией главного окна данного приложения вызовом функции PostQuitMessage.

Реальная работа приложения происходит в оконных функциях, которые определяют, что выводится в рабочую область окна и как окно реагирует на пользовательский ввод. Оконной функции можно назначать любое имя, в Windows-программе может содержаться более одной оконной функции.

Оконная функция всегда связана с определенным классом окна, который регистрируется при помощи функции RegisterClass. На основе одного и того же класса можно создать несколько окон.

Оконная функция определяется следующим образом:

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg,

WPARAM wParam, LPARAM lParam);

Все четыре параметра оконной процедуры идентичны первым четырем полям структуры MSG.

Функция окна вызывается непосредственно Windows и не может вызываться приложением напрямую. В функции окна используется соглашение о связях языка Паскаль, поэтому объявление функции CALLBACK обязательно.

Обработка сообщений в оконной функции

Функция окна получает сообщение из двух источников: из цикла обработки сообщений и от Windows:

· Из цикла обработки сообщений поступают сообщения ввода: перемещение и нажатие клавиш мыши, нажатие и отпускание клавиш клавиатуры и, если установлен генератор событий таймера, сообщения от таймера.

· Windows посылает функции окна сообщения поддержки окна напрямую, минуя очередь приложения и цикл обработки сообщений. Эти сообщения обычно вызваны событиями, требующими немедленной реакции по изменению вида окна.

Каждое получаемое окном сообщение идентифицируется номером, который содержится в параметре msg оконной функции. Если оконная процедура обрабатывает сообщение, то ее возвращаемым значением должен быть 0.

Все сообщения, не обрабатываемые оконной процедурой, должны передаваться функции Windows функцией DefWindowProc. При этом значение, возвращаемое DefWindowProc, должно быть возвращаемым значением оконной функции.

Удаление окна, сообщение WM_DESTROY

Сообщение WM_DESTROY показывает, что Windows находится в процессе ликвидации окна в ответ на полученную от пользователя команду (пользователь вызывает поступление этого сообщения, если нажмет мышью на пиктограмме “Close”, выберет пункт “Close” из системного меню или нажмет комбинацию клавиш Alt+F4).

Читайте также:
Reset Windows password для продолжения работы необходимо зарегистрировать программу как исправить

Главное окно стандартно реагирует на это сообщение, вызывая функцию:

Эта функция ставит сообщение WM_QUIT в очередь сообщений приложения, что заставляет функцию WinMain прервать цикл обработки сообщений и выйти в систему, завершив работу приложения.

Источник: stydopedia.ru

Окно

Окно (англ. window) – это часть графического интерфейса компьютера, в которой находится текущая программа. Например, ваш браузер, через который вы просматриваете эту веб-страницу, является окном.

Windows позволяет пользователю работать с несколькими программами и просматривать несколько окон одновременно. Очень важным плюсом оконного интерфейса является возможность перекрытия окон друг другом (быть поверх других), без потребности закрывать предыдущее окно.

Почти все окна можно масштабировать, сворачивать и открывать на весь экран.

Ниже показан пример окна Windows 10 и его основные элементы.

Что такое окно - определение в компьютерном словаре. Окно Windows.

Имя окна Lessons.

1. Свернуть окно.

2. Развернуть окно.

6. Панель статуса.

Что такое активное и неактивное окно?

Активное окно – это то окно, которое находится поверх других открытых окон, то в котором вы сейчас находитесь (выделенное окно).

Неактивное окно – это неиспользуемое окно, которое находится под активным (на его фоне) или свернутое.

Что такое активное и неактивное окно.

Совет: Если окно не развернуто на весь экран, это называется оконным режимом.

Совет: В операционных системах Windows можно нажать сочетание клавиш Alt+Пробел для открытия меню окна. С его помощью можно выполнять манипуляции с окном без использования мыши.

Меню окна. Оконное меню Windows.

Совет: Быстро свернуть и развернуть все окна можно используя комбинацию клавиш Windows+D.

Источник: linchakin.com

Окно Windows: виды, основные элементы

Название операционной системы Windows переводится как «окна». Такой вариант представления и организации программных компонентов и элементов управления ими позволяет очень просто и удобно взаимодействовать с графическим интерфейсом системы. Далее, будут рассмотрены основные типы окон, которые могут появляться, а также некоторые элементы и действия с ними.

Окно Windows: что это такое?

Для определения сути этого термина, следует исходить из самой обычной его трактовки. Нетрудно догадаться, что окно Windows представляет собой прямоугольную область графического интерфейса на экране компьютерного монитора, в которой отображаются программы, документы, уведомления, подсказки и т. д.

Вам будет интересно: Как удалить Xbox (Windows 10) целиком и полностью?

Все окна можно разделить на два основных типа: с изменяемым и неизменяемым размером. Окно Windows с изменяемым размером можно встретить в отображении программ. Неизменяемый размер в основном применяется для окон документов, сообщений и всплывающих подсказок.

Вам будет интересно: Как поменять шрифт на компьютере (Windows 10): несколько основных методов

Кроме того, есть некоторые разновидности окон (чаще всего это сообщения), которые закрыть стандартным способом невозможно (кнопка с крестиком в окне отсутствует). Избавиться от таких уведомлений можно только путем нажатия на специальные кнопки внутри окна. Однако можно встретить и окна критических ошибок, которые не закрываются вообще (избавиться от них помогает только принудительная перезагрузка системы)

Основные типы окон

Итак, что представляет собой окно Windows, разобрались. Теперь посмотрим на основные типы окон, которые можно встретить в этой операционной системе. Среди основных видов выделяют следующие:

  • окна приложений;
  • окна документов;
  • диалоговые окна;
  • окна контекстных меню;
  • всплывающие окна.

Окна программ и документов, которые в них созданы, между собой взаимосвязаны. Но окно приложения может отображаться само по себе (пустой документ), а окно документа без программы существовать отдельно не может. Это так называемый тип «окно в окне». Windows 10 или любая другая система – тому яркое подтверждение.

Вам будет интересно: Жесткий диск: принцип работы и основные характеристики

Кроме того, окно в окне достаточно часто можно встретить и в интернете, например, при просмотре фильма или прослушивании музыки онлайн, когда в качестве основного окна выступает оболочка веб-браузера, а в качестве второго – встроенный на ресурсе медиаплеер.

Окна приложений

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru