русс | укр

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

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

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

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


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

Взаимодействие с органами управления диалоговых окон


Дата добавления: 2013-12-23; просмотров: 1188; Нарушение авторских прав


Органы управления – это дочерние окна, поэтому обмен информации между ними и приложением осуществляется посредством передачи сообщений.

От диалогового окна приложение принимает сообщение WM_COMMAND. Параметр wParam при этом содержит идентификатор органа управления, от которого поступило сообщение.

Однако функции API для обработки диалоговых окон используют дескриптор органа управления.

Дескриптор дочернего окна органа управления помещается в младшем слове параметра lParam.

Кроме того, имеется функция GetDlgItem, позволяющая по идентификатору органа управления диалогового окна получить дескриптор этого окна-органа управления:

 

hDlgCtrl = GetDlgItem ( hDlg, nID ) ;

 

Первый параметр функции GetDlgItem содержит дескриптор диалогового окна, а второй – идентификатор органа управления, дескриптор которого мы желаем получить. При помощи функции GetWindowWord можно, наоборот, по дескриптору органа управления получить его идентификатор. Для этой цели используется флаг GWW_ID:

 

nID = GetWindowWord ( hDlgCtrl , GWW_ID );

 

Для взаимодействия с органами управления очень важными являются две следующие функции:

SendMessage ( ) и PostMessage ( ).

Основное назначение этих функций: выдавать конкретному окну команду на выполнение некоторого задания.

Функция SendMessage ( ) явно вызывает процедуру соответствующего окна, передает ей сообщение и не выходит из этой процедуры, пока она не обработает это сообщение. То есть функция SendMessage ( ) не закончит свою работу, пока сообщение не будет обработано.

Функция PostMessage ( ) – не вызывает явно оконную процедуру, а пересылает сообщение в очередь приложения, которое извлекается оттуда функцией GetMessage ( ).

Функция PostMessage ( ) заканчивается немедленно, как только поместит сообщение в очередь приложения.



Функции SendMessage ( ) и PostMessage ( ) имеют следующий формат :

 

SendMessage ( hWnd, iMessage, wParam, lParam );

 

PostMessage ( hWnd, iMessage, wParam, lParam );

 

hWnd – дескриптор окна, которому посылается сообщение;

iMessage – сообщение;

wParam и lParam – параметры сообщения;

 

Например, если необходимо программно имитировать нажатие кнопки, то дочернему окну – органу управления – кнопке послать сообщение BM_SETSTATE

 

SendMessage ( hWnd_Button, BM_SETSTATE, 1,OL ),

 

где hWnd_Button – дескриптор окна - кнопки.

Для того , чтобы определить дескриптор окна - кнопки удобно воспользоваться функцией GetDlgItem ( ) :

 

hWnd_Button = GetDlgItem ( hDlg, ID_BUTTON ) ;

 

где hDlg – дескриптор окна диалога ;

ID_BUTTON – идентификатор окна - кнопки ;

Совместное использование функций GetDlgItem ( ) и SendMessage ( ) выглядит так:

 

SendMessage ( GetDlgItem ( hDlg, ID_BUTTON ),BM_SETSTATE,1, OL ).

 

Такая конструкция используется достаточно часто, поэтому она оформлена в виде функции

 

SendDlgItemMessage (hDlg, nID, iMessage, wParam, lParam),

 

т.е. эквивалентом прдыдущей функции SendMessage ( ) является следующее обращение :

 

SendDlgItemMessage (hDlg, ID_BUTTON, BM_SETSTATE, 1, OL ).

 

Таким образом функция SendDlgItemMessage ( ) посылает сообщение в орган управления с идентификатором nID окна с дескриптором hDlg, аналогично функции SendMessage ( ).

При работе с кнопками используются также другие функции. Например, функция CheckRadioButton ( ) позволяет перевести все переключатели диалогового окна hDlg с идентификаторами от nFirstID до nLastID , за исключением переключателя с идентификатором nCheckID , в положение « выключено »:

 

CheckRadioButton ( hDlg, nFirstID, nLastID, nCheckID ) ;

 

Функция CheckDlgButton позволяет «нажать» или «отпустить» кнопку :

 

CheckDlgButton ( hDlg, nCheckboxID, wCheck );

 

Если параметр wCheck равен нулю, то кнопка «отпускается» , единице – «нажимается».

Для проверки положения кнопки в диалоговом окне используется функция IsDlgButtonChecked :

 

wCheck = IsDlgButtonChecked ( hDlg, nCheckboxID );

 



<== предыдущая лекция | следующая лекция ==>
Функция диалогового окна | Окно сообщений


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


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

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

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


 


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

 
 

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

Генерация страницы за: 0.004 сек.