|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Palette Messages
Changes to the system palette for the display device can have dramatic and sometimes undesirable effects on the colors used in windows on the desktop. To minimize the impact of these changes, Windows provides a set of messages that help applications manage their logical palettes while ensuring that colors in the active window are as close as possible to the colors intended.
Windows sends a WM_QUERYNEWPALETTE message to a top-level or overlapped window just before activating the window. This message gives an application the opportunity to select and realize its logical palette so that it receives the best possible mapping of colors for its logical palette. When the application receives the message, it should use the SelectPalette, UnrealizeObject, and RealizePalette functions to select and realize the logical palette. Doing so directs Windows to update colors in the system palette so that its colors match as many colors in the logical palette as possible.
When an application causes changes to the system palette as a result of realizing its logical palette, Windows sends a WM_PALETTECHANGED message to all top-level and overlapped windows. This message gives applications the opportunity to update the colors in the client areas of their windows, replacing colors that have changed with colors that more closely match the intended colors. An application that receives the WM_PALETTECHANGED message should use UnrealizeObject and RealizePalette to reset the logical palettes associated with all inactive windows and then update the colors in the client area for each inactive window by using the UpdateColors function. This technique does not guarantee the greatest number of exact color matches; however, it does ensure that colors in the logical palette are mapped to reasonable colors in the system palette.
Note To avoid creating an infinite loop, an application should never realize the palette for the window whose handle matches the handle passed in the wParam parameter of the WM_PALETTECHANGED message.
The UpdateColors function typically updates a client area of an inactive window faster than redrawing the area. However, because UpdateColors performs color translation based on the color of each pixel before the system palette changed, each call to this function results in the loss of some color accuracy. This means UpdateColors cannot be used to update colors when the window becomes active. In such cases, the application should redraw the client area.
Windows may send the WM_QUERYNEWPALETTE message when changes to the logical palette are made. Also, Windows may send the WM_PALETTEISCHANGING message to all top-level and overlapped windows when the system palette is about to change.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Сообщения Палитры
Изменения в системную палитру для дисплейного устройства могут иметь драматические и иногда нежелательные эффекты в цветах использованных в окне в настольной системе. Для того, чтобы минимизировать влияние этих изменений, Окно обеспечивает набор сообщений, которые помогают приложениям управлять их логические палитры при обеспечении, которое окрашивается в активном окне по возможности закрытые в предполагаемых цветах.
Окно посылает сообщение WM_QUERYNEWPALETTE на верхний уровень или перекрывшее окно точное перед активизацией окна. Это сообщение дает приложению возможность выбираться и реализовывать свою логическую палитру чтобы оно получало наилучшее возможное распределение цветов для своей логической палитры. Когда приложение получает сообщение, оно должно использовать SelectPalette, UnrealizeObject, и функции RealizePalette, чтобы выбираться и реализовывать логическую палитру. Делая таким прямым Окном, чтобы корректировать цвета в системной палитре чтобы цвета соответствовали как много цветов в логической палитре по возможности.
Когда приложение вызывает изменения в системную палитру в результате реализовывающей логической палитры, Окно посылает сообщению WM_PALETTECHANGED на весь верхний уровень и перекрытое окно. Это сообщение дает приложениям возможность корректировать цвета в областях клиента их окна, заменяющие цвета, что изменился с цветами, что более тесно соответствовать предполагаемым цветам. Приложение, которое получает сообщение WM_PALETTECHANGED должно использовать UnrealizeObject и RealizePalette, чтобы восстанавливать логические палитры связанные всем неактивным окном затем корректировать цвета в области клиента для каждого неактивного окна используя функцию UpdateColors. Эта техника не гарантирует величайшее количество точных цветных спичек; тем не менее, это гарантирует, который окрашивается в логической палитре отображены в разумные цвета в системной палитре.
Примечание, чтобы избегать создавать бесконечный цикл, приложение не должно никогда реализовать палитру для окна чья ручка соответствует ручке пройденной в параметр wParam сообщения WM_PALETTECHANGED.
Функция UpdateColors обычно корректирует область клиента неактивного окна быстрее чем перерисовыванный область. Тем не менее, поскольку UpdateColors выполняет цветной перевод основанный в цвете каждого пикселя перед системной палитрой измененной, каждый вызов в эту функцию заканчивается убытком некоторой цветной точности. Это означает, что UpdateColors не может быть использован, чтобы корректировать цвета когда окно становится активным. В таких случаях, приложение должно перерисовывать область клиента.
Окно может послать сообщение WM_QUERYNEWPALETTE когда изменения в логическую палитру сделаны. Также, Окно может послать сообщение WM_PALETTEISCHANGING на все верхний уровень и перекрывшее окно когда системная палитра собирается изменяться.
|
|
|
|
| |