На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Customizing the Color Dialog Box



To customize a Color dialog box, you can use any of the following methods:

· Specify values in the CHOOSECOLOR structure when you create the dialog box.
· Provide a custom template.
· Provide a hook procedure.



You can modify the appearance and behavior of the Color dialog box by setting flags in the Flags member of the CHOOSECOLOR structure. For example, you can set the CC_SOLIDCOLOR flag to direct the dialog box to display only solid colors. To cause the dialog box to initially select a color other than black, set the CC_RGBINIT flag and specify a color in the rgbResult member.
You can provide a custom template for the Color dialog box, for example, if you want to include additional controls that are unique to your application. The ChooseColor function uses your custom template in place of the default template.

To provide a custom template for the Color dialog box

1. Create the custom template by modifying the default template specified in the COLOR.DLG file. The control identifiers used in the default Color dialog template are defined in the COLORDLG.H file.
2. Use the CHOOSECOLOR structure to enable the template as follows:

· If your custom template is a resource in an application or dynamic-link library, set the CC_ENABLETEMPLATE flag in the Flags member. Use the hInstance and lpTemplateName members of the structure to identify the module and resource name.

-Or-

· If your custom template is already in memory, set the CC_ENABLETEMPLATEHANDLE flag. Use the hInstance member to identify the memory object that contains the template.



You can provide a CCHookProc hook procedure for the Color dialog box. The hook procedure can process messages sent to the dialog box. It can also use registered messages to control the behavior of the dialog box. If you use a custom template to define additional controls, you must provide a hook procedure to process input for your controls.

To enable a hook procedure for the Color dialog box

1. Set the CC_ENABLEHOOK flag in the Flags member of the CHOOSECOLOR structure.
2. Specify the address of the hook procedure in the lpfnHook member.



After processing its WM_INITDIALOG message, the dialog box procedure sends a WM_INITDIALOG message to the hook procedure. The lParam parameter of this message is a pointer to the CHOOSECOLOR structure used to initialize the dialog box.
The dialog box sends the COLOROKSTRING registered message to the hook procedure when the user clicks the OK button. The hook procedure can reject the selected color and force the dialog box to remain open by returning zero when it receives this message. The hook procedure can force the dialog box to select a particular color by sending the SETRGBSTRING registered message to the dialog box. To use these registered messages, you must pass the COLOROKSTRING and SETRGBSTRING constants to the RegisterWindowMessage function to get a message identifier. You can then use the identifier to detect and process messages sent from the dialog box, or to send messages to the dialog box.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Модифицирующий по заказу пользователя Цветной Диалоговый Ящик



Чтобы модифицировать по заказу пользователя диалоговый ящик Цвета, Вы можете использовать любой из следующих методов:

Определять величины в структуре CHOOSECOLOR когда Вы создаете диалоговый ящик.
Обеспечивать заказной шаблон.
Обеспечивать рычажную процедуру.



Вы можете модифицировать появление и поведение диалогового ящика Цвета устанавливая флаги на члене Флагов структуры CHOOSECOLOR. Например, Вы можете установить флаг CC_SOLIDCOLOR, чтобы направлять диалоговый ящик, чтобы отображать только однотонные цвета. Для того, чтобы заставлять диалоговый ящик, чтобы первоначально выбираться цвет кроме черного, установите флаг CC_RGBINIT и определяйте цвет на члене rgbResult.
Вы можете обеспечить заказной шаблон для диалогового ящика Цвета, например, если Вы хотите включить дополнительные элементы управления, которые уникальные в вашем приложении. Функция ChooseColor использует ваш заказной шаблон вместо встроенного шаблона.

Чтобы обеспечивать заказной шаблон для диалогового ящика Цвета

1. Создайте заказной шаблон модифицируя встроенный шаблон определялся в файле COLOR.DLG. Управляющие идентификаторы использованные во встроенном Цвете общаются шаблон определен в файле COLORDLG.H.
2. Используйте структуру CHOOSECOLOR, чтобы приспосабливаться шаблон следующим образом:

Если ваш заказной шаблон является ресурсом на прикладной или динамической связи библиотеки, устанавливает флаг CC_ENABLETEMPLATE на члене Флагов. Используйте hInstance и участников lpTemplateName структуры, чтобы идентифицировать модульное и имя ресурса.

-

Если ваш заказной шаблон - уже в памяти, устанавливает флаг CC_ENABLETEMPLATEHANDLE. Используйте член hInstance, чтобы идентифицировать объект памяти, который содержит шаблон.



Вы можете обеспечить процедуру захвата CCHookProc для диалогового ящика Цвета. Рычажная процедура может обработать сообщения посланные в диалоговый ящик. Это может также использовать зарегистрированные сообщения, чтобы управлять поведением диалогового ящика. Если Вы используете заказной шаблон, чтобы определять дополнительные элементы управления, Вы должны обеспечить рычажную процедуру, чтобы обрабатывать вклад для ваших элементов управления.

Чтобы приспосабливаться рычажную процедуру для диалогового ящика Цвета

1. Установите флаг CC_ENABLEHOOK на члене Флагов структуры CHOOSECOLOR.
2. Определите адрес рычажной процедуры на члене lpfnHook.



После обработки сообщения WM_INITDIALOG, диалоговая процедура ящика посылает сообщение WM_INITDIALOG в рычажную процедуру. Параметр lParam этого сообщения является указателем в структуру CHOOSECOLOR использованную, чтобы инициализировать диалоговый ящик.
Диалоговый ящик посылает COLOROKSTRING зарегистрировавшее сообщение в рычажную процедуру когда потребитель щелкает кнопку OK. Рычажная процедура может отвергнуть выбранный цвет и заставлять диалоговый ящик, чтобы оставаться открытым возвращав нуль когда она получает это сообщение. Рычажная процедура может заставить диалоговый ящик, чтобы выбираться конкретный цвет посылая SETRGBSTRING зарегистрировавшее сообщение в диалоговый ящик. Чтобы использовать эти зарегистрированные сообщения, Вы должны передать COLOROKSTRING и константы SETRGBSTRING в функцию RegisterWindowMessage, чтобы получать идентификатор сообщения. Вы можете затем использовать идентификатор, чтобы обнаруживать и обрабатывать сообщения посланные из диалогового ящика, или, чтобы посылать сообщения в диалоговый ящик.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz