Спонсоры сайта:

Наличие этой страницы в поиске?

Информеры ТИЦ и PR

  Yandex ТИЦ:  
   Google PR:  

Путешественникам, меломанам, бизнесменам, вебмастерам, новости.

Содержание | <<< | >>>

Базовые концепции функционирования приложений для Windows 2000





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

WinMain()

Все Windows 2000-приложения начинают свою работу с вызова функции WinMain(). (В распоряжении Windows-программ отсутствует ее "не оконный" работающий по командам вариант — функция main()). WinMain() обладает специальными свойствами, которые отличают ее от других функций в вашем приложении. Во-первых, она должна быть скомпилирована в соответствии с WinAPI-соглашением о вызовах. По умолчанию функции используют С-соглашение о вызовах, но имеется возможность компилировать функцию так, чтобы она использовала другое соглашение. Например, широко распространенным вариантом является применение Pascal-соглашения о вызовах. По различным техническим причинам операционной системой Windows 2000 для вызова функции WinMain() применяется WinAPI-соглашение о вызовах. Результат, возвращаемый функцией WinMain(), должен иметь тип int.

Процедура окна

Все Windows-программы должны содержать специальную функцию, которая вызывается не вашей программой, а самой Windows. Эта функция обычно называется процедурой окна (window procedure) или функцией окна (window function). Именно посредством этой функции Windows 2000 взаимодействует с прикладными программами. Функция окна вызывается системой Windows 2000 в тех случаях, когда ей необходимо передать сообщение прикладной программе. Это сообщение функция окна принимает через свои параметры. Все функции окна должны быть объявлены таким образом, чтобы возвращаемое ими значение соответствовало типу LRESULT CALLBACK. Тип LRESULT представляет собой 32-разрядное целое число. Модель вызова функций CALLBACK используется в тех случаях, когда функцию вызывает сама Windows. В Windows-терминологии любая функция, вызываемая самой системой Windows, относится к классу функций обратного вызова.

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

Все сообщения представляют собой 32-разрядные целые значения. Кроме того, все сообщения сопровождаются некоторой дополнительной информацией, характерной для каждого сообщения.

Классы окон

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

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

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

Типы данных Windows

В функциях Windows API не очень часто используются стандартные типы данных языка программирования С, например int или char*. Вместо этого многие типы данных, применяемых в Windows, должны быть определены с помощью оператора typedef в файле WINDOWS.H и (или) в связанных с ним файлах. Этот файл поставляется компанией Microsoft (а также другими компаниями, выпускающими компиляторы С для платформы Windows) и должен включаться во все Windows-программы. Вот примеры наиболее употребительных типов данных: HANDLE, HWND, UINT, BYTE, WORD, DWORD, LONG, BOOL, LPSTR и LPCSTR. Тип HANDLE — это 32-разрядное целое число, которое используется как дескриптор. Существует множество типов дескрипторов, но все они имеют такой же размер, как и HANDLE. Дескриптор является просто значением, которое используется для уникальной идентификации некоторого объекта или ресурса. Например, тип HWND является 32-разрядным целым числом, которое используется в качестве дескриптора окна. К тому же, имена дескрипторов всех типов начинаются с буквы Н. Тип BYTE является 8-разрядным целым без знака (unsigned); WORD — 16-разрядное короткое целое без знака; DWORD — 32-разрядное целое без знака; UINT — 32-разрядное целое без знака; LONG — 32-разрядное целое со знаком; BOOL — целый тип, используемый для указания величин, которые могут принимать значения, которые интерпретируются как ИСТИНА или ЛОЖЬ; LPSTR — указатель на строку, а тип LPCSTR — константный (const) указатель на строку.

В дополнение описанным выше базовым типам, в Windows 2000 определены еще несколько структур. Две из них, MSG и WNDCLASSEX, необходимы для создания скелета программы. Структура MSG содержит в себе сообщение Windows 2000, а WNDCLASSEX — структура, которая определяет класс окна. Позже в данной главе эти структуры будут обсуждаться более подробно.


Содержание | <<< | >>>

C++ исходники. Все примеры - рабочие:

часы:

Dev C++ WinAPI Стрелочные часы Analog Clock

Dev C++ WinAPI Цифровые прозрачные часы. Текст на рабочем столе. Digital transparent clock. Text on desktop

Dev C++ OLE WinApi CALENDAR and DIGITAL CLOCK (15kb). Календарь и цифровые часы

Dev C++ OLE WinAPI Календарь и цифровые часы почти Vista SideBar всего 21kb

плееры:

Microsoft Visual C++ 2008 Direct Show DVD Mini Player 10.5kb

Dev C++ WinAPI Микро медиа плеер 3.5kb

Dev C++ WinAPI Мини медиа плеер 4.5kb

Dev C++ WinAPI Hint Всплывающая подсказка

Dev C++ WinAPI RECT - имитатор кнопки

Dev C++ WinAPI Заполнить ListBox

Dev C++ WinAPI Заполнить, редактировать, сохранить, загрузить ListBox (PlayList)

Dev C++ WinAPI Индикатор уровня

Dev C++ WinAPI MP3 Микро плеер Открыть с помощью...

Dev C++ WinAPI Своя кнопка

изображения:

Dev C++ GDI+ WinAPI Mini FotoResizer (16kb), изменяет размеры всех фото (JPG) до указанного размера в выбраной папке и её подпапках

Dev C++ WinAPI Сохранить BITMAP экрана, десктопа, окна, клиентской области.

Dev C++ WinAPI Изменить размер изображения BMP RESIZE. Загрузка изображений из ФАЙЛА, вывод на экран и сохранение в файл.

Dev C++ WinAPI Загрузка изображений из РЕСУРСОВ и вывод на экран.

Dev C++ GDI+ WinAPI. Преобразовать изображения из одного формата в другой (JPG в BMP, GIF, PNG и обратно ), используя дополнительные библиотеки GDI+. Загрузка изображений из файла и сохранение в файл.

Dev C++ GDI+ WinAPI масштабирование JPG RESIZE

Dev C++ OLE WinAPI. Преобразовать изображения из JPG в BMP, используя дополнительные библиотеки OLE. Загрузка изображений из РЕСУРСОВ и сохранение в файл.

Dev C++ OLE WinAPI преобразовать JPG в BMP, используя дополнительные библиотеки OLE. Загрузка изображений из ФАЙЛА и сохранение в файл.

Dev C++ OLE WinAPI масштабирование BMP RESIZE

разное:

Dev C++ WinAPI Dev C++ Преобразовать цвет точки экрана в HTML код

Dev C++ WinAPI NOTIFYICONDATA WS_EX_TOOLWINDOW Иконка в области уведомлений (notification area, tray, трей). Удалить с панели задач (taskbar).

Dev C++ WinAPI ShellExecute Создать ссылку на WEB сайт

Dev C++ WinAPI ShellExecute Создать окно со ссылкой на WEB сайт

Dev C++ WinAPI CreateProcess ShellExecute WinExec Запуск приложения из приложения

Dev C++ OLE WinAPI Создать регион Regions PopUp Меню Menu

Dev C++ FindFiles. Поиск файлов заданного типа (в примере *.JPG) в папке и её подпапках

библиотеки:

Скачать библиотеку GDI+ для Dev C++

Скачать справочнник с примерами языка C.