Include windows h c Ρ‡Ρ‚ΠΎ это

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #include Π² C/C++ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°

Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° читаСтся прСпроцСссором ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅ΠΌΡƒ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ содСрТимоС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΈΠ»ΠΈ систСмного Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π­Ρ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π² основном ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ· внСшнСго источника Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π’ΠΎΡ‚ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ #include :

1. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ стандартный Ρ„Π°ΠΉΠ». Π­Ρ‚ΠΎ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит C/C++ объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ макроопрСдСлСния для совмСстного использования ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими исходными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

Бинтаксис

Π’ΠΊΠ»ΡŽΡ‡Π°Ρ использованиС » «. ΠŸΡ€ΠΈ использовании Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ (» «) прСпроцСссор ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится исходный «header_file». Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для доступа ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΈΠΌΠΏΠΎΡ€Ρ‚ систСмного Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ стандартного Ρ„Π°ΠΉΠ»Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° с ΠΈΠΌΠ΅Π½Π΅ΠΌ «process.h».

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ основной Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ «process.h».

ОбъяснСниС

Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ » « ΠΏΡ€Π΅Π΄ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ прСпроцСссору ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΈΠ»ΠΈ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ всСх Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Ссли ΠΎΠ½ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅.

Если вмСсто » » ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΠ³Π»ΠΎΠ²Ρ‹Π΅ скобки, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π΅ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΈ использовании » » Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ созданный Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» сохранСн Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ C-Ρ„Π°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ этот Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

#include Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° (C/C++)

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ прСпроцСссору Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ содСрТимоС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² Ρ‚ΠΎΡ‡ΠΊΡƒ, Π³Π΄Π΅ отобраТаСтся Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°.

Бинтаксис

#include « #include « «
#include #include >

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

МоТно ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ константы ΠΈ опрСдСлСния макросов Π² Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (Ρ‚Π°ΠΊΠΆΠ΅ извСстныС ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ для добавлСния ΠΈΡ… Π² любой исходный Ρ„Π°ΠΉΠ». Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ объявлСния Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ слоТных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΈΠΏΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, созданном с этой Ρ†Π΅Π»ΡŒΡŽ.

ΠŸΡƒΡ‚ΡŒ-Spec β€” это имя Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ БпСцификация ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°. Имя Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ». Бинтаксис инструкции path-Spec зависит ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ компилируСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

ОбС синтаксичСскиС Ρ„ΠΎΡ€ΠΌΡ‹ приводят ΠΊ #include Π·Π°ΠΌΠ΅Π½Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ всСм содСрТимым ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ β€” это порядок ΠΏΡƒΡ‚Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСпроцСссор ΠΈΡ‰Π΅Ρ‚ ΠΏΡ€ΠΈ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ показываСтся Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ этими Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ синтаксиса.

Π€ΠΎΡ€ΠΌΠ° синтаксисаДСйствиС
Π€ΠΎΡ€ΠΌΠ° Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ ΠΈΡ‰Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС:

1) Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ‡Ρ‚ΠΎ ΠΈ Ρ„Π°ΠΉΠ», содСрТащий #include ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ.

2) Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹. Поиск начинаСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π° Π·Π°Ρ‚Π΅ΠΌ выполняСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… всСх Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²-ΠΏΡ€Π°Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ.

3) вдоль ΠΏΡƒΡ‚ΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ /I ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ компилятора.

4) вдоль ΠΏΡƒΡ‚Π΅ΠΉ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² INCLUDE ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ срСды.

Π€ΠΎΡ€ΠΌΠ° с ΡƒΠ³Π»ΠΎΠ²Ρ‹ΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ ΠΈΡ‰Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС:

1) вдоль ΠΏΡƒΡ‚ΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ /I ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ компилятора.

2) ΠΏΡ€ΠΈ компиляции происходит Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС вмСстС с путями, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ INCLUDE ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ срСды.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прСпроцСссор Π½Π°ΠΉΠ΄Π΅Ρ‚ Ρ„Π°ΠΉΠ» с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, поиск останавливаСтся. ΠŸΡ€ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ, Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠΉ спСцификации ΠΏΡƒΡ‚ΠΈ для Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ ( » » ) прСпроцСссор выполняСт поиск Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ этой спСцификации ΠΏΡƒΡ‚ΠΈ ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ стандартныС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ.

Если имя Ρ„Π°ΠΉΠ»Π°, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, являСтся Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΡƒΡ‚ΠΈ, прСпроцСссор сначала выполняСт поиск Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ„Π°ΠΉΠ» β€” это Ρ„Π°ΠΉΠ», содСрТащий #include Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ. НапримСр, Ссли Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ file2 Π² Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ file1, Ρ‚ΠΎ Ρ„Π°ΠΉΠ» file1 Π±ΡƒΠ΄Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ.

Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ: Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ #include Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹. НапримСр, file2 ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»3. Π’ этом случаС file1 Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ file2, Π½ΠΎ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π±Π°Π±ΡƒΡˆΠΊΠ΅ Ρ„Π°ΠΉΠ»3.

Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Visual Studio INCLUDE пСрСмСнная срСды игнорируСтся. ВмСсто Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ значСния, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² свойствах ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ настройкС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Visual Studio см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ…Π΄Π°Π½Π½Ρ‹Ρ….

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСмонстрируСтся Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠ³Π»ΠΎΠ²Ρ‹Ρ… скобок:

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСмонстрируСтся Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ², Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…:

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ добавляСтся содСрТимоС Ρ„Π°ΠΉΠ»Π°, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ defs.h Π² исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ прСпроцСссор сначала попытаСтся Π½Π°ΠΉΡ‚ΠΈ этот Ρ„Π°ΠΉΠ» Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, содСрТащСм Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ исходный Ρ„Π°ΠΉΠ».

Для Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² поддСрТиваСтся Π΄ΠΎ 10 ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ влоТСния. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° #include прСпроцСссор сохраняСт Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ„Π°ΠΉΠ» Π² исходный исходный Ρ„Π°ΠΉΠ».

Волько для систСм ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π­Ρ‚Π° инструкция Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅. Если Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ» Π² ΠΎΠ±ΠΎΠΈΡ… Π½Π°Π±ΠΎΡ€Π°Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π½Π΅ удастся, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ нСустранимая ошибка компилятора.

Если имя Ρ„Π°ΠΉΠ»Π° ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ для Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° с ΠΏΡƒΡ‚Π΅ΠΌ, содСрТащим Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, F:\MSVC\SPECIAL\INCL\TEST.H ), прСпроцСссор слСдуСт Π·Π° ΠΏΡƒΡ‚Π΅ΠΌ.

ΠšΠžΠΠ•Π¦ Волько для систСм ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма Microsoft Windows 3.1 для программиста

8. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ

8.1. Π€Π°ΠΉΠ» windows.h

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты любого прилоТСния Windows Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ» windows.h:

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит мноТСство ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, макросов, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, констант ΠΈ Ρ‚. Π΄.

Наряду с этим Ρ„Π°ΠΉΠ»ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² прилоТСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ Π²Π°ΠΌ ΠΏΠΎ MS-DOS, include-Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ stdlib.h ΠΈ string.h.

Если Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Borland C++ for Windows вСрсии 3.1 указываСтся, Ρ‡Ρ‚ΠΎ создаСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows, компилятор опрСдСляСт символ _WINDOWS. Π­Ρ‚ΠΎΡ‚ символ влияСт Π½Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π‘ΠΈ. Π’ частности, ΠΈΠ· include-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π΅ совмСстимых с Windows.

ΠŸΠ΅Ρ€Π΅Π΄ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π° windows.h для выполнСния Π±ΠΎΠ»Π΅Π΅ строгой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² рСкомСндуСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ символ STRICT:

ПослС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ этой строки ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Π’ частности, всС многочислСнныС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ рСсурсов Windows, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ контСкста, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π° ΠΈ Ρ‚. ΠΏ., ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ этом Π²Ρ‹ Π½Π΅ смоТСтС ΠΏΠΎ ошибкС Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, присваиваниС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΎΠΊΠ½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для хранСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° контСкста отобраТСния ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° мСню.

Π•ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ символов, ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π° windows.h Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, связанных с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ подсистСмами Windows. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ эти символы для ускорСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° windows.h ΠΏΡ€ΠΈ трансляции (разумССтся, Ссли ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ подсистСмы Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ). ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… символов.

Π‘ΠΈΠΌΠ²ΠΎΠ»Π§Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚
NOATOMΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π°Ρ‚ΠΎΠΌΠ°ΠΌΠΈ
NOCLIPBOARDΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ сообщСний ΠΈ константы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° Clipboard
NOCOMMΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, структуры ΠΈ константы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡ€Ρ‚ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…
NOCTLMGRΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌΠΈ панСлями, структуры ΠΈ константы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌΠΈ панСлями, сообщСния WM_CTLCOLOR, WM_GETFONT, WM_SETFONT, стили ΠΎΡ€Π³Π°Π½ΠΎΠ² управлСния
NOCOLORΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ GetSysColor, SetSysColor ΠΈ константы с прСфиксом COLOR
NODRAWTEXTΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DrawText ΠΈ связанныС с этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ константы
NOGDIВсС опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ констант для графичСского интСрфСйса GDI
NOHELPΠ€ΡƒΠ½ΠΊΡ†ΠΈΡŽ WinHelp, структуры ΠΈ константы для Π½Π΅Π΅
NOICONSΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ встроСнных ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ
NOKERNELΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinMain, опрСдСлСния всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ядра Windows, структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ константы
NOMBΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ MessageBox, MessageBeep ΠΈ константы для Π½ΠΈΡ…
NOMENUSΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ константы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с мСню
NOMETAFILEΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ константы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ
NOSYSCOMMANDSΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ систСмных ΠΊΠΎΠΌΠ°Π½Π΄ с прСфиксом SC
NOUSERΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ ΠΈ опрСдСлСния констант для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ относятся ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ интСрфСйсу Windows ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ прилоТСниями)
NOVIRTUALKEYCODESΠšΠΎΠ΄Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… клавиш
NOWINMESSAGESΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ² сообщСний Windows
NOWINSTYLESΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ для опрСдСлСния стилСй ΠΎΠΊΠΎΠ½

8.2. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ большоС количСство Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ констант, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠ°ΠΊ windows.h, commdlg.h ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π­Ρ‚ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ Π±Ρ‹ Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ собой стандартныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… языка Π‘ΠΈ.

Вакая Π·Π°ΠΌΠ΅Π½Π° позволяСт ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс Windows ΠΎΡ‚ самой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows, с ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΈ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ компиляторов языка Π‘ΠΈ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ. НапримСр, систСма Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Borland C++ вСрсии 3.1 Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏ unsigned int ΠΊΠ°ΠΊ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 16 Π±ΠΈΡ‚. Π’ Ρ„Π°ΠΉΠ»Π΅ windows.h ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ UNIT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ систСмы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ отобраТаСтся Π½Π° Ρ‚ΠΈΠΏ unsigned int :

Однако ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ 32-разрядных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ Windows NT) для 32-разрядных процСссоров Ρ‚ΠΈΠΏ UINT Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ 32 Π±ΠΈΡ‚. Если Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΈΠΏΠ΅ UINT ΠΊΠ°ΠΊ ΠΎ Ρ‚ΠΈΠΏΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдставлСния Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ СстСствСнной для Π΄Π°Π½Π½ΠΎΠ³ΠΎ процСссора Π΄Π»ΠΈΠ½Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок, связанных с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ†Π΅Π»ΠΎΠ³ΠΎ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ°.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово FAR ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‚Π°ΠΊ:

Π’ 16-разрядной срСдС Ρ‚ΠΈΠΏ LPSTR отобраТаСтся Π½Π° дальний ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, состоящий ΠΈΠ· сСлСктора ΠΈ смСщСния. Π’ 32-разрядной срСдС ΠΏΡ€ΠΈ использовании сплошной (FLAT) ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти содСрТимоС сСгмСнтных рСгистров устанавливаСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС прилоТСния ΠΈ Π² дальнСйшСм Π½Π΅ измСняСтся (самим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ). Для адрСсации Π² этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 32-разрядная ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° смСщСния.

Если ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏ LPSTR, ΠΏΡ€ΠΈ Π΅Π΅ пСрСносС Π² срСду Windows NT Π²Π°ΠΌ Π½Π΅ придСтся ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ исходныС тСксты, достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ. Для этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово FAR ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠ°ΠΊ пустоС мСсто:

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всС дальниС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ с использованиСм этого ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова, автоматичСски прСвратятся Π² Π±Π»ΠΈΠΆΠ½ΠΈΠ΅ (Ρ‡Ρ‚ΠΎ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ).

Если Π±Ρ‹ Π²Ρ‹ опрСдСляли дальний ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° строку символов ΠΊΠ°ΠΊ char _far *, Π²Π°ΠΌ Π±Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово _far.

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π΅ windows.h

Π€Π°ΠΉΠ» windows.h Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π²ΠΎ всС исходныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows. Он содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, символичСских ΠΈΠΌΠ΅Π½ констант ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса Windows.

Для создания ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ смоТСтС пСрСнСсти Π² срСду Windows NT ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ срСду, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс Windows, слСдуСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ стандартными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии систСмы, Π° Ρ‚Π΅ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ windows.h.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ список Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π΅ windows.h.

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π² Ρ„Π°ΠΉΠ»Π΅ windows.hОписаниС
BOOLintΠ‘ΡƒΠ»Π΅Π²Ρ‹ΠΉ (Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ)
BYTEunsigned charΠ‘Π°ΠΉΡ‚
WORDunsigned shortΠ‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 16 Π±ΠΈΡ‚
DWORDunsigned longΠ‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 32 Π±ΠΈΡ‚
UINTunsigned intΠ‘Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ СстСствСнного для Π΄Π°Π½Π½ΠΎΠΉ систСмы Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² Windows вСрсии 3.1 измСнилось ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… WORD ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с вСрсиСй 3.0. Π’ Ρ„Π°ΠΉΠ»Π΅ windows.h, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows вСрсии 3.0, Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… WORD Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях (ΠΈ для вСрсии 3.0, ΠΈ для вСрсии 3.1) Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… отобраТаСтся Π½Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Π΄Π»ΠΈΠ½ΠΎΠΉ 16 Π±ΠΈΡ‚. Но для Windows NT Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… unsigned int ΠΈ unsigned short ΡƒΠΆΠ΅ Π½Π΅ эквивалСнтны. ИспользованиС вмСсто Π½ΠΈΡ… Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… WORD упростит Π·Π°Π΄Π°Ρ‡Ρƒ пСрСноса исходных тСкстов ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² 32-Ρ€Π°Π·Ρ€ΡΠ΄Π½ΡƒΡŽ срСду.

На основС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ Π½Π°Π±ΠΎΡ€Π° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² Ρ„Π°ΠΉΠ»Π΅ windows.h ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ указатСлями:

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π² Ρ„Π°ΠΉΠ»Π΅ windows.hОписаниС
PSTRchar NEAR *Π‘Π»ΠΈΠΆΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° символ Ρ‚ΠΈΠΏΠ° char
NPSTRchar NEAR *Π‘Π»ΠΈΠΆΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° символ Ρ‚ΠΈΠΏΠ° char
LPSTRchar FAR *Π”Π°Π»ΡŒΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° символ Ρ‚ΠΈΠΏΠ° char
LPCSTRconst char FAR *ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹ΠΉ дальний ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° символ Ρ‚ΠΈΠΏΠ° char
PBYTEBYTE NEAR *Π‘Π»ΠΈΠΆΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±Π°ΠΉΡ‚
LPBYTEBYTE FAR *Π”Π°Π»ΡŒΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±Π°ΠΉΡ‚
PINTint NEAR *Π‘Π»ΠΈΠΆΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° int
LPINTint FAR *Π”Π°Π»ΡŒΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° int
PWORDWORD NEAR *Π‘Π»ΠΈΠΆΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 16 Π±ΠΈΡ‚
LPWORDWORD FAR *Π”Π°Π»ΡŒΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 16 Π±ΠΈΡ‚
PLONGlong NEAR *Π‘Π»ΠΈΠΆΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 32 Π±ΠΈΡ‚
LPLONGlong FAR *Π”Π°Π»ΡŒΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 32 Π±ΠΈΡ‚
PDWORDDWORD NEAR *Π‘Π»ΠΈΠΆΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 32 Π±ΠΈΡ‚
LPDWORDDWORD FAR *Π”Π°Π»ΡŒΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 32 Π±ΠΈΡ‚
LPVOIDvoid FAR *Π”Π°Π»ΡŒΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…

Π€Π°ΠΉΠ» windows.h содСрТит опрСдСлСния для многочислСнных структур Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ POINT, RECT, TEXTMETRICS ΠΈ Ρ‚. ΠΏ. Для всСх структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… PPOINT Π² зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ дальним, Ρ‚Π°ΠΊ ΠΈ Π±Π»ΠΈΠΆΠ½ΠΈΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, дальний ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΈΠΏΠΎΠΌ LPPOINT.

ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ всС структуры Π΄Π°Π½Π½Ρ‹Ρ…, описанныС Π² Ρ„Π°ΠΉΠ»Π΅ windows.h, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ опрСдСлСния Π½ΡƒΠΆΠ½Ρ‹Ρ… Π²Π°ΠΌ структур нСпосрСдствСнно Π² Ρ„Π°ΠΉΠ»Π΅ windows.h, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всСгда находится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ include.

Для использования Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ рСсурса Windows Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π²Π°ΠΌ рСсурса. Для получСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° вызываСтся ΠΎΠ΄Π½Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса Windows. НапримСр, для получСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° контСкста отобраТСния ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ GetDC:

Π‘Π°ΠΌΠΎ ΠΏΠΎ сСбС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ для вас Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ смысла. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ссылки Π½Π° рСсурс, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса Windows.

НСкоторыС рСсурсы ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ, поэтому послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΈΡ… использовали, эти рСсурсы слСдуСт ΠΎΡ‚Π΄Π°Ρ‚ΡŒ Windows с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для этого Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. НапримСр, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ контСкста отобраТСния, слСдуСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ReleaseDC:

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² рСсурсов:

Π’ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
GLOBALHANDLEΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π±Π»ΠΎΠΊΠ° глобальной памяти
HACCELАксСлСратор
HBITMAPΠ˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° (bitmap)
HBRUSHΠšΠΈΡΡ‚ΡŒ
HCURSORΠšΡƒΡ€ΡΠΎΡ€
HDCΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ устройства
HDRVRΠ”Ρ€Π°ΠΉΠ²Π΅Ρ€ устройства
HFONTШрифт
HGDIOBJΠžΠ±ΡŠΠ΅ΠΊΡ‚ графичСского интСрфСйса GDI
HGLOBALΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π±Π»ΠΎΠΊΠ° глобальной памяти
HICONΠŸΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°
HLOCALΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π±Π»ΠΎΠΊΠ° локальной памяти
HMENUМСню
HMETAFILEΠœΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»
HPALETTEΠŸΠ°Π»ΠΈΡ‚Ρ€Π°
HPENΠŸΠ΅Ρ€ΠΎ
HRGNΠžΠ±Π»Π°ΡΡ‚ΡŒ
HRSRCРСсурс
HSTRΠ‘Ρ‚Ρ€ΠΎΠΊΠ° символов
HTASKΠ—Π°Π΄Π°Ρ‡Π°
HWNDОкно
LOCALHANDLEΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π±Π»ΠΎΠΊΠ° локальной памяти

Π‘ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ пСрСчислСнными Π²Ρ‹ΡˆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹, с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Π°ΠΌ Π΅Ρ‰Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прСдстоит ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΎΠΌΠ°Ρ… «Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ систСмного программиста».

ИмСна констант Π² Ρ„Π°ΠΉΠ»Π΅ windows.h

Π€Π°ΠΉΠ» windows.h содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ большого количСства ΠΈΠΌΠ΅Π½ символичСских констант, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄Ρ‹ сообщСний, Ρ€Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса Windows. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ пСрСчислСниС всСх символичСских ΠΈΠΌΠ΅Π½, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π΅ windows.h, заняло Π±Ρ‹ Π½Π΅ ΠΎΠ΄ΠΈΠ½ дСсяток страниц. Π’Π°ΠΊ ΠΊΠ°ΠΊ наша ΠΊΠ½ΠΈΠ³Π° Π½Π΅ справочник, Π° скорСС ΡƒΡ‡Π΅Π±Π½ΠΎΠ΅ пособиС, ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ символичСскоС имя. ВсС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ свСдСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² тСкстС вмСстС с описаниСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ ΠΌΡ‹ расскаТСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ прСфиксах символичСских ΠΈΠΌΠ΅Π½.

БимволичСскиС ΠΈΠΌΠ΅Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° констант, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ windows.h ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Π² исходныС тСксты ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с прСфиксов, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ WM ΠΈΠ»ΠΈ WS. ИмСна Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… констант Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΡ… прСфиксов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ OPAQUE, TRANSPARENT ΠΈ Ρ‚. ΠΏ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСфиксов ΠΈΠΌΠ΅Π½ констант, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π΅ windows.h.

ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ символичСского ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
BIΠšΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ bitmap
BNΠšΠΎΠ΄Ρ‹ сообщСний ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ
BSΠ‘Ρ‚ΠΈΠ»ΠΈ логичСских кистСй
CBΠ‘Ρ‚ΠΈΠ»ΠΈ ΠΎΡ€Π³Π°Π½Π° управлСния Combo Box
CBNΠšΠΎΠ΄Ρ‹ сообщСний ΠΎΡ‚ ΠΎΡ€Π³Π°Π½Π° управлСния Combo Box
CBSΠ‘Ρ‚ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ создании ΠΎΡ€Π³Π°Π½Π° управлСния Combo Box
CEΠšΠΎΠ΄Ρ‹ ошибок ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Ρ…
CFΠ€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Clipboard
COLORБистСмныС Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Windows
CSΠ‘Ρ‚ΠΈΠ»ΠΈ класса ΠΎΠΊΠ½Π°
DRIVEВип диска
DSΠ‘Ρ‚ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ создании Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Π½Π΅Π»Π΅ΠΉ
DTВСхнология, использованная ΠΏΡ€ΠΈ создании устройства Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°
DTΠ Π΅ΠΆΠΈΠΌΡ‹ форматирования ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ тСкста Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ DrawText
HTΠšΠΎΠ΄Ρ‹, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ DefWindowProc ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сообщСния WM_NCHITTEST
IDΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ
IDCΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ встроСнных курсоров
IDIΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ встроСнных ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ
MBΠ€Π»Π°Π³ΠΈ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MessageBox
METAΠšΠΎΠ΄Ρ‹ для ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»ΠΎΠ²
MMΠ Π΅ΠΆΠΈΠΌΡ‹ отобраТСния
Π‘Π‘Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ устройства Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΡ€ΠΈΠ²Ρ‹Π΅
OFΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ
PSΠ‘Ρ‚ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π°
RTΠ’ΠΈΠΏΡ‹ рСсурсов
SBΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ константы для полосы просмотра (Scroll Bar)
SBSΠ‘Ρ‚ΠΈΠ»ΠΈ полосы просмотра
SCЗначСния систСмных ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… вмСстС с сообщСниСм WM_SYSCOMMAND
SIZEΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ для описания способа измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠΊΠ½Π°
SMΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ для опрСдСлСния систСмных ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ
SWΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ShowWindow
TAΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ для Π²Ρ‹Π±ΠΎΡ€Π° способа выравнивания тСкста ΠΏΡ€ΠΈ Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ TextOut ΠΈ ExtTextOut.
VKΠšΠΎΠ΄Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… клавиш
WMБообщСния Windows
WSΠ‘Ρ‚ΠΈΠ»ΠΈ ΠΎΠΊΠ½Π°
WS_EXΠ Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ стили ΠΎΠΊΠ½Π°

ИмСна ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ИзобилиС Ρ‚ΠΈΠΏΠΎΠ² Π² прилоТСниях Windows создаСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ трудности для программиста. Π•ΠΌΡƒ приходится постоянно Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ соотвСтствии ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Для облСгчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ программистов рСкомСндуСтся для всСх ΠΈΠΌΠ΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСфиксы. Π­Ρ‚ΠΈ прСфиксы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ малСнькими Π±ΡƒΠΊΠ²Π°ΠΌΠΈ. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСфиксов, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Ρ… для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…:

ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΠ’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…
atmATOM
fBOOL
bBYTE
lpbBYTE FAR*
lpchchar FAR*
dlgprcDLGPROC
dwDWORD
lpdwDWORD FAR*
hacclHACCEL
hbmHBITMAP
hbrHBRUSH
hcurHCURSOR
hdcHDC
hdrvrHDRVR
hdwpHDWP
hfHFILE
hfontHFONT
hgdiobjHGDIOBJ
hglbHGLOBAL
hhookHHOOK
hiconHICON
hinstHINSTANCE
hlocHLOCAL
hmenuHMENU
hmfHMETAFILE
hmodHMODULE
hkprcHOOKPROC
hpalHPALETTE
hpenHPEN
hrgnHRGN
hrsrcHRSRC
hstrHSTR
htaskHTASK
hwndHWND
nint
lLONG
lParamLPARAM
lpbLPBYTE
lpszLPCSTR
lpnLPINT
lplLPLONG
lpszLPSTR
lpvLPVOID
lpwLPWORD
lResultLRESULT
npszNPSTR
npbPBYTE
lpptPOINT FAR*
lprcRECT FAR*
tmprcTIMERPROC
uUINT
wndenmprcWNDENUMPROC
wndprcWNDPROC
u ΠΈΠ»ΠΈ wWORD
wParamWPARAM

8.3. МодСли памяти

Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для MS-DOS, ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows Π²Π°ΠΌ слСдуСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ модСль памяти. Напомним основныС различия ΠΌΠ΅ΠΆΠ΄Ρƒ модСлями памяти.

МодСль памяти Tiny. Для этой ΠΌΠΎΠ΄Π΅Π»ΠΈ создаСтся ΠΎΠ΄ΠΈΠ½ сСгмСнт ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠ΄ΠΈΠ½ сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ суммарный Ρ€Π°Π·ΠΌΠ΅Ρ€ этих сСгмСнтов Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 64 ΠšΠ±Π°ΠΉΡ‚. Π­Ρ‚Π° модСль памяти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ создании Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ com. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту модСль памяти ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows.

МодСль памяти Small. Для этой ΠΌΠΎΠ΄Π΅Π»ΠΈ создаСтся ΠΎΠ΄ΠΈΠ½ сСгмСнт ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠ΄ΠΈΠ½ сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ суммарный Ρ€Π°Π·ΠΌΠ΅Ρ€ этих сСгмСнтов Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 128 ΠšΠ±Π°ΠΉΡ‚. Π Π°Π·ΠΌΠ΅Ρ€ массивов Π΄Π°Π½Π½Ρ‹Ρ…, созданных с использованиСм этой ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 64 ΠšΠ±Π°ΠΉΡ‚. ВсС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±Π»ΠΈΠΆΠ½ΠΈΠΌΠΈ. Π­Ρ‚Π° модСль памяти ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Π° для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² нашСй ΠΊΠ½ΠΈΠ³Π΅, созданы с использованиСм ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти Small.

МодСль памяти Compact. ΠŸΡ€ΠΈ использовании этой ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ сСгмСнт ΠΊΠΎΠ΄Π°, Π½ΠΎ нСсколько сСгмСнтов Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·ΠΌΠ΅Ρ€ массива Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 64 ΠšΠ±Π°ΠΉΡ‚. Для Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° смСщСния. Для адрСсации Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ 32-разрядныС адрСса.

МодСль памяти Huge. Π­Ρ‚Π° модСль памяти Π²ΠΎ всСм Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Large, Π½ΠΎ допускаСт Ρ€Π°Π±ΠΎΡ‚Ρƒ с массивами Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма Windows вСрсии 3.0 ΠΌΠΎΠ³Π»Π° Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ процСссора. Π’ этом случаС сСгмСнты Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ памяти Compact, Large ΠΈ Huge ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ зафиксированными Π² области Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… адрСсов. Π’ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ эта Π½Π΅ΠΏΡ€ΠΈΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π½Π΅ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ модСль памяти Small, Π»ΠΈΠ±ΠΎ Medium, Π»ΠΈΠ±ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ смСшанная модСль памяти.

БмСшанная модСль памяти. Для использования смСшанной ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… MS-DOS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, ΠΊΠ°ΠΊ _near ΠΈΠ»ΠΈ _far. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Windows Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ словами NEAR ΠΈΠ»ΠΈ FAR.

Π’ смСшанной ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΈΠΆΠ½ΠΈΠ΅ ΠΈ дальниС адрСса Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, добиваясь получСния ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ, строго говоря, Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ модСль памяти Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, всС Ρ€Π°Π²Π½ΠΎ Π²Π°ΠΌ придСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ смСшанной модСлью памяти. Π”Π°ΠΆΠ΅ ΠΏΡ€ΠΈ использовании ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти Small вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса Windows. ВсС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Windows вСрсии 3.1 описаны с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом _far ΠΈ располоТСны Π² сСгмСнтах, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π½Π΅ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° MS-DOS, созданная с использованиСм ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти Small, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π»ΡŒΠ½ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ всС Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ располоТСны Π² ΠΎΠ΄Π½ΠΎΠΌ сСгмСнтС ΠΊΠΎΠ΄Π°, Π° Π²Ρ‹Π·ΠΎΠ²Ρ‹ MS-DOS Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· прСрывания. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Windows, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ прСрывания для Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Они всСгда (ΠΏΡ€ΠΈ использовании любой ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти) Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ дальнСго Π²Ρ‹Π·ΠΎΠ²Π°.

8.4. ИспользованиС символов ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹

ΠŸΡ€ΠΈ использовании Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° тСкста, входящСго Π² состав систСм Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Borland C++ for Windows вСрсии 3.1 ΠΈΠ»ΠΈ Turbo C++ for Windows вСрсии 3.1, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ просмотра ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈΠ»ΠΈ тСкстовых строк, Π½Π°Π±Ρ€Π°Π½Π½Ρ‹Ρ… с использованиСм символов ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ срСдства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстом собствСнный ΡˆΡ€ΠΈΡ„Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ содСрТит символов ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· полоТСния, Π·Π°ΠΌΠ΅Π½ΠΈΠ² этот Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ символы ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹.

Для Π·Π°ΠΌΠ΅Π½Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню систСмы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ мСню «Options». Π’ мСню «Options» Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ строку «Environment». Π—Π°Ρ‚Π΅ΠΌ Π½Π° экранС появится Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ (!) мСню, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°Π΄ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ строку «Preferences. «. На экранС появится диалоговая панСль «Preferences» (рис. 8.1).

Include windows h c Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Include windows h c Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это

Рис. 8.1. Π’Ρ‹Π±ΠΎΡ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π°

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² мСню «Font» Π²Ρ‹Π±Ρ€Π°Π½ ΡˆΡ€ΠΈΡ„Ρ‚ BorlandTE, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅Ρ‚ символов ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ вмСсто этого ΡˆΡ€ΠΈΡ„Ρ‚Π° Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚ Courier Cyrillic, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅ΡΡ‚ΡŒ Π² русской вСрсии Windows ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устанавливаСтся практичСски всСми ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Windows, Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ CyrWin. К соТалСнию, вСрсия 3.1 систСмы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Borland C++ for Windows Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ TrueType. Π­Ρ‚ΠΎΡ‚ нСдостаток устранСн Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ вСрсии.

8.5. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ EasyWin

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° исходный тСкст прилоТСния Windows, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 8.1. НС Ρ‚ΠΎΡ€ΠΎΠΏΠΈΡ‚Π΅ΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠΏΠ°Π»Π° сюда случайно ΠΈΠ· ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° ΠΏΠΎ языку программирования Π‘ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‡Ρ‡ΠΈ. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΈ Π² самом Π΄Π΅Π»Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π² этом ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ссли запуститС exe-Ρ„Π°ΠΉΠ» этого прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅ΡΡ‚ΡŒ Π½Π° дискСтС (дискСта продаСтся вмСстС с ΠΊΠ½ΠΈΠ³ΠΎΠΉ). Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° рис. 8.2.

Листинг 8.1. Π€Π°ΠΉΠ» easywin\easywin1.cpp

Include windows h c Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Include windows h c Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это

Рис. 8.2. Окно прилоТСния EASYWIN1

Но Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° малСнькая Ρ‚ΠΎΠ½ΠΊΠΎΡΡ‚ΡŒ. Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows.

Если Π²Ρ‹ Π½Π΅ ΠΊΡƒΠΏΠΈΠ»ΠΈ дискСту, ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΡƒΡŽ ΠΊ ΠΊΠ½ΠΈΠ³Π΅, ΠΈ Π½Π°Π±Ρ€Π°Π»ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· мСню «Options» срСды Borland C++ for Windows строку «Application. «. На экранС появится диалоговая панСль «Application Options» (рис. 8.3).

Include windows h c Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Include windows h c Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это

Рис. 8.3. Диалоговая панСль «Application Options»

Π’ этой Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π²Π°ΠΌ Π½Π°Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ с надписью «Windows App».

Когда Π²Ρ‹ собираСтС Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ прилоТСния, компилятор Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°ΠΌ вмСсто Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinMain Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Windows, компилятор автоматичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ интСрфСйса EasyWin ΠΈ ΠΎΠ½ΠΎ становится ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Windows.

ЀактичСски интСрфСйс EasyWin ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ скрываСт ΠΎΡ‚ программиста интСрфСйс Windows, прСдоставляя Π΅ΠΌΡƒ Π²Π·Π°ΠΌΠ΅Π½ старый Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ интСрфСйс консольного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… EasyWin Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ всСми стандартными функциями Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ printf, gets, getch ΠΈ Ρ‚. Π΄. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gotoxy, wherex, wherey, clrscr ΠΈ clreol, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ входят Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Borland C++ для MS-DOS.

Аналогичный интСрфСйс прСдусмотрСн ΠΈ Π² систСмС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Microsoft Visual C++. Π­Ρ‚ΠΎΡ‚ интСрфСйс называСтся QuickWin. Он позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ практичСски Π»ΡŽΠ±Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ транслятора для MS-DOS, Π² Ρ‚ΠΎΠΌ числС графичСскиС. Π‘ΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого интСрфСйса ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² срСдС Windows Π² полноэкранном Ρ€Π΅ΠΆΠΈΠΌΠ΅, внСшнС Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡΡΡŒ ΠΎΡ‚ своСго Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° для MS-DOS.

Π—Π°Ρ‡Π΅ΠΌ всС это Π½ΡƒΠΆΠ½ΠΎ? ΠœΡ‹ Ρ‚Π°ΠΊ Π΄ΠΎΠ»Π³ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ прСимущСствах Windows, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ снова Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ ΠΊ MS-DOS?

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ, Π½ΠΎ Π½Π΅ совсСм.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ консольного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Π½ΠΎ этот Π²Ρ‹Π²ΠΎΠ΄ выполняСтся Π½Π΅ Π½Π° экран Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π΅ΠΎΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π°, Π° Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Windows. НашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС прСимущСства адрСсации Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ памяти, доступныС стандартному ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Windows. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса Windows.

Для Ρ‡Π΅Π³ΠΎ ΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ интСрфСйс EasyWin?

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, для пСрСноса старых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² срСду Windows. Если Ρƒ вас Π΅ΡΡ‚ΡŒ исходныС тСксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ MS-DOS, составлСнных Π½Π° языкС программирования Π‘ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ для Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ консольного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Π²Ρ‹ смоТСтС Π±Π΅Π· особого Ρ‚Ρ€ΡƒΠ΄Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· этих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ прилоТСния Windows. Для этого Π²Π°ΠΌ достаточно ΠΏΠ΅Ρ€Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² срСдС Borland C++ for Windows вСрсии 3.1, ΡƒΠΊΠ°Π·Π°Π² Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго Π²Π°ΠΌ Π½Π΅ придСтся ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ строчки исходного ΠΊΠΎΠ΄Π°.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, интСрфСйс EasyWin ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСстовых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ быстро ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ прилоТСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ прилоТСния TMETRICS, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для просмотра пространствСнных характСристик ΡˆΡ€ΠΈΡ„Ρ‚Π°, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π² контСкст отобраТСния (листинг 8.2).

Листинг 8.2. Π€Π°ΠΉΠ» easywin\easywin2.cpp

Π’ этом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ создаСм контСкст отобраТСния, вызывая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса Windows CreateDC. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΡƒΡŽ Π²Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GetTextMetrics, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π°. Названия ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ числСнныС значСния выводятся Π² ΠΎΠΊΠ½ΠΎ прилоТСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Print. Ѐункция Print ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ выглядит Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ просто благодаря ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf.

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° рис. 8.4.

Include windows h c Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Include windows h c Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это

Рис. 8.4. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния EASYWIN2

Π‘Π΅Π· ΠΌΠ°Π»Π΅ΠΉΡˆΠΈΡ… усилий с нашСй стороны Ρƒ ΠΎΠΊΠ½Π° появились Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ полосы просмотра, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΎΠΊΠ½ΠΎ «Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ консоли».

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π² этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса MessageBox.

МоТно, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ ΠΌΡ‹ ΠΈ поступили Π² нашСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ выполняСт Ρ‚Π°ΠΊΠΈΠ΅ Π½Π΅Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ пСрСзапуск ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows (листинг 8.3).

Листинг 8.3. Π€Π°ΠΉΠ» easywin\easywin3.cpp

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ содСрТит ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ для Windows Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ WinMain. Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса EasyWin вызываСтся функция _InitEasyWin, описанная Π² Ρ„Π°ΠΉΠ»Π°Ρ… stdio.h, io.h, iostream.h:

ПослС Π²Ρ‹Π·ΠΎΠ²Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ появляСтся ΠΎΠΊΠ½ΠΎ ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ консольного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GetWindowsDirectory, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ, содСрТащСму Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpszSysPath являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π±ΡƒΡ„Π΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ записан ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ Windows. Π”Π»ΠΈΠ½Π° Π±ΡƒΡ„Π΅Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 144 символов, ΠΎΠ½Π° задаСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ cbSysPath.

Ѐункция GetWindowsDirectory Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ строки записанной Π² Π±ΡƒΡ„Π΅Ρ€, Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ строку Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ нуля. Если Π²Ρ‹ Π½Π΅ прСдусмотрСли Π±ΡƒΡ„Π΅Ρ€ достаточного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π°. Π’ случаС ошибки возвращаСтся Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² строку ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ Windows, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΅Π³ΠΎ Π½Π° экранС ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мСню (рис. 8.5).

Include windows h c Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Include windows h c Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Include windows h c Ρ‡Ρ‚ΠΎ это

Рис. 8.5. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния EASYWIN3

Для пСрСзапуска Windows ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΌΡ‹ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса Windows с ΠΈΠΌΠ΅Π½Π΅ΠΌ ExitWindows:

Π‘Ρ‚Π°Ρ€ΡˆΠΈΠΉ Π±Π°ΠΉΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° dwReturnCode Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, младший Π±Π°ΠΉΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ MS-DOS ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Windows:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
EW_RESTARTWINDOWSΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ Windows
EW_REBOOTSYSTEMΠ—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Windows ΠΈ пСрСзапуск систСмы. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ допустим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Windows вСрсии 3.1 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Ρ€ΡˆΠΈΡ… вСрсий

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ wReserved Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ.

Ѐункция ExitWindowsExec ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ интСрфСйсС Windows вСрсии 3.1. Она Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Windows, пСрСдавая ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ MS-DOS. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Windows запускаСтся вновь. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ExitWindowsExec:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpszExe являСтся дальним ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° строку символов, Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ Π½ΡƒΠ»Π΅ΠΌ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΏΡƒΡ‚ΡŒ ΠΊ запускаСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ MS-DOS. Π§Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpszParams запускаСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ строку ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ NULL.

ΠŸΡ€ΠΈ нСвозмоТности Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Windows ΠΈΠ»ΠΈ Π² случаС появлСния Π΄Ρ€ΡƒΠ³ΠΈΡ… ошибок функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ FALSE.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ExitWindowsExec ΠΈ ExitWindows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… установки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для Windows (Π² инсталляторах). О Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС инсталляторы, ΠΌΡ‹ расскаТСм Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π³Π»Π°Π²Π΅ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ½ΠΈΠ³ сСрии «Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° систСмного программиста».

8.6. ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows

Π”ΠΎ появлСния Ρ‚Π°ΠΊΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows, ΠΊΠ°ΠΊ Borland C++ вСрсии 2.0, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° наличия Π΄Π²ΡƒΡ… ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². На ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π΅ отобраТался Ρ…ΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Ρ€ΡƒΠ³ΠΎΠΉ использовался для Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния.

Начиная с вСрсии 2.0 Π² систСмС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Borland C++ появился одноэкранный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Turbo Debugger for Windows, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° достаточно ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ экрана (хотя Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ достигнуты Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с двумя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ).

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ примСнСния ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. Он Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ вставляСтС Π² Ρ€Π°Π·Π½Ρ‹Π΅ мСста исходного тСкста прилоТСния Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MessageBox, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прослСТиваСтС Ρ…ΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если ΠΆΠ΅ Π²Π°ΠΌ трСбуСтся ΡƒΠ·Π½Π°Ρ‚ΡŒ содСрТимоС ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ wsprintf. Π’Π½Π°Ρ‡Π°Π»Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ wsprintf Π²Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π΅ вас Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ строку, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚Π΅ эту строку Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ MessageBox. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях достаточно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ Π²Ρ‹Π΄Π°Ρ‡Π΅ΠΉ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ сигнала, для Ρ‡Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ MessageBeep. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ MessageBox, wsprintf ΠΈ MessageBeep Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² прилоТСниях, описанных Π² нашСй ΠΊΠ½ΠΈΠ³Π΅.

Однако для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ слоТных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Ρ‹ Π½Π΅ смоТСтС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ Π²Ρ‹Π΄Π°Ρ‡Π΅ΠΉ диагностичСских сообщСний. Π’ΠΎΠ³Π΄Π°, Ссли Π²Ρ‹ программист, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния для Windows, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ одноэкранным ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ Turbo Debugger for Windows, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ поставки систСмы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Borland C++ for Windows вСрсии 3.1 ΠΈΠ»ΠΈ Turbo C++ for Windows.

Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠΌ EGA. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Ρƒ вас установлСн Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π›ΡƒΡ‡ΡˆΠ΅ всСго приобрСсти Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ SVGA с ускоритСлСм для Windows, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ графичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ, благодаря Ρ‡Π΅ΠΌΡƒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° изобраТСния сильно ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ. Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ порядка 100 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ². Π’ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΌ случаС Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ VGA, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² этом случаС Π²Π°ΠΌ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны Ρ€Π΅ΠΆΠΈΠΌΡ‹ с высоким Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ с большим количСством Ρ†Π²Π΅Ρ‚ΠΎΠ².

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π²Ρ‹ смоТСтС Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² пошаговом Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ трассировку, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ прСрывания, ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ состояниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, содСрТимоС стСка, Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Для запуска ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΈΠ· срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· мСню «Run» строку «Debugger». ΠŸΠ΅Ρ€Π΅Π΄ этим Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ прилоТСния. Для этого ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ мСню Π½Π°Π΄ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ строку «Debugger Arguments. «.

ПослС Π²Ρ‹Π±ΠΎΡ€Π° строки «Debugger» Π½Π° экранС появится сообщСниС ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, послС Ρ‡Π΅Π³ΠΎ экран ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ Π² тСкстовый Ρ€Π΅ΠΆΠΈΠΌ. К соТалСнию, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Turbo Debugger for Windows, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ со срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Borland C++ for Windows вСрсии 3.1, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² тСкстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅ (срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Borland C++ for Windows вСрсии 4.0 содСрТит, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Turbo Debugger for Windows, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ встроСн Π² срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Windows Π² графичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅). НСсмотря Π½Π° это, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π΅ способСн Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π²ΠΈΠ΄Π΅ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ EGA.

ПослС запуска ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π²Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚Π΅ Π² срСду, Π·Π½Π°ΠΊΠΎΠΌΡƒΡŽ Π²Π°ΠΌ ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ Turbo Debugger для MS-DOS. Π’ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ Turbo Debugger for Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ клавиши ΠΈ мСню, Ρ‡Ρ‚ΠΎ ΠΈ Π² вСрсии для MS-DOS. Из-Π·Π° нСдостатка мСста Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ Turbo Debugger. Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для MS-DOS, Π²Ρ‹ скорСС всСго ΡƒΠΆΠ΅ пользовались этим ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ограничимся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсколькими замСчаниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ касаСтся ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ функция ΠΎΠΊΠ½Π° WndProc.

Если функция ΠΎΠΊΠ½Π° располоТСна Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, для установки Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ просмотра этого Ρ„Π°ΠΉΠ»Π°. Для просмотра модуля, располоТСнного Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· мСню ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° «View» строку «Module». Π’Ρ‹ ΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ΡΡŒ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ имя модуля. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² нашСй ΠΊΠ½ΠΈΠ³Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΊΠ½Π° Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ wndproc.cpp, поэтому Π² появившСйся Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ строку «WNDPROC».

Π’Ρ‚ΠΎΡ€ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ относится ΠΊ просмотру экрана Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ прилоТСния.

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Turbo Debugger for Windows ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с вСрсиСй для MS-DOS. Π’ частности, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΈ ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ ΠΎΠΊΠ½Π° вашСго прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с глобальной ΠΈ локальной ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ динамичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ DLL ΠΈ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ содСрТимоС любого сСлСктора.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ строку «Add. «. На экранС появится диалоговая панСль «Add window or handle to watch». Π’ этой Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ установитС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ «Identify by» Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ «Window proc» ΠΈ Π² ΠΏΠΎΠ»Π΅ «Window identifier» Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΊΠ½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ wndproc. Π—Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ «OK».

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ строк «Remove» ΠΈ «Delete all» Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ»ΠΈ всС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Π΅ сообщСния.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ строку «Add. «. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ «Message class» Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ классы ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… (ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ…) сообщСний:

Класс ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
All MessagesВсС сообщСния
MouseБообщСния ΠΎΡ‚ ΠΌΡ‹ΡˆΠΈ
WindowБообщСния ΠΎΡ‚ систСмы управлСния ΠΎΠΊΠ½Π°ΠΌΠΈ (Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ WM_PAINT ΠΈ WM_CREATE)
InputБообщСния ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, систСмного мСню, полос просмотра ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π°
SystemБистСмныС сообщСния
InitializationБообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ
ClipboardБообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈ доступС ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π±ΡƒΡ„Π΅Ρ€Ρƒ ΠΎΠ±ΠΌΠ΅Π½Π° Clipboard ΠΈΠ»ΠΈ ΠΎΠΊΠ½Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния
DDEБообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ динамичСского ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСниями с использованиСм ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° DDE
Non-clientБообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Windows для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с внСшнСй (non-client) ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ ΠΎΠΊΠ½Π° (Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ WM_NCHITTEST ΠΈΠ»ΠΈ WM_NCCREATE)
OtherΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ сообщСния, Π½Π΅ попавшиС Π² пСрСчислСнныС Π²Ρ‹ΡˆΠ΅ классы, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ сообщСния интСрфСйса MDI
Single MessageΠ›ΡŽΠ±ΠΎΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ Π²Π°ΠΌΠΈ сообщСниС. БимволичСскоС имя ΠΈΠ»ΠΈ дСсятичный ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сообщСния слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ «Single Message Name»

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ «Action» Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ дСйствиС, выполняСмоС ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π΅ сообщСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ «Log», Ρ‡Ρ‚ΠΎ соотвСтствуСт ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ сообщСния ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π΅Π³ΠΎ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ «Windows Messages». Π Π΅ΠΆΠΈΠΌ «Break» позволяСт Π²Π°ΠΌ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ останов прилоТСния ΠΏΠΎ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны ΠΏΠΎΠ·ΠΆΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *