Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование специальных функций
Для упрощения работы с органами управления, расположенными в диалоговых панелях, в программном интерфейсе Windows определены специальные функции. При использовании этих функций вам не требуется указывать идентификаторы окна органов управления, достаточно знать идентификаторы самих органов управления, определенные в описании шаблона. Для посылки сообщения органу управления удобно использовать функцию SendDlgItemMessage: LRESULT WINAPI SendDlgItemMessage(HWND hdlg, int idDlgItem, UINT uMsg, WPARAM wParam, LPARAM lParam); В качестве параметра hdlg этой функции необходимо указать идентификатор окна диалоговой панели. Параметр idDlgItem определяет идентификатор органа управления, которому предназначается сообщение. Остальные три параметра этой функции содержат, соответственно, код сообщения и параметры, передаваемые вместе с сообщением. Для выполнения некоторых часто использующихся операций с органами управления в программном интерфейсе Windows определены специальные функции. В частности, для заполнения списка LISTBOX именами файлов, каталогов и дисковых устройств предназначена функция DlgDirList: int WINAPI DlgDirList(HWND hdlg, LPSTR lpszPath, int idListBox, int idStatic, UINT uFileType); Первый параметр этой функции указывает идентификатор окна диалоговой панели. Параметр lpszPath - указатель на строку, содержащую шаблон для имен файлов. Параметр idListBox перед вызовом функции должен содержать идентификатор заполняемого списка. В качестве параметра idStatic вы должны указать идентификатор статического органа управления, в который будет записана строка полного пути к текущему каталогу, или NULL, если статический орган управления не используется. И, наконец, последний параметр этой функции определяет тип файлов, имена которых заносятся в список, а также указывают на необходимость записи в список имен каталогов и дисковых устройств. Этот параметр должен быть указан как логическая комбинация констант с префиксом имени DDL_ (вы уже знакомы с этими константами). Аналогичная функция предусмотрена и для списка COMBOBOX: int WINAPI DlgDirListComboBox (HWND hdlg, LPSTR lpszPath, int idListBox, int idStatic, UINT uFileType); Назначение параметров этой функции полностью аналогично назначению параметров функции DlgDirList. Функция DlgDirSelect предназначена для получения из списка LISTBOX (подготовленного с помощью функции DlgDirList) строки, выбранной пользователем:
BOOL WINAPI DlgDirSelect(HWND hdlg, LPSTR lpszBuffer, int idListBox); Параметр hdlg определяет диалоговую панель. Нужный список задается параметром idListBox. Выбранная строка будет записана в буфер, адрес которой указан с помощью параметра lpszBuffer. Размер буфера должен быть не меньше 128 байт. Аналогичная функция предусмотрена для списка COMBOBOX: BOOL WINAPI DlgDirSelectComboBox (HWND hdlg, LPSTR lpszBuffer, int idListBox); Если ваше приложение будет работать в среде Windows версии 3.1 или более старшей версии, для получения выбранной пользователем строки вы можете использовать функции DlgDirSelectEx и DlgDirSelectComboBoxEx: BOOL WINAPI DlgDirSelectEx(HWND hdlg, LPSTR lpszBuffer, int cbBufSize, int idListBox); BOOL WINAPI DlgDirSelectComboBoxEx(HWND hdlg, LPSTR lpszBuffer, int cbBufSize, int idListBox); Эти функции позволяют получить в буфер lpszBuffer размером cbBufSize байт строку, выбранную пользователем из списка с идентификатором idListBox, расположенном в диалоговой панели hdlg. Однако для выбранной строки выполняется дополнительная обработка, а именно: если выбрано имя каталога или дискового устройства, функция удаляет из строки квадратные скобки и символы "-". В программном интерфейсе Windows имеется несколько функций, облегчающих работу с редакторами текстов, расположенных в диалоговых панелях. Функция SetDlgItemText позволяет изменить заголовок органа управления или записать текст в текстовый редактор: void WINAPI SetDlgItemText(HWND hdlg, int idControl, LPCSTR lpszText); Текстовая строка lpszText записывается в орган управления с идентификатором idControl, расположенным в диалоговой панели hdlg. Функция SetDlgItemInt позволяет записать в заголовок органа управления или текстовый редактор текстовую строку, полученную после преобразования целого числа в формат строки символов: void WINAPI SetDlgItemInt(HWND hdlg, int idControl, UINT uValue, BOOL fSigned); Для диалоговой панели с идентификатором окна, равным hdlg, эта функция записывает символьное представление параметра uValue в заголовок органа управления или редактор текста с идентификатором idControl. Если параметр fSigned указан как TRUE, значение uValue интерпретируется как знаковое целое, если FALSE - как беззнаковое целое. Для получения строки, связанной с органом управления, расположенном в диалоговой панели, можно использовать функцию GetDlgItemText:
int WINAPI GetDlgItemText(HWND hdlg, int idControl, LPSTR lpszBuffer, int cbBufferSize); Эта функция записывает текст, связанный с органом управления idControl, в буфер lpszBuffer, имеющий размер cbBufferSize байт. Предусмотрена также функция, получающая из органа управления текстовую строку и выполняющая преобразование этой строки в целое число: UINT WINAPI GetDlgItemInt (HWND hdlg, int idControl, BOOL FAR* lptTranslated, BOOL fSigned); Эта функция возвращает целое число, которое образуется после преобразования текста, связанного с органом управления idControl в диалоговой панели hdlg. Если параметр fSigned указан как TRUE, преобразуемая строка интерпретируется как символьное представление знакового целого, если FALSE - как беззнакового целого. В переменную, адрес которой передается через параметр lptTranslated, записывается код ошибки. Если преобразование выполнено без ошибок, в переменную записывается значение TRUE, в противном случае - FALSE. Есть также функции, предназначенные для работы с переключателями. Функция CheckDlgButton предназначена для изменения состояния переключателя CHECKBOX (включения или выключения): void WINAPI CheckDlgButton(HWND hdlg, int idButton, UINT uState); Для переключателя с идентификатором idButton, расположенного в диалоговой панели hdlg, устанавливается новое состояние в соответствии со значением параметра uState. Для выключения переключателя параметр uState должен иметь нулевое значение. Если этот параметр будет равен 1, переключатель будет включен, а если 2 - переведен в неактивное состояние. Аналогичная функция предусмотрена для переключателей RADIOBUTTON: void WINAPI CheckRadioButton (HWND hdlg, int idFirstButton, int idLastButton, int idCheckButton); Эта функция может обслуживать сразу группу переключателей, имеющих идентификаторы от idFirstButton до idLastButton. Она включает переключатель с идентификатором idCheckButton, после чего выключает все остальные переключатели группы в указанном параметрами idFirstButton и idLastButton диапазоне идентификаторов. Для определения текущего состояния переключателя вы можете воспользоваться функцией IsDlgButtonChecked: UINT WINAPI IsDlgButtonChecked(HWND hdlg, int idButton); Эта функция возвращает состояние переключателя с идентификатором idButton, расположенного в диалоговой панели hdlg. Если переключатель находится в выключенном состоянии, возвращается нулевое значение. Для включенного переключателя возвращается значение 1. Значение 2 соответствует неактивному переключателю, изображенному серым цветом. В случае ошибки возвращается отрицательное значение -1. Если ваше приложение использует собственную логику для передачи фокуса ввода между органами управления, расположенными в диалоговой панели, ему может потребоваться информация о последовательности, в которой должен передаваться фокус ввода. С помощью функции GetNextDlgGroupItemприложение может определить идентификатор окна предыдущего или следующего органа управления в группе: HWND WINAPI GetNextDlgGroupItem(HWND hdlg, HWND hwndControl, BOOL fPrevious); В зависимости от значения флага fPrevious функция возвращает идентификатор предыдущего или следующего органа управления группе относительно органа управления с идентификатором hwndControl. Если значение флага fPrevious равно TRUE, функция возвращает идентификатор окна для предыдущего органа управления в группе, если FALSE - для следующего. Функция GetNextDlgTabItem позволяет определить идентификатор окна для первого органа управления, который имеет стиль WS_TABSTOP и расположен после органа управления с заданным идентификатором или перед этим органом: HWND WINAPI GetNextDlgTabItem(HWND hdlg, HWND hwndControl, BOOL fPrevious); Параметр hwndControl определяет орган управления, начиная с которого функция будет выполнять поиск, параметр fPrevious определяет направление поиска. Если значение параметра fPrevious равно TRUE, функция ищет предыдущий орган управления в группе, если FALSE - следующий. Следует упомянуть еще две функции, имеющие отношение к специфической системе координат, принятой для работы с диалоговыми панелями. Функция MapDialogRect преобразует координаты из единиц диалоговой панели (dialog units) в пиксели: void WINAPI MapDialogRect(HWND hdlg, RECT FAR* lprc); Преобразуемые координаты необходимо записать в структуру типа RECT, адрес которой указывается во втором параметре функции. Результат преобразования будет записан в эту же структуру. Функция GetDialogBaseUnits возвращает двойное слово, содержащее информацию о диалоговой системе координат: DWORD WINAPI GetDialogBaseUnits(void); Младшее слово представляет собой ширину в пикселях диалоговой единицы длины, старшее - высоту.
|
||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 208; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.48.131 (0.012 с.) |