|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Private Display Device Contexts
A private DC enables an application to avoid retrieving and initializing a display DC each time the application must draw in a window. Private DCs are useful for windows that require many changes to the values of the attributes of the DC to prepare it for drawing. Private DCs reduce the time required to prepare the DC and therefore the time needed to carry out drawing in the window.
An application directs Windows to create a private DC for a window by specifying the CS_OWNDC style in the window class. Windows creates a unique private DC each time it creates a new window belonging to the class. Initially, the private DC has the same default values for attributes as a common DC, but the application can modify these at any time. Windows preserves changes to the DC for the life of the window or until the application makes additional changes. An application can retrieve the handle of the private DC by using the GetDC function any time after the window is created. The application must retrieve the handle only once. Thereafter, it can keep and use the handle any number of times. Because a private DC is not part of the display DC cache, an application need never release the DC by using the ReleaseDC function.
Windows automatically adjusts the DC to reflect changes to the window, such as moving or sizing. This ensures that any overlapping windows are always properly clipped; that is, no action is required by the application to ensure clipping. However, Windows does not revise the DC to include the update region. Therefore, when processing a WM_PAINT message, the application must incorporate the update region either by calling BeginPaint or by retrieving the update region and intersecting it with the current clipping region. If the application does not call BeginPaint, it must explicitly validate the update region by using the ValidateRect or ValidateRgn function. If the application does not validate the update region, the window receives an endless series of WM_PAINT messages.
Because BeginPaint hides the caret if a window is showing it, an application that calls BeginPaint should also call the EndPaint function to restore the caret. EndPaint has no other effect on a private DC. Although a private DC is convenient to use, it is expensive in terms of system resources, requiring 800 or more bytes to store. Private DCs are recommended when performance considerations outweigh storage costs. Windows includes the private DC when sending the WM_ERASEBKGND message to the application. The current selections of the private DC, including mapping mode, are in effect when the application or Windows processes these messages. To avoid undesirable effects, Windows uses logical coordinates when erasing the background; for example, it uses the GetClipBox function to retrieve the logical coordinates of the area to erase and passes these coordinates to the FillRect function. Applications that process these messages can use similar techniques. Windows supplies a window DC with the WM_ICONERASEBKGND message regardless of whether the corresponding window has a private DC.
An application can use the GetDCEx function to force Windows to return a common DC for the window that has a private DC. This is useful for carrying out quick touch-ups to a window without changing the current values of the attributes of the private DC.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Частные Дисплейные Контексты Устройства
Частный DC позволяет приложение, чтобы избегать извлекаться и инициализирующий показ DC всякий раз, когда приложение должно втянуть окно. Частный DCs полезные для окна, которое требует много изменений в величины атрибутов DC, чтобы подготавливать это к чертежу. Частный DCs уменьшает время требовавшееся, чтобы подготавливать DC и следовательно времени нужно выполнять втягивая окно.
Приложение направляет Окно, чтобы создавать частный DC для окна определяя стиль CS_OWNDC в классе окна. Окно создает уникальный частный DC всякий раз, когда оно создает новое окно, принадлежащее классу. Первоначально, частный DC имеет то же значение по умолчанию для атрибутов как общий DC, но приложение может модифицировать его в любое время. Окно сохраняет изменения на DC для жизни окна или пока приложение не сделает дополнительными изменениями. Приложение может извлечь ручку частного DC используя функцию GetDC всякий раз, когда после того, как окно будет создано. Приложение должно извлечь ручку только как только. Согласно этому, это может держать и использовать ручку любое раз (а). Поскольку частный DC - не часть дисплейного кеша DC, приложению нужно никогда выпуск DC используя функцию ReleaseDC.
Окно автоматически регулирует DC, чтобы отражать изменения в окно, как например, перемещение или калибровка. Это проверяет, что любое перекрытие окна всегда правильно вырезано; то есть, никакое действие не потребовалось приложением, чтобы гарантировать отсечение. Тем не менее, Окно не проверяет DC, чтобы включать регион коррекции. Следовательно, при обработке сообщения WM_PAINT, приложение должно включить регион коррекции или вызывая BeginPaint или извлекая регион коррекции и intersecting это с течением, вырезать регион. Если приложение не вызывает BeginPaint, это должно явно подтвердить регион коррекции используя ValidateRect или функция ValidateRgn. Если приложение не подтверждает регион коррекции, окно получает бесконечную серию сообщений WM_PAINT.
Поскольку BeginPaint прячут символ ^ если окно показывает этому, приложение, которое вызывает BeginPaint должен также вызывать функцию EndPaint, чтобы восстанавливать символ ^. EndPaint НЕ имеет другой эффект на частном DC. Хотя частный DC удобно должен использоваться, это дорого с точки зрения системных ресурсов, требующих 800 или больше байтов, чтобы храниться. Частный DCs рекомендованы когда соображения исполнения перевешивают издержки хранения. Окно включает частный DC при посылке сообщения WM_ERASEBKGND в приложение. Текущие выборы частного DC, включая распределение способа, быть в силе когда приложение или Окно обрабатывает эти сообщения. Для того, чтобы избегать нежелательных эффектов, Окно использует логические координаты стирая фон; например, это использует функцию GetClipBox, чтобы извлекать логические координаты области, чтобы стирать и передавать эти координаты в функцию FillRect. Приложения, которые обрабатывают эти сообщения может использовать аналогичные методы. Окно обеспечивает окну DC сообщением WM_ICONERASEBKGND независимо от того, что соответствующее окно имеет частный DC.
Приложение может использовать функцию GetDCEx, чтобы заставлять Окно, чтобы возвращать общий DC для окна, что имеет частный DC. Это полезное чтобы выполнять быстрое прикосновение-ups на окно не изменяя текущие величины атрибутов частного DC.
|
|
|
|
| |