русс | укр

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

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

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

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


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

Функция диалогового окна

Создав описание окна диалога, нужно определитьфункцию окна. Функция окна диалога нашего приложения будет создавать и управлять диалоговым окном.

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

Функция окна диалога, в отличие от функции окна приложения, обрабатывает в основном действия пользователя (сообщения типа WM_COMMAND), и не передает неопознанное сообщение стандартной функции DefWindowProc() :

BOOL DialogProc ( hDlg, message, wParam, lParam )

HWND hDlg;

unsigned message;

WORD wParam;

LONG lParam;

{

switch (message

{

case WM_INITDIALOG : // Сообщения об инициализации диалогового окна

return TRUE ;

case WM_COMMAND:; // Сообщение о поступлении команды

if (wParam = = IDOK) {

EndDialog (hDlg, NULL);

return TRUE ;

}

break;

}

return FALSE;

}

Функция диалогового окна сходна с функцией окна, но все-таки это «не настоящая» функция окна.

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

Приведем несколько отличий функции диалогового окна от «настоящей»

функции окна:

Функция окна возвращает значение типа long, а функция диалогового окна - значение типа BOOL ( этот тип определен в файле windows.h как тип int).

¨ Если функция обычного окна не обрабатывает поступающее ей сообщение ,то она должна передать необработанное сообщение Windows, вызвав функцию Def WindowProc . А функция диалогового окна, если она не обработала переданное ей сообщение , должна просто вернуть значение TRUE ( не нулевое значение; если сообщение обработано , следует вернуть FALSE).

¨ Функция диалогового окна не получает сообщения WM_CREATE, вместо него поступает WM_INITDIALOG. Кроме того, функция диалогового окна не обрабатывает сообщения WM_PAINT и WM_DESTROY.

Как и все функции окон, функция окна диалога не должна вызываться из приложения явно.

Простейшая функция окна диалога обрабатывает всего два сообщения: WM_COMMAND и WM_INITDIALOG.

Сообщение WM_INITDIALOG является первым сообщением, которое получает функция диалогового окна.

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

Несмотря на то, что в функции DialogProc( ) в предыдущем примере таких действий не производится, сообщение WM_INITDIALOG должно быть обработано, поскольку возвращаемое значение определяет, какому органу управления в диалоговом окне будет передано управление. Если при обработке сообщения WM_INITDIALOG возвращается TRUE, то управление передается первому органу, имеющему тип WS_TABSTOP. Если при обработке сообщения WM_INITDIALOG будет возвращено значение FALSE, то управление не будет передано ни одному органу управления диалогового окна, т.е. Windows не будет сам устанавливать фокус ввода. Это позволяет функции диалогового окна установить фокус ввода при помощи SetFocus( ).

Другим сообщением, которое может обрабатывать функция диалогового окна , является WM_COMMAND. Оно поступает при нажатии пользователем кнопки мыши в момент, когда указатель мыши находится на органе управления типа «кнопка», либо когда пользователь нажал на клавишу пробела и есть кнопка на диалоговом окне, имеющая фокус ввода. При этом параметр wParam сообщения содержит идентификатор органа управления, от которого поступило сообщение.

Завершение работы с диалоговым окном всегда должно осуществляться при помощи функции EndDialog.

В предыдущем примере, после того, как пользователь «нажмет» кнопку «OK» диалогового окна, управление передается функции EndDialog, которая удаляет диалоговое окно с экрана и передает управление Windows.

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


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



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


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

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

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


 


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

 
 

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