русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Главная функция WinMain()

Запуская приложение, мы фактически передаем управление программам Windows, которые загружают в память нашу программу и вызывают из нее главную функцию приложения, которая должна иметь имя WinMain() и описатель WINAPI (эквивалентный far pascal). Вызывая функцию WinMain(), Windows передает ей четыре обусловленные параметра.

Первый параметр типа HINSTANCE, поступающий в локальную переменную hInstance, представляет собой дескриптор данного экземпляра приложения. Он назначается приложению при его запуске системой Windows и служит для его идентификации. Многие функции Windows используют этот дескриптор в качестве входного параметра, поэтому в дальнейшем мы будем сохранять его в соответствующей глобальной переменной. В данной программе сохранение hInstance не предусмотрено. Второй параметр того же типа (локальная переменная hPrevInstance) является дескриптором предыдущего экземпляра этого же приложения и имеет смысл, если приложение запускается в нескольких экземплярах. Если предыдущие экземпляры отсутствуют, т. е. приложение запущено в единственном экземпляре, этот параметр равен 0. Анализ аргумента hPrevInstance позволяет определить, является ли данный экземпляр приложения единственным. Эта методика будет описана ниже.

Следующий параметр представляет собой дальний указатель на строку, содержащую параметры командной строки запуска приложения, если при его запуске были указаны какие-либо параметры. Поскольку мы не предполагаем запускать наше приложение с параметрами, и этот аргумент функции WinMain() нам не нужен, в заголовке функции указан его тип LPSTR, а сам аргумент пропущен.

Наконец, последний параметр nCmdShow характеризует режим запуска. Режим запуска можно установить, если, создав ярлык для нашего приложения, открыть для него окно Свойства, перейти на вкладку Ярлык и раскрыть список Окно. Если далее выбрать в этом списке пункт Свернутое в значок, Windows, запуская приложение, будет свертывать его в пиктограмму. В этом случае из Windows в WinMain() поступает значение nCmdShow, равное символической константе SW_SHOWMINNOACTIVE=7. Если же включен режим Стандартный размер, окно приложения на экране развертывается до заданного в самом приложении размера, а в WinMain() поступает константа SW_SHOWNORMAL=1. Полученное значение nCmdShow используется затем в качестве параметра при вызове функции Windows ShowWindow(), хотя в ShowWindow() можно передать и любое другое допустимое значение параметра, например, SW_SHOWMAXIMIZE, если желательно развернуть окно приложения на весь экран.

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

В типичном приложении Windows главная функция WinMain() должна выполнить, по меньшей мере, три важнейших процедуры:

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

Создать главное окно и показать его на экране. Порожденные окна также необходимо создать, хотя это можно сделать и позже и не обязательно в функции WinMain().

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

Функция WinMain() после своего завершения возвращает в Windows целочисленный результат, который системой не анализируется, но может быть использован при отладке программы, поскольку интерактивный отладчик tdw.exe после завершения отлаживаемой программы выводит на экран возвращаемое функцией WinMain() значение.

Просмотров: 596


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.