|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Explorer-Style Custom Templates
To define additional controls for an Explorer-style Open or Save As dialog box, use the OPENFILENAME structure to specify a template for a child dialog box that contains the additional controls. If your child dialog template is a resource in an application or dynamic-link library, set the OFN_ENABLETEMPLATE flag in the Flags member and use the hInstance and lpTemplateName members of the structure to identify the module and resource name. If the template is already in memory, set the OFN_ENABLETEMPLATEHANDLE flag and use the hInstance member to identify the memory object that contains the template. When providing a child dialog template for an Explorer-style dialog box, you must also set the OFN_EXPLORER flag; otherwise, the system assumes you are providing a replacement template for an old-style dialog box. Typically, if you provide additional controls, you must also provide an Explorer-style hook procedure to process messages for the new controls.
You can create your child dialog box template as you do any other template, except that you must specify the WS_CHILD and WS_CLIPSIBLINGS styles and should specify the DS_3DLOOK and DS_CONTROL styles. The system requires the WS_CHILD style because your template defines a child dialog of the default Open or Save As dialog box. The WS_CLIPSIBLINGS style ensures that the child dialog box does not paint over any of the controls in the default dialog box. The DS_3DLOOK style makes sure that the appearance of the controls in the child dialog box is consistent with the controls in the default dialog box. The DS_CONTROL style makes sure that the user can use the TAB and other navigation keys to move between all controls, default or custom, in the customized dialog box.
To make room for the new controls, the system expands the default dialog box by the width and height of the custom dialog box. By default, all controls from the custom dialog box are positioned below the controls in the default dialog box. However, you can override this default positioning by including a static text control in your custom dialog box template and assigning it the control identifier value of stc32. (This value is defined in the DLG.H header file.) In this case, the system uses the control as the point of reference for determining where to position the new controls. All new controls above and to the left of the stc32 control are positioned the same amount above and to the left of the controls in the default dialog box. New controls below and to the right of the stc32 control are positioned below and to the right of the default controls. In general, each new control is positioned so that it has the same position relative to the default controls as it had to the stc32 control. To make room for these new controls, the system adds space to the left, right, bottom, and top of the default dialog box as needed.
The system requires the hook procedure to process all messages intended for the custom dialog box and therefore sends the same window messages to the hook procedure as to any other dialog box procedure. For example, the hook procedure receives WM_COMMAND messages when the user clicks on button controls in the custom dialog box. The hook procedure is responsible for initializing these controls and retrieving values from the controls when the dialog box is closed. Note that when the hook procedure receives the WM_INITDIALOG message, the system has not yet moved the controls to their final positions.
The default dialog box procedure handles messages for all the controls in the default dialog box, but the hook procedure receives the WM_NOTIFY notification messages for user actions on these controls as described in Explorer-Style Hook Procedures.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
ЗАКАЗНЫЕ Шаблоны Explorer-Style
Для того, чтобы определять дополнительные элементы управления для Исследователя-стиля Открытого или Сохранять Как диалоговый ящик, используйте структуру OPENFILENAME, чтобы определять шаблон для диалогового ящика ребенка, что содержит дополнительные элементы управления. Если ваш диалоговый шаблон ребенка является ресурсом на прикладной или динамической связи библиотеки, установите флаг OFN_ENABLETEMPLATE на члене Флагов и используйте hInstance и участников lpTemplateName структуры, чтобы идентифицировать модульное и имя ресурса. Если шаблон - уже в памяти, установите флаг OFN_ENABLETEMPLATEHANDLE и используйте член hInstance, чтобы идентифицировать объект памяти, который содержит шаблон. При обеспечении диалогового шаблона ребенка для Исследователя-стиля диалогового ящика, Вы должны также установить флаг OFN_EXPLORER; в противном случае, система принимает что Вы обеспечиваете шаблон замены для старого-диалогового ящика стиля. Обычно, если Вы обеспечиваете дополнительные элементы управления, Вы должны также обеспечить Исследователя-стиля процедуры захвата, чтобы обрабатывать сообщения для новых элементов управления.
Вы можете создать ваш шаблон диалогового ящика ребенка как Вы делаете любым другим шаблоном, за исключением того это Вы должны определить WS_CHILD и стили WS_CLIPSIBLINGS и должны определить DS_3DLOOK и стили DS_CONTROL. Система требует стиль WS_CHILD поскольку ваш шаблон определяет диалог ребенка встроенного Открытого или Сохраняет Как диалоговый ящик. Стиль WS_CLIPSIBLINGS проверяет, что диалоговый ящик ребенка не закрашивается над любым из элементов управления во встроенном диалоговом ящике. Стиль DS_3DLOOK убеждается, что появление элементов управления в диалоговом ящике ребенка соответствующее элементам управления во встроенном диалоговом ящике. Стиль DS_CONTROL убеждается, что потребитель может использовать ТАБ. и другие ключи навигации, чтобы перемещаться между всеми элементами управления, нарушаться обязательства или заказ, в модифицировать по заказу пользователя диалоговом ящике.
Чтобы освобождать для новых элементов управления, система расширяет встроенному диалоговому ящику шириной и высотой заказного диалогового ящика. По умолчанию, все элементы управления из заказа общаются ящик спозиционирован ниже элементов управления во встроенном диалоговом ящике. Тем не менее, Вы можете аннулировать это невыполнение, позиционирующееся включая статическое текстовое управление в вашем заказном диалоговом шаблоне ящика и правопреемника это управляющая величина идентификатора stc32. (Эта величина определена в файле заголовка DLG.H.) В этом случае, система использует управление как точку исходную для определения где, чтобы позиционировать новые элементы управления. Все новые элементы управления выше и налево stc32 управления спозиционированы та же сумма выше и налево элементов управления во встроенном диалоговом ящике. Новые элементы управления ниже и вправо от stc32 управления спозиционированы ниже и вправо от встроенных элементов управления. В общих чертах, каждое новое управление спозиционировано чтобы у него есть та же позиция относительно встроенных элементов управления как это имело на stc32 управлении. Для того, чтобы освобождать для этих новых элементов управления, система добавляет пространство налево, право, вникните, и верх встроенного диалогового ящика как и требуется.
Система требует рычажную процедуру, чтобы обрабатывать все сообщения предназначенные для заказного диалога боксировать и следовательно посылает тому же окну сообщения в рычажную процедуру как то любая другая диалоговая процедура ящика. Например, рычажная процедура получает сообщения WM_COMMAND когда потребитель щелкает в элементы управления кнопки в заказном диалоговом ящике. Рычажная процедура ответственная за инициализирующие эти элементы управления и извлекая величины из элементов управления когда диалоговый ящик закрыт. Отметьтесь, что когда рычажная процедура получает сообщение WM_INITDIALOG, система еще не переместила элементы управления на их конечные позиции.
Встроенная диалоговая процедура ящика оперирует сообщения для всех элементов управления во встроенном диалоговом ящике, но рычажная процедура получает сообщения уведомления WM_NOTIFY для действий потребителя в этих элементах управления как описано в Процедурах Захвата Explorer-Style.
|
|
|
|
| |