Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Русский справочник ΠΏΠΎ Win32 APIΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 16

Автор Варас Π‘ΠΎΡ€ΠΎΠΊΠ°

Π’ случаС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ возвращаСтся NULL .


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ


ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ смоТСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ контСкст устройства Π² памяти для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ рисования, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² контСкст устройства Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· с ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΈ высотой. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Π²Ρ‹Π±Ρ€Π°Π½, контСкст устройства ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ скопированы Π½Π° экран ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€.

Ѐункция CreateCompatibleDC ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ‚Π΅ΠΌΠΈ устройствами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ растровыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π²Ρ‹Π·Π²Π°Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GetDeviceCaps .

Π’ случаС, Ссли Π² контСкстС устройства ΠΎΡ‚ΠΏΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ, Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ DeleteDC для Π΅Π³ΠΎ удалСния.


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅


CreateCompatibleBitmap, DeleteDC, GetDeviceCaps .


DeleteDC


Ѐункция DeleteDC удаляСт Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ контСкст устройства.


BOOL DeleteDC (


HDC hdc // дСскриптор контСкста устройства

);


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹


hdc - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ контСкст устройства.


Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния


Π’ случаС успСха возвращаСтся Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ случаС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ возвращаСтся Π½ΡƒΠ»ΡŒ.


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ


ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ контСкст устройства, Ρ‡Π΅ΠΉ дСскриптор Π±Ρ‹Π» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetDC . ВмСсто этого ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ReleaseDC для освобоТдСния контСкста устройства.


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅


CreateDC, GetDC, ReleaseDC .


EnumObjects


Ѐункция EnumObjects пСрСчисляСт ΠΏΠ΅Ρ€ΡŒΡ ΠΈΠ»ΠΈ кисти, доступныС для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ контСкста устройства. Π­Ρ‚Π° функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΡ… доступных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², прСдоставляя Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. EnumObjects ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ Π²Π΅Ρ€Π½Π΅Ρ‚ Π½ΡƒΠ»ΡŒ ΠΈΠ»ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ пСрСчислСны всС доступныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.


int EnumObjects (


HDC hdc , // дСскриптор контСкста устройства

int nObjectType , // ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

GOBJENUMPROC lpObjectFunc , // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°

LPARAM lParam // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° прСдоставляСмыС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅

);


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹


hdc - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ контСкст устройства.

nObjectType - опрСдСляСт Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ OBJ_BRUSH ΠΈΠ»ΠΈ OBJ_PEN .

lpObjectFunc - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. Для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ смотритС описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ EnumObjectsProc .

lParam - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° опрСдСляСмыС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° вмСстС с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅.


Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния


Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ опрСдСляСт послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. Π•Π³ΠΎ смысл опрСдСляСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ВозвращаСтся -1 Π² случаС наличия слишком большого количСства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ. Π’ этом случаС функция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π½Π΅ вызываСтся.


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅


EnumObjectsProc, GetObject .


GetDC


Ѐункция GetDC ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ дСскриптор контСкста дисплСя для клиСнтской области ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ дисплСя ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… функциях GDI для рисования Π² клиСнтской области ΠΎΠΊΠ½Π°.


Π­Ρ‚Π° функция ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ, классовый ΠΈΠ»ΠΈ частный контСкст устройства Π² зависимости ΠΎΡ‚ стиля класса, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Для ΠΎΠ±Ρ‰ΠΈΡ… контСкстов устройства GetDC присваиваСт контСксту Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ контСкста устройства. Для классовых ΠΈ частных контСкстов устройства GetDC оставляСт Ρ€Π°Π½Π΅Π΅ присвоСнныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.


HDC GetDC (


HWND hWnd // дСскриптор ΠΎΠΊΠ½Π°

);


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹


hWnd - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ, Ρ‡Π΅ΠΉ контСкст устройства извлСкаСтся.


Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния


Π’ случаС успСха возвращаСтся контСкст устройства для клиСнтской области ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

Π’ случаС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ возвращаСтся Π½ΡƒΠ»ΡŒ.


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ


ПослС рисования с ΠΎΠ±Ρ‰ΠΈΠΌ контСкстом устройства Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° функция ReleaseDC для освобоТдСния контСкста устройства. ΠšΠ»Π°ΡΡΠΎΠ²Ρ‹Π΅ ΠΈ частныС контСксты устройства Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ контСкстов устройства ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ объСмом доступной памяти.


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅


ReleaseDC, GetWindowDC .


ResetDC


Ѐункция ResetDC обновляСт Π΄Π°Π½Π½Ρ‹ΠΉ контСкст устройства ΠΏΠ»ΠΎΡ‚Ρ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π°, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ структурС.


HDC ResetDC (


HDC hdc , // дСскриптор контСкста устройства

CONST DEVMODE * lpInitData // адрСс структуры с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ

// ΠΎ контСкстС устройства

);


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹


hdc - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ контСкст устройства, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ обновлСнию.

lpInitData - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° структуру Ρ‚ΠΈΠΏΠ° DEVMODE , ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΎΠ²ΠΎΠΌ контСкстС устройства.


Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния


Π’ случаС успСха возвращаСтся дСскриптор ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ исходного контСкста устройства.

Π’ случаС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ возвращаСтся NULL .


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ


ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ResetDC ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ сообщСния WM _ DEVMODECHANGE. ResetDC Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для измСнСния ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π±ΡƒΠΌΠ°Π³ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π±ΡƒΠΌΠ°Π³ΠΈ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Ѐункция ResetDC Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для измСнСния ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° устройства, ΠΈΠΌΠ΅Π½ΠΈ устройства ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ измСняСт соСдинСниС с ΠΏΠΎΡ€Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ имя устройства, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ исходный контСкст устройства ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ контСкст с Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅


DeviceCapabilities, DEVMODE, Escape .


Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°

ChooseColor


Ѐункция ChooseColor создаСт стандартноС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Ρ†Π²Π΅Ρ‚Π°.


BOOL ChooseColor (


LPCHOOSECOLOR lpcc // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

);


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹


lpcc - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру Ρ‚ΠΈΠΏΠ° CHOOSECOLOR , которая содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Когда ChooseColor Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, структура содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ†Π²Π΅Ρ‚Π΅.


Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния


Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ ОК Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅, возвращаСтся Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π§Π»Π΅Π½ rgbResult структуру Ρ‚ΠΈΠΏΠ° CHOOSECOLOR содСрТит RGB Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π°, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ Cancel, ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€Ρ‹Π» Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка - возвращаСтся Π½ΡƒΠ»ΡŒ. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ошибкС Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ CommDlgExtendedError , которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:


CDERR_FINDRESFAILURE

CDERR_MEMLOCKFAILURE

CDERR_INITIALIZATION

CDERR_NOHINSTANCE

CDERR_LOCKRESFAILURE

CDERR_NOHOOK

CDERR_LOADRESFAILURE

CDERR_NOTEMPLATE

CDERR_LOADSTRFAILURE

CDERR_STRUCTSIZE

CDERR_MEMALLOCFAILURE


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ


Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Ρ†Π²Π΅Ρ‚Π° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Π»ΠΈΡ‚Ρ€. Π’Ρ‹Π±ΠΎΡ€ Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ систСмными Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΎΡ€Π΅ΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ (dithered) вСрсиями Ρ‚Π΅Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ².

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-Π»ΠΎΠ²ΡƒΡˆΠΊΡƒ (hook procedure) CCHookProc для Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Ѐункция-Π»ΠΎΠ²ΡƒΡˆΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ сообщСния, отправляСмыС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ. Для использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ установитС Ρ„Π»Π°Π³ CC_ENABLEHOOK Π² Ρ‡Π»Π΅Π½Π΅ Flags структуры Ρ‚ΠΈΠΏΠ° CHOOSECOLOR ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ адрСс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ‡Π»Π΅Π½Π΅ lpfnHook .


Π‘ΠΌ . Ρ‚Π°ΠΊΠΆΠ΅


CCHookProc, CHOOSECOLOR, CommDlgExtendedError .


ChooseFont


Ѐункция ChooseFont создаСт стандартноС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° ΡˆΡ€ΠΈΡ„Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ для логичСского ΡˆΡ€ΠΈΡ„Ρ‚Π°. Π­Ρ‚ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя имя Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚Π°, ΡΡ‚ΠΈΠ»ΡŒ (ΠΆΠΈΡ€Π½Ρ‹ΠΉ, Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ), Ρ€Π°Π·ΠΌΠ΅Ρ€, эффСкты (ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅, Π·Π°Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ†Π²Π΅Ρ‚ тСкста) ΠΈ написаниС символов (ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ символов).


BOOL ChooseFont (


LPCHOOSEFONT lpcf // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

);


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹


lpcf - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° структуру Ρ‚ΠΈΠΏΠ° CHOOSEFONT , которая содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Когда ChooseFont Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, структура содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚Π΅.