Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Шаблоны диалоговых окон являются частью файла ресурсов приложения, который входит в проект для сборки файла приложения. Эти шаблоны создаются с помощью редактора ресурсов. В MS Developer Studio редактор ресурсов интегрирован в среду разработки.

2.5 Процедура диалогового окна

Процедура диалогового окна – это специальное название оконной процедуры, обслуживающей модальное диалоговое окно. У нее нет принципиальных отличий от обычной оконной процедуры, за исключением того, что в качестве процедуры "по умолчанию" вызывается DefDlgProc, а не DefWindowProc.

Типичная диалоговая процедура реагирует на сообщения WM_INITDIALOG и WM_COMMAND. В ответ на WM_INITDIALOG выполняется инициализация элементов управления диалогового окна. Windows не посылает в процедуру диалогового окна сообщение WM_CREATE, а посылает вместо него WM_INITDIALOG, причем только после того, как созданы все элементы управления, но перед тем, как окно будет выведено на экран. Поэтому процедура диалогового окна может корректно проинциализировать элементы управления до того, как их увидит пользователь.

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

3. Стандартные диалоговые окна

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

НЕ нашли? Не то? Что вы ищете?

Стандартные диалоговые окна можно использовать двумя способами: или применять в готовом виде, вызывая соответствующие функции API; или модифицировать их поведения с помощью специальной функции-ловушки или собственного шаблона диалогового окна.

3.1 Диалоговые окна для открытия и сохранения файлов

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

Окно открытия файла (рис. 3.2) вызывается функцией GetOpenFileName. Единственный параметр этой функции – указатель на структуру OPENFILENAME. В ней хранятся значения для инициализации диалогового окна, и, возможно, адрес функции-ловушки и имя пользовательского шаблона диалогового окна, применяемого для изменения вида окна. После закрытия окна приложение может извлечь из этой структуры данные о пользовательском выборе.

Рис. 3.2. Диалоговое окно для открытия файла.

Рис. 3.3. Диалоговое окно для сохранения файла.

Окно для сохранения файла (рис. 3.3) создается функцией GetSaveFileName. Параметром этой функции также является указатель на структуру OPENFILENAME.

3.2 Диалоговое окно выбора цвета

Окно выбора цвета (рис. 3.4) позволяет выбрать цвет из системной палитры или задать новый цвет. Окно вызывается функцией ChooseColor, которой передается указатель на структуру CHOOSECOLOR. В этой структуре задаются параметры окна, а после закрытия приложение может извлечь из нее (переменная rgbResult) сведения о выбранном цвете.

Рис. 3.4. Диалоговое окно выбора цвета.

Рис. 3.5. Диалоговое окно выбора шрифта.

3.3 Диалоговое окно выбора шрифта

В окне выбора шрифта (рис. 3.5) пользователь может указать имя шрифта, его стиль, размер, особые эффекты отображения и цвет. Этой функции передается указатель на структуру CHOOSEFONT. Ее переменная lpLogFont является указателем на структуру LOGFONT, которую можно использовать для инициализации диалогового окна и для получения информации о выбранном шрифте после закрытия окна. Для создания шрифта (это одна из разновидностей объектов модуля GDI) структуру LOGFONT можно непосредственно передать функции GDI – CreateFontIndirect.

3.4 Диалоговые окна для печати и настройки параметров страницы

В диалоговом окне печати (рис. 3.6) объединены возможности печати и настройки принтера. Для выбора формата и источника бумаги предназначено отдельное окно, окно макета страницы (рис. 3.7).

Рис. 3.6. Диалоговое окно печати.

Рис. 3.7. Диалоговое окно макета страницы.

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

Окно макета страницы вызывается функцией PageSetupDlg, которая в качестве параметра принимает параметра указатель на структуру PAGESETUPDLG. С помощью этой структуры приложение может управлять содержимым элементов управления и после закрытия окна считывать данные, введенные пользователем.

3.5 Диалоговые окна для контекстного поиска и замены текста

Окна для поиска (рис. 3.8) и замены (рис. 3.9) текста обеспечивают удобный интерфейс для выполнения этих операций в приложениях, работающих с текстовыми документами. Это немодальные окна, в отличие от всех остальных стандартных диалоговых окон. Поэтому приложение, создавшее окно поиска или замены, ответственно за диспетчеризацию сообщений для этого окна функцией IsDialogMessage.

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

Немодальное диалоговое окно общается с окном-владельцем через набор сообщений. Перед вызовом FindText, приложение должно функцией RegisterWindowMessage зарегистрировать новую строку-сообщение "FINDMSGSTRING". Окно поиска будет посылать это сообщение приложению каждый раз, когда пользователь введет новую строку для поиска.

Рис. 3.8. Диалоговое окно для поиска текста.

Рис. 3.9. Диалоговое окно для замены текста.

Окно замены (рис. 3.9) похоже на окно поиска и инициализируется тоже с помощью структуры FINDREPLACE. Для вывода этого окна на экран предназначена функция ReplaceText.

Когда приложение получает сообщение от окна поиска или замены, оно может проверить переменную Flags в структуре FINDREPLACE, чтобы определить, какое именно действие было запрошено пользователем.

Окна поиска и замены не уничтожаются после возврата из функции FindText или ReplaceText. Поэтому приложение должно гарантировать, что переданная этим функциям переменная типа FINDREPLACE будет существовать в течение всего времени работы окон. Если эта переменная будет уничтожена до уничтожения диалогового окна, то приложение будет завершено вследствие недопустимой операции доступа к несуществующей области памяти.

4. Элементы управления

Элемент управления – это дочернее окно специального типа, обычно применяемое для того, чтобы пользователь мог с его помощью выполнить какое-то простое действие. В результате этого действия элемент управления посылает окну-владельцу сообщение. Например, у нажимаемой кнопки единственная простая функция, а именно, когда пользователь нажимает кнопку, то она посылает своему окну-владельцу (диалоговому окну) сообщение WM_COMMAND.

В Windows есть набор стандартных классов элементов управления. Некоторые из них показаны в диалоговом окне на рис. 3.10.

Рис. 3.10. Набор стандартных элементов управления Windows.

Рис. 3.11. Некоторые стандартные элементы управления Windows 95.

В Windows 95 появился набор новых элементов, которые, чтобы отличать их от элементов управления старых версий Windows, иногда называются стандартными элементами управления Windows 95 (рис. 3.11).

Приложения могут создавать собственные элементы управления. Их можно наследовать от стандартных оконных классов или разработать "с нуля".

Класс элемента управления и стиль (например, стиль задает разновидности кнопки – нажимаемая, с зависимой фиксацией и др.) задаются в файле ресурсов. При необходимости приложения могут создавать элементы управления как обычные окна, функцией CreateWindow. При этом необходимо в явном виде, как параметры функции, указывать имя оконного класса и стиль элемента управления.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32