ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π“Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Windows

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ CreateWindowEx () со ΡΡ‚ΠΈΠ»Π΅ΠΌ WS_CHILD ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для раздСлСния клиСнтской области Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ области. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒΠ·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, систСмноС мСню, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ€Π°ΠΌΠΊΡƒ ΠΈ ΠΏΠΎΠ»ΠΎΡΡ‹ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ мСню. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° всСгда находятся Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… клиСнтской области Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π“Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Windows (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

1. ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π˜Π·ΡƒΡ‡ΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ Π² Windows. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° 32-Π±ΠΈΡ‚Π½ΠΎΠΌ ассСмблСрС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

2. ВСория

Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ windows

Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Windows Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная идСология. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ систСмы — ΠΎΠΊΠ½ΠΎ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ опрСдСляСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΎΠΊΠ½Π°. ГрафичСский ΠΎΠ±Ρ€Π°Π· ΠΎΠΊΠ½Π° Π½Π° ΡΠΊΡ€Π°Π½Π΅ дисплСя — ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ рабочая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ.

НСзависимо ΠΎΡ‚ ΡΠ²ΠΎΠ΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Windows идСнтифицируСтся описатСлСм ΠΈΠ»ΠΈ дСскриптором (handle). ДСскриптор — это ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ВсС Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ дСскриптор.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ программирования (API — Application Programming Interface) прСдставляСт собой ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Win32 API), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ), Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Microsoft Windows. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…. Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… — Ρ„Π°ΠΉΠ» windows. h, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТатся ссылки Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.

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

КаТдоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ создаСт, ΠΏΠΎ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ΄ΠΈΠ½ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Π›ΡŽΠ±ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows прСдставлСно Π½Π° ΡΠΊΡ€Π°Π½Π΅ дисплСя ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ стандартных элСмСнтов управлСния. Π Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΊΠΎΠ½:

ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ (overlapped window);

Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ (pop-up window);

Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ (Child window);

слоистыС (1ayered window) — особыС ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ эффСкт, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΊΠ½Π° ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ CreateWindowEx () со ΡΡ‚ΠΈΠ»Π΅ΠΌ WS_OVERLAPPEDWINDOW. Π­Ρ‚ΠΎΡ‚ ΡΡ‚ΠΈΠ»ΡŒ опрСдСляСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, систСмного мСню, ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠ½ΠΎΠΏΠΊΠΈ закрытия ΠΎΠΊΠ½Π° ΠΈ «Ρ‚олстой» Ρ€Π°ΠΌΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π°. ΠŸΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΎΠΊΠΎΠ½ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ мСню.

Π’ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΊΠ½Π° ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ CreateWindowEx () со ΡΡ‚ΠΈΠ»Π΅ΠΌ WS_POPUP ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΎΠΊΠΎΠ½ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ², ΠΎΠΊΠΎΠ½ сообщСний ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΊΠΎΠ½ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ использования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Π½Π΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈΠΌΠ΅Π»ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Ρ€Π°ΠΌΠΊΡƒ ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΠΎΠ΅ мСню, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈ Π΅Π³ΠΎ создании ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ стилСй WS_POPUPWINDOW | WS_CAPTION .

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ CreateWindowEx () со ΡΡ‚ΠΈΠ»Π΅ΠΌ WS_CHILD ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для раздСлСния клиСнтской области Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ области. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒΠ·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, систСмноС мСню, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ€Π°ΠΌΠΊΡƒ ΠΈ ΠΏΠΎΠ»ΠΎΡΡ‹ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ мСню. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° всСгда находятся Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… клиСнтской области Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Ρ‚. Π΅. ΠΈΡ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ всСгда ΠΎΡ‚ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π°Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ, Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ.

3 ОписаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

DefWindowProc

Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΎΠΊΠ½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сообщСния для любого ΠΎΠΊΠ½Π°. Π­Ρ‚Π° функция Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ сообщСниС обрабатываСтся.

LRESULT WINAPI DefWindowProc (

__in HWND HWND, // ДСскриптор ΠΎΠΊΠ½Π°, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ это сообщСниС.

__in UINT Msg, // Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅.

__in WPARAM WPARAM, // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠΈ. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° зависит ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Msg.

__in LPARAM LPARAM // Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠΈ. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° зависит ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Msg.

);

InvalidateRect

ДобавляСт ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΊ ΠΎΠ±Π»Π°ΡΡ‚ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ОбновлСниС Ρ€Π΅Π³ΠΈΠΎΠ½Π° прСдставляСт собой Ρ‡Π°ΡΡ‚ΡŒ клиСнтской области ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ пСрСрисованы.

BOOL InvalidateRect (

__in HWND HWND, // ДСскриптор ΠΎΠΊΠ½Π°, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ это сообщСниС.

__in CONST RECT * LPRECT, // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° RECT структуру, которая содСрТит клиСнтскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΊ ΠΎΠ±Π»Π°ΡΡ‚ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ€Π°Π²Π΅Π½ NULL, вся клиСнтская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊ ΠΎΠ±Π»Π°ΡΡ‚ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

__in BOOL bErase // Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Ρ„ΠΎΠ½ Π²Π½ΡƒΡ‚Ρ€ΠΈ области ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡƒΠ΄Π°Π»Π΅Π½ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ области ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ TRUE, Ρ„ΠΎΠ½ стираСтся ΠΏΡ€ΠΈ BeginPaint. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ FALSE, Ρ„ΠΎΠ½ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

);

CreateWindowEx

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΈΠ»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π΅ ΠΎΠΊΠ½ΠΎ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ стилСм ΠΎΠΊΠ½Π°.

HWND WINAPI CreateWindowEx (

__in DWORD dwExStyle, // Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ создаваСмого ΠΎΠΊΠ½Π°.

__in_opt LPCTSTR lpClassName, // Имя класса окна.

__in_opt LPCTSTR lpWindowName, // Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°.

__in DWORD dwStyle, // Π‘Ρ‚ΠΈΠ»ΡŒ создаваСмого ΠΎΠΊΠ½Π°.

__in Int Ρ…, // ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°.

__in Int Ρƒ, // ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°.

__in Int nWidth, // Π¨ΠΈΡ€ΠΈΠ½Π° ΠΎΠΊΠ½Π°.

__in Int nHeight, // Высота ΠΎΠΊΠ½Π°.

__in_opt HWND hWndParent, // Окно Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° создаваСмого ΠΎΠΊΠ½Π°.

__in_opt HMENU HMENU, // ДСскриптор мСню.

__in_opt HINSTANCE HINSTANCE, // ДСскриптор экзСмпляра модуля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ связан с ΠΎΠΊΠ½ΠΎΠΌ.

__in_opt LPVOID lpParam // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· структуры (lpCreateParams Ρ‡Π»Π΅Π½Π°), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ LPARAM сообщСния WM_CREATE. Π­Ρ‚ΠΎ сообщСниС посылаСтся Π² ΠΎΠΊΠ½ΠΎ, созданноС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ.

);

DispatchMessage

ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚ сообщСниС Π² ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ.

LRESULT WINAPI DispatchMessage (

__in сопзЬ MSG * LPMSG // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ сообщСниС.

);

ExitProcess

Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ процСсс ΠΈ Π²ΡΠ΅ Π΅Π³ΠΎ Π½ΠΈΡ‚ΠΈ.

VOID WINAPI ExitProcess (

__in UINT uExitCode // Код Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ°.

);

GetMessage

Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ сообщСниС ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°.

BOOL WINAPI GetMessage (

__out LPMSG LPMSG, // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° MSG структура, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ сообщСниС ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний ΠΏΠΎΡ‚ΠΎΠΊΠ°.

__in_opt HWND HWND, // ДСскриптор ΠΎΠΊΠ½Π°, сообщСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ восстановлСны. Окно Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ.

__in UINT wMsgFilterMin, // Π‘Π°ΠΌΡ‹ΠΉ малСнький Π½ΠΎΠΌΠ΅Ρ€ сообщСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

__in UINT wMsgFilterMax // Π‘Π°ΠΌΡ‹ΠΉ большой Π½ΠΎΠΌΠ΅Ρ€ сообщСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.

);

GetModuleHandle

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дСскриптор модуля для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ модуля.

HMODULE WINAPI GetModuleHandle (

__in_opt LPCTSTR lpModuleName // Имя Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ модуля (Π»ΠΈΠ±ΠΎ .DLL, Π»ΠΈΠ±ΠΎ .EXE-Ρ„Π°ΠΉΠ»).

);

LoadCursor

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ курсор.

LoadCursor HCURSOR WINAPI (

__in_opt HINSTANCE HINSTANCE, // ДСскриптор экзСмпляра модуля, исполняСмый Ρ„Π°ΠΉΠ» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТит курсор ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½.

__in LPCTSTR lpCursorName // Имя курсора для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

);

LoadIcon

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΈΠΊΠΎΠ½ΠΊΡƒ.

HICON WINAPI LoadIcon (

__in_opt HINSTANCE hInstance, // ДСскриптор экзСмпляра модуля, исполняСмый Ρ„Π°ΠΉΠ» содСрТит ΠΈΠΊΠΎΠ½ΠΊΡƒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ NULL, Ссли загруТаСтся стандартная ΠΈΠΊΠΎΠ½ΠΊΠ°.

__in LPCTSTR lpIconName // Имя ΠΈΠΊΠΎΠ½ΠΊΠΈ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

);

PostQuitMessage

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ систСмС, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΊ просит Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅.

VOID WINAPI PostQuitMessage (

__in int nExitCode // Код Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.

);

RegisterClass

РСгистрируСт класс ΠΎΠΊΠ½Π° для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ CreateWindow ΠΈΠ»ΠΈ CreateWindowEx Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ATOM WINAPI RegisterClass (

__in сопзЬ WNDCLASS * lpWndClass // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° WNDCLASS структуры.

);

ShowWindow

УстанавливаСт состояниС ΠΏΠΎΠΊΠ°Π·Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

BOOL WINAPI ShowWindow (

__in HWND HWND, // ДСскриптор ΠΎΠΊΠ½Π°.

__in Int nCmdShow // Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΎΠΊΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ.

);

TranslateMessage

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ virtual-key сообщСния Π² character сообщСния.

BOOL WINAPI TranslateMessage (

__in сопзЬ MSG * LPMSG // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° MSG структуру, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ сообщСниС.

);

UpdateWindow

ОбновлСниС клиСнтской области Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

BOOL UpdateWindow (

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

);

BeginPaint

Π“ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ для рисования.

HDC BeginPaint (

__in HWND hwnd,

__out LPPAINTSTRUCT lpPaint

);

EndPaint

Π—Π½Π°ΠΌΠ΅Π½ΡƒΠ΅Ρ‚ собой ΠΊΠΎΠ½Π΅Ρ† рисования Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅. Π­Ρ‚Π° функция Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° BeginPaint.

BOOL EndPaint (

__in HWND hWnd, // ДСскриптор ΠΎΠΊΠ½Π°.

__in const PAINTSTRUCT *lpPaint // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° PAINTSTRUCT структуру.

);

CreateSolidBrush

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΈΡΡ‚ΡŒ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ.

HBRUSH CreateSolidBrush (

__in COLORREF crColor // Π¦Π²Π΅Ρ‚ кисти.

);

GetSystemMetrics

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ систСмы ΠΈΠ»ΠΈ настройки ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ систСмы.

int WINAPI GetSystemMetrics (

__in int nIndex // БистСмныС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.

);

GetDC

Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ дСскриптор контСкста устройства (DC) для клиСнтской области Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ для всСго экрана.

HDC GetDC (

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

);

CreateCompatibleDC

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ контСкст устройства (DC), совмСстимый с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ устройством.

HDC CreateCompatibleDC (

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

);

SelectObject

Π’Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ контСкст устройства (DC).

HGDIOBJ SelectObject (

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

__in HGDIOBJ hgdiobj // ДСскриптор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½.

);

CreateCompatibleBitmap

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ растровоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, совмСстимоС с ΡƒΡΡ‚ройством, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ связано с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ контСкстом устройства.

HBITMAP CreateCompatibleBitmap (

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

__in int nWidth, // Растровая ΡˆΠΈΡ€ΠΈΠ½Π° Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ….

__in int nHeight // Растровая высота Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ….

);

PatBlt

Ѐункция рисуСт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ кистСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ контСкстС устройства.

BOOL PatBlt (

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

__in int nXLeft, // Π₯-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°, Π² Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… измСрСния, Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½.

__in int nYLeft, // Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°.

__in int nWidth, // Π¨ΠΈΡ€ΠΈΠ½Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

__in int nHeight, // Высота ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

__in DWORD dwRop // Код растровой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

);

BitBlt

Ѐункция выполняСт нСсколько ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ Π±Π»ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ Ρ†Π²Π΅Ρ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° пиксСлСй ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ DC-источника Π² ΠΊΠΎΠ½Ρ‚Скст устройства назначСния.

BOOL BitBlt (

__in HDC hdcDest, // ДСскриптор контСкста устройства.

__in int nXDest, // Π₯-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°, Π² Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… измСрСния, Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½.

__in int nYDest, // Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°.

__in int nWidth, // Π¨ΠΈΡ€ΠΈΠ½Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

__in int nHeight, // Высота ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

__in HDC hdcSrc, // ДСскриптор контСкста устройства источника.

__in int nXSrc, // Π₯-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°, Π² Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… измСрСния, Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° исходного ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

__in int nYSrc, // Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°.

__in DWORD dwRop // Код растровой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

);

ReleaseDC

Π­Ρ‚Π° функция освобоТдаСт контСкст устройства (DC), для использования Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ прилоТСниями.

int ReleaseDC (

HWND hWnd, // ДСскриптор ΠΎΠΊΠ½Π°, контСкст устройства ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ освобоТдСн.

HDC hDC // ДСскриптор, контСкста устройства ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ освобоТдСн.

);

DeleteObject

УдаляСт логичСскиС ΠΏΠ΅Ρ€ΡŒΡ, кисти, ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, растровыС изобраТСния, Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹ ΠΈΠ»ΠΈ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹, освобоТдая всС систСмныС рСсурсы, связанныС с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

BOOL DeleteObject (

__in HGDIOBJ hObject // ДСскриптор логичСского ΠΏΠ΅Ρ€Π°, кисти, ΡˆΡ€ΠΈΡ„Ρ‚Π°, растрового изобраТСния, Ρ€Π΅Π³ΠΈΠΎΠ½Π° ΠΈΠ»ΠΈ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹.

);

DeleteDC

Ѐункция удаляСт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ контСкст устройства (DC).

BOOL DeleteDC (

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

);

Rectangle

Ѐункция рисуСт ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ.

BOOL Rectangle (

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

__in int nLeftRect, // Π₯-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°, Π² Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… измСрСния, Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

__in int nTopRect, // Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°.

__in int nRightRect, // Π₯-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°, Π² Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… измСрСния, ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡƒΠ³Π»Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

__in int nBottomRect // Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°.

);

Ellipse

Ѐункция рисуСт эллипс.

BOOL Ellipse (

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

__in int nLeftRect, // Π₯-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°, Π² Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… измСрСния, Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

__in int nTopRect, // Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°.

__in int nRightRect, // Π₯-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°, Π² Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… измСрСния, ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡƒΠ³Π»Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

__in int nBottomRect // Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°.

);

Sleep

ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°.

VOID WINAPI Sleep (

__in DWORD dwMilliseconds // Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ приостановлСно, Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ….

);

MoveToEx

Ѐункция обновляСт Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ.

BOOL MoveToEx (

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

__in int X, // X-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Π½ΠΎΠ²ΠΎΠ³ΠΎ полоТСния.

__in int Y, // Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°.

__out LPPOINT lpPoint // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° POINT структуру, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

);

LineTo

Ѐункция рисуСт линию ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ.

WINGDIAPI BOOL WINAPI LineTo (

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

int nXEnd, // X-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΊΠΎΠ½Ρ†Π° Π»ΠΈΠ½ΠΈΠΈ.

int nYEnd // Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°.

);

4 Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ тСкст ΠΎΡ‚Π»Π°ΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

/*graph1.inc*/

WM_DESTROY equ2

WM_CREATE equ 1

WM_LBUTTONDOWN equ 201h

WM_RBUTTONDOWN equ 204h

VK_NUMLOCKequ90h

VK_SCROLLequ91h

VK_CAPITALequ14h

VK_HOME equ24h

VK_ESCAPEequ1Bh

VK_LEFT equ25h

VK_UP equ26h

VK_RIGHT equ 27h

VK_DOWN equ28h

WM_KEYDOWNequ100h

WM_PAINT equ 0FH

CS_VREDRAW equ 1h

CS_HREDRAW equ 2h

CS_GLOBALCLASS equ 4000h

WS_OVERLAPPEDWINDOW equ 000CF0000H

stylcl equ CS_HREDRAW + CS_VREDRAW + CS_GLOBALCLASS

IDI_WARNING equ 32 515

IDC_HAND equ32649

SW_SHOWNORMAL equ 1

EXTERN DefWindowProcA@16 :NEAR

EXTERN InvalidateRect@12 :NEAR

CreateWindowExA PROTO: DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD

DispatchMessageA PROTO: DWORD

ExitProcess PROTO: DWORD

GetMessageA PROTO: DWORD, :DWORD:DWORD, :DWORD

GetModuleHandleA PROTO: DWORD

LoadCursorA PROTO: DWORD, :DWORD

LoadIconA PROTO: DWORD, :DWORD

PostQuitMessage PROTO: DWORD

RegisterClassA PROTO: DWORD

ShowWindow PROTO: DWORD, :DWORD

TranslateMessage PROTO: DWORD

UpdateWindow PROTO: DWORD

BeginPaint PROTO: DWORD, :DWORD

EndPaint PROTO: DWORD, :DWORD

CreateSolidBrush PROTO: DWORD

GetSystemMetrics PROTO: DWORD

GetDC PROTO: DWORD

CreateCompatibleDC PROTO: DWORD

SelectObject PROTO: DWORD, :DWORD

CreateCompatibleBitmap PROTO: DWORD, :DWORD, :DWORD

PatBlt PROTO: DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD

BitBlt PROTO: DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD

ReleaseDC PROTO: DWORD, :DWORD

DeleteObject PROTO: DWORD

DeleteDC PROTO: DWORD

Rectangle PROTO: DWORD, :DWORD, :DWORD, :DWORD, :DWORD

EllipsePROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD

SleepPROTO :DWORD

MoveToExPROTO :DWORD, :DWORD, :DWORD, :DWORD

LineToPROTO :DWORD, :DWORD, :DWORD

MSGSTRUCT STRUC

MSHWND DD?

MSMESSAGE DD ?

MSWPARAM DD ?

MSLPARAM DD ?

MSTIME DD ?

MSPT DD ?

MSGSTRUCT ENDS

WNDCLASS STRUC

CLSSTYLE DD ?

CLSLPFNWNDPROCDD ?

CLSCBCLSEXTRA DD ?

CLSCBWNDEXTRA DD ?

CLSHINSTANCE DD ?

CLSHICON DD ?

CLSHCURSOR DD ?

CLSHBRBACKGROUND DD ?

MENNAME DD ?

CLSNAME DD ?

WNDCLASS ENDS

PAINTSTR STRUC

hdc DD 0

fErase DD 0

left DD 0

top DD 0

right DD 0

bottom DD 0

fRes DD 0

fIncUp DD 0

Reserv DB 32 dup (0)

PAINTSTR ENDS

RECT STRUC

L DD?

T DD ?

R DD ?

B DD ?

RECT ENDS

/*graph.asm*/

.386P

; плоская модСль

.MODEL FLAT, stdcall

include ./include/graph1.inc

; ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

includelib ./lib/user32.lib

includelib ./lib/kernel32.lib

includelib ./lib/gdi32.lib

;=====================================================; ====================== Π‘Π•Π“ΠœΠ•ΠΠ’ ДАННЫΠ₯

;======================================================

_DATA SEGMENT DWORD PUBLIC USE32 'DATA'

NEWHWND DWORD 0

MSG MSGSTRUCT

WC WNDCLASS

PNT PAINTSTR

HINST DWORD 0

TITLENAME BYTE 'Π“Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Windows. Π Ρ‹Π±Π°ΠΊΠΎΠ² ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚ΠΈΠ½.', 0

NAM BYTE 'CLASS32', 0

XM DWORD ?

YM DWORD ?

HDC DWORD ?

MEMDC DWORD ?

HBRUSHGREYDWORD ?

GREYDWORD0BEBEBEH

HBRUSHDGREYDWORD ?

DGREYDWORD0808080H

HBRUSHBLACKDWORD ?

BLACKDWORD0

HBRUSHGREENDWORD ?

GREENDWORD000FF00H

HBRUSHDGREENDWORD ?

DGREENDWORD008000H

HBRUSHREDDWORD ?

REDDWORD0FFH

HBRUSHWHITEDWORD ?

WHITEDWORD0FFFFFFH

HBRUSHBLUEDWORD ?

BLUEDWORDFFBF00H

HBRUSHDBLUEDWORD ?

DBLUEDWORD0800000H

HBRUSHYELLOWDWORD ?

YELLOWDWORD00FFFFH

PLBYTE 0; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ

PHOMEBYTE 0; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши HOME

PRIGHTBYTE 0; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши RIGTH

PLEFTBYTE 0; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши LEFT

PUPBYTE 1; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши UP

PDOWNBYTE 1; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши DOWN

; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для двиТСния автомобиля

; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΡƒΠ·ΠΎΠ²Π°

KUZ1DWORD300

KUZ2DWORD366

; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠ°Π±ΠΈΠ½Ρ‹

KAB1DWORD365

KAB2DWORD385

KAB3DWORD405

; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ ΠΈ Π·Π°Π΄Π½ΠΈΡ… Ρ„Π°Ρ€

PFARDWORD397

ZFAR1DWORD300

ZFAR2DWORD308

ZFAR3DWORD306

; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π·Π°Π΄Π½Π΅Π³ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅Π³ΠΎ колёс

ZKOL1DWORD323

ZKOL2DWORD343

PKOL1DWORD375

PKOL2DWORD395

; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для отрисовки Π΄Ρ‹ΠΌΠ°

dim0DWORD140

dim1DWORD115

dim2DWORD90

dim3DWORD65

dim4DWORD40

dim5DWORD15

dim6DWORD-10

PPERERISDWORD0; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ пСрСрисовки Π΄Ρ‹ΠΌΠ°

KRNDWORD100; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎΠΌΠ°

_DATA ENDS

;======================================================

;======================== Π‘Π•Π“ΠœΠ•ΠΠ’ ΠšΠžΠ”Π

;======================================================

_TEXT SEGMENT DWORD PUBLIC USE32 'CODE'

START:

; ————— ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ дСскриптор прилоТСния ————-;

INVOKE GetModuleHandleA, 0

MOV [HINST], EAX

REG_CLASS:

; ————— Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ структуру ΠΎΠΊΠ½Π° ————-;

MOV [WC.CLSSTYLE], stylcl; ΡΡ‚ΠΈΠ»ΡŒ

MOV [WC.CLSLPFNWNDPROC], OFFSET WNDPROC; ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний

MOV [WC.CLSCBCLSEXTRA], 0

MOV [WC.CLSCBWNDEXTRA], 0

MOV EAX, [HINST]

MOV [WC.CLSHINSTANCE], EAX

; ————— ΠΈΠΊΠΎΠ½ΠΊΠ° ΠΎΠΊΠ½Π° ————-;

INVOKE LoadIconA, 0, IDI_WARNING

MOV [WC.CLSHICON], EAX

; ————— курсор ΠΎΠΊΠ½Π° —————

INVOKE LoadCursorA, 0, IDC_HAND

MOV [WC.CLSHCURSOR], EAX

INVOKE CreateSolidBrush, 0FFFFFFh

MOV [WC.CLSHBRBACKGROUND], EAX

MOV DWORD PTR [WC.MENNAME], 0

MOV DWORD PTR [WC.CLSNAME], OFFSET NAM

INVOKE RegisterClassA, OFFSET WC

; ————— ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ зарСгистрированного класса —————

INVOKE CreateWindowExA, 0, OFFSET NAM, OFFSET TITLENAME, WS_OVERLAPPEDWINDOW, 250,200,640,480,0,0,[HINST], 0

; ————— ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ ————-;

CMP EAX, 0

JZ _ERR

MOV [NEWHWND], EAX; дСскриптор ΠΎΠΊΠ½Π°

INVOKE ShowWindow,[NEWHWND], SW_SHOWNORMAL; ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ созданноС ΠΎΠΊΠ½ΠΎ

INVOKE UpdateWindow,[NEWHWND]; ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π°

; ————— пСтля ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний ————-;

MSG_LOOP:

INVOKE GetMessageA, OFFSET MSG, 0,0,0

CMP AX, 0

JE END_LOOP

INVOKE TranslateMessage, OFFSET MSG

INVOKE DispatchMessageA, OFFSET MSG

JMP MSG_LOOP

END_LOOP:

; ————— Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ————-;

INVOKE ExitProcess,[MSG.MSWPARAM]

_ERR:

JMP END_LOOP

; ————— ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΠΊΠ½Π° ————-;

; ————— располоТСниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΡΡ‚Π΅ΠΊΠ΅ ————-;

; [EBP+014Н]; LPARAM

; [EBP+10H]; WPARAM

; [EBP+0CH]; MES

; [EBP+8]; HWND

;———————————————————————————————;

WNDPROC PROC

PUSH EBP

MOV EBP, ESP

PUSH EBX

PUSH ESI

PUSH EDI

CMP DWORD PTR [EBP+0CH], WM_PAINT; сообщСниС WM_PAINT — ΠΏΡ€ΠΈ рисовании ΠΎΠΊΠ½Π°

JE WMPAINT

CMP DWORD PTR [EBP+0CH], WM_DESTROY; сообщСниС WM_DESTROY — ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π°

JE WMDESTROY

CMP DWORD PTR [EBP+0CH], WM_CREATE; сообщСниС WM CREATE — ΠΏΡ€ΠΈ создании ΠΎΠΊΠ½Π°

JE WMCREATE

CMP DWORD PTR [EBP+0CH], WM_LBUTTONDOWN; сообщСниС WM_LBUTTONDOWN — ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ

JE LBUTTON

CMP DWORD PTR [EBP+0CH], WM_KEYDOWN; сообщСниС WM_KEYDOWN — ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиш

JE KEY_DOWN

JMP DEFWNDPROC

LBUTTON:

NOT PL; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ

KEY_DOWN:

CMP DWORD PTR [EBP+10H], VK_HOME

JNE HOME_NODOWN

NOT PHOME; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши HOME

HOME_NODOWN:

CMP DWORD PTR [EBP+10H], VK_UP

JNE UP_NODOWN

NOT PUP; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши UP

MOV PDOWN, 1; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши DOWN

UP_NODOWN:

CMP DWORD PTR [EBP+10H], VK_DOWN

JNE DOWN_NODOWN

NOT PDOWN; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши DOWN

MOV PUP, 1; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши UP

DOWN_NODOWN:

CMP DWORD PTR [EBP+10H], VK_RIGHT

JNE R_NODOWN

MOV PRIGHT, 1; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши RIGTH

MOV PUP, 1; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши UP

MOV PDOWN, 1; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши DOWN

R_NODOWN:

CMP DWORD PTR [EBP+10H], VK_LEFT

JNE L_NODOWN

MOV PLEFT, 1; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши LEFT

MOV PUP, 1; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши UP

MOV PDOWN, 1; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ наТатия клавиши DOWN

L_NODOWN:

;————— пСрСрисовка ΠΎΠΊΠ½Π° ————-;

PUSH 0

PUSH OFFSET RECT

PUSH DWORD PTR [EBP+08H]

CALL InvalidateRect@12

;——————————————————————————————;

WMPAINT:

INVOKE BeginPaint, DWORD PTR [EBP+08H], OFFSET PNT

MOV HDC, EAX; ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ контСкст (дСскриптор)

INVOKE CreateSolidBrush, 08B8B83h; Ρ„ΠΎΠ½

INVOKE SelectObject, MEMDC, EAX

; ————— Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ————-;

; 0F00021H РАВБОРУ — Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ

INVOKE PatBlt, MEMDC, 0,0,XM, YM, 0F00021H

; ————— ΠŸΠ•Π™Π—ΠΠ– —————

; ————— Π½ΠΎΡ‡ΡŒ ————-;

INVOKE SelectObject, MEMDC, HBRUSHDBLUE

INVOKE Rectangle, MEMDC, 0,0,640,276; Π½ΠΎΡ‡Π½ΠΎΠ΅ Π½Π΅Π±ΠΎ

INVOKE SelectObject, MEMDC, HBRUSHDGREEN

INVOKE Rectangle, MEMDC, 0,275,640,480; ночная Ρ‚Ρ€Π°Π²Π°

INVOKE SelectObject, MEMDC, HBRUSHBLACK

INVOKE Rectangle, MEMDC, 50,250,55,300; ствол Π΄Π΅Ρ€Π΅Π²Π°

INVOKE SelectObject, MEMDC, HBRUSHDGREEN

INVOKE Ellipse, MEMDC, 25,210,45,230; ночная ΠΊΡ€ΠΎΠ½Π°

INVOKE Ellipse, MEMDC, 27,210,77,280; ночная ΠΊΡ€ΠΎΠ½Π°

INVOKE Ellipse, MEMDC, 50,230,80,260; ночная ΠΊΡ€ΠΎΠ½Π°

; ————— Π·Π²Ρ‘Π·Π΄Ρ‹ —————

INVOKE SelectObject, MEMDC, HBRUSHWHITE

INVOKE Ellipse, MEMDC, 50,50,55,55

INVOKE Ellipse, MEMDC, 500,100,505,105

INVOKE Ellipse, MEMDC, 80,200,85,205

INVOKE Ellipse, MEMDC, 550,175,555,180

INVOKE Ellipse, MEMDC, 350,75,355,80

INVOKE Ellipse, MEMDC, 75,50,125,100; Π›ΡƒΠ½Π°

; ————— дСнь ————-;

CMP PL, 0

JNE LBUTTON_NO_DOWN

INVOKE SelectObject, MEMDC, HBRUSHBLUE

INVOKE Rectangle, MEMDC, 0,0,640,276; Π΄Π½Π΅Π²Π½ΠΎΠ΅ Π½Π΅Π±ΠΎ

INVOKE SelectObject, MEMDC, HBRUSHYELLOW

INVOKE Ellipse, MEMDC, 475,50,525,100; Π‘ΠΎΠ»Π½Ρ†Π΅

INVOKE SelectObject, MEMDC, HBRUSHGREEN

INVOKE Rectangle, MEMDC, 0,275,640,480; днСвная Ρ‚Ρ€Π°Π²Π°

INVOKE SelectObject, MEMDC, HBRUSHBLACK

INVOKE Rectangle, MEMDC, 50,250,55,300; ствол

INVOKE SelectObject, MEMDC, HBRUSHGREEN

INVOKE Ellipse, MEMDC, 25,210,45,230; днСвная ΠΊΡ€ΠΎΠ½Π°

INVOKE Ellipse, MEMDC, 27,210,77,280; днСвная ΠΊΡ€ΠΎΠ½Π°

INVOKE Ellipse, MEMDC, 50,230,80,260; днСвная ΠΊΡ€ΠΎΠ½Π°

LBUTTON_NO_DOWN:

; ————— Π”ΠžΠœ —————

INVOKE SelectObject, MEMDC, HBRUSHGREY

INVOKE Rectangle, MEMDC, 100,200,250,350; Π΄ΠΎΠΌ

INVOKE Rectangle, MEMDC, 60,340,101,350; ΡΡ‚ΡƒΠΏΠ΅Π½ΡŒΠΊΠ° 1

INVOKE Rectangle, MEMDC, 70,330,101,341; ΡΡ‚ΡƒΠΏΠ΅Π½ΡŒΠΊΠ° 2

INVOKE Rectangle, MEMDC, 80,320,101,331; ΡΡ‚ΡƒΠΏΠ΅Π½ΡŒΠΊΠ° 3

INVOKE SelectObject, MEMDC, HBRUSHDGREY

INVOKE Rectangle, MEMDC, 150,250,200,300; Ρ‚Ρ‘ΠΌΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ

; ————— Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ свСт ————-;

CMP PHOME, 0

JNE HOME_NO_DOWN

INVOKE SelectObject, MEMDC, HBRUSHYELLOW

INVOKE Rectangle, MEMDC, 150,250,200,300; свСтлоС ΠΎΠΊΠ½ΠΎ

HOME_NO_DOWN:

; ————— Ρ€Π°ΠΌΡ‹ ΠΎΠΊΠ½Π° ————-;

INVOKE MoveToEx, MEMDC, 150,265,0

INVOKE LineTo, MEMDC, 200,265

INVOKE MoveToEx, MEMDC, 175,265,0

INVOKE LineTo, MEMDC, 175,300

; ————— ΠΊΡ€Ρ‹ΡˆΠ° ————-;

INVOKE MoveToEx, MEMDC, 100,200,0; ΠΊΡ€Ρ‹ΡˆΠ°

INVOKE LineTo, MEMDC, 175,110

INVOKE LineTo, MEMDC, 250,200

INVOKE SelectObject, MEMDC, HBRUSHRED

MOV KRN, 100

metka3:

INVOKE MoveToEx, MEMDC, 175,110,0

INVOKE LineTo, MEMDC, KRN, 200

INC KRN

CMP KRN, 250

JNE metka3

; ————— Π΄Ρ‹ΠΌ ————-;

CMP PPERERIS, 0

JE ne_men1

INVOKE MoveToEx, MEMDC, 200, dim0,0

INVOKE LineTo, MEMDC, 225, dim1

INVOKE LineTo, MEMDC, 200, dim2

INVOKE LineTo, MEMDC, 225, dim3

INVOKE LineTo, MEMDC, 200, dim4

INVOKE LineTo, MEMDC, 225, dim5

INVOKE LineTo, MEMDC, 200, dim6

JMP MET

ne_men1:

INVOKE MoveToEx, MEMDC, 225, dim0,0

INVOKE LineTo, MEMDC, 200, dim1

INVOKE LineTo, MEMDC, 225, dim2

INVOKE LineTo, MEMDC, 200, dim3

INVOKE LineTo, MEMDC, 225, dim4

INVOKE LineTo, MEMDC, 200, dim5

INVOKE LineTo, MEMDC, 225, dim6

MET:

; ————— ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π΄Ρ‹ΠΌΠ° ————-;

DEC dim0

DEC dim1

DEC dim2

DEC dim3

DEC dim4

DEC dim5

DEC dim6

CMP dim5,-10; Π²Ρ‹Ρ…ΠΎΠ΄ Π΄Ρ‹ΠΌΠ° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ экрана

JNE ne_vishel

NOT PPERERIS

MOV dim0,140

MOV dim1,115

MOV dim2,90

MOV dim3,65

MOV dim4,40

MOV dim5,15

MOV dim6,-10

ne_vishel:

; ————— Ρ‚Ρ€ΡƒΠ±Π° ————-;

INVOKE SelectObject, MEMDC, HBRUSHBLACK

INVOKE Rectangle, MEMDC, 198,115,227,190

; ————— Π”Π’Π˜Π–Π•ΠΠ˜Π• ΠΠ’Π’ΠžΠœΠžΠ‘Π˜Π›Π― ————-;

; ————— Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ автомобиля Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ Π²ΠΏΡ€Π°Π²ΠΎ ————-;

CMP PUP, 1

JNE @2

; ————— Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΏΡ€Π°Π²ΠΎ ————-;

CMP PRIGHT, 1

JNE metka1

@2:

; ————— ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ————-;

ADD KUZ1,2

ADD KUZ2,2

ADD KAB1,2

ADD KAB2,2

ADD KAB3,2

ADD PFAR, 2

ADD ZFAR1,2

ADD ZFAR2,2

ADD ZFAR3,2

ADD ZKOL1,2

ADD ZKOL2,2

ADD PKOL1,2

ADD PKOL2,2

MOV PRIGHT, 0

JMP @7

metka1:

; ————— Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ автомобиля Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ Π²Π»Π΅Π²ΠΎ ————-;

CMP PDOWN, 1

JNE @6

; ————— Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π»Π΅Π²ΠΎ ————-;

CMP PLEFT, 1

JNE metka2

@6:

; ————— ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ————-;

SUB KUZ1,2

SUB KUZ2,2

SUB KAB1,2

SUB KAB2,2

SUB KAB3,2

SUB PFAR, 2

SUB ZFAR1,2

SUB ZFAR2,2

SUB ZFAR3,2

SUB ZKOL1,2

SUB ZKOL2,2

SUB PKOL1,2

SUB PKOL2,2

metka2:

@7:

; ————— ΠΠ’Π’ΠžΠœΠžΠ‘Π˜Π›Π¬ ————-;

INVOKE SelectObject, MEMDC, HBRUSHDGREY

INVOKE Rectangle, MEMDC, KUZ1,300,KUZ2,350; ΠΊΡƒΠ·ΠΎΠ²

INVOKE SelectObject, MEMDC, HBRUSHBLUE

INVOKE Rectangle, MEMDC, KAB1,310,KAB2,331; ΠΊΠ°Π±ΠΈΠ½Π°

INVOKE Rectangle, MEMDC, KAB1,330,KAB3,350; ΠΊΠ°Π±ΠΈΠ½Π°

INVOKE SelectObject, MEMDC, HBRUSHWHITE

ADD KAB1,2

SUB KAB2,2

INVOKE Rectangle, MEMDC, KAB1,312,KAB2,329; стСкло

ADD KAB2,2

SUB KAB1,2

INVOKE SelectObject, MEMDC, HBRUSHRED

INVOKE Rectangle, MEMDC, ZFAR1,332,ZFAR2,343; задняя Ρ„Π°Ρ€Π°

INVOKE SelectObject, MEMDC, HBRUSHWHITE

INVOKE Rectangle, MEMDC, PFAR, 332, KAB3,338; пСрСдняя Ρ„Π°Ρ€Π°

; ————— Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π½Π΅Π³ΠΎ Π³Π°Π±Π°Ρ€ΠΈΡ‚Π° ————-;

CMP PDOWN, 1

JNE @8

CMP PLEFT, 1

JNE ne_garit

@8:

INVOKE SelectObject, MEMDC, HBRUSHWHITE

INVOKE Rectangle, MEMDC, ZFAR1,334,ZFAR3,341; Π·Π°Π΄Π½ΠΈΠΉ Π³Π°Π±Π°Ρ€ΠΈΡ‚

MOV PLEFT, 0

ne_garit:

INVOKE SelectObject, MEMDC, HBRUSHBLACK

INVOKE Ellipse, MEMDC, ZKOL1,340,ZKOL2,360; заднСС колСсо

INVOKE Ellipse, MEMDC, PKOL1,340,PKOL2,360; ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅Π΅ колСсо

INVOKE SelectObject, MEMDC, HBRUSHGREY

; ————— ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ колСса для рисования дисков ————-;

ADD ZKOL1,3

SUB ZKOL2,3

ADD PKOL1,3

SUB PKOL2,3

INVOKE Ellipse, MEMDC, ZKOL1,343,ZKOL2,357; задний диск

INVOKE Ellipse, MEMDC, PKOL1,343,PKOL2,357; ΠΏΠ΅Ρ€Π΅Π΄Π½ΠΈΠΉ диск

; ————— восстановлСниС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ колСса ————-;

ADD ZKOL2,3

SUB ZKOL1,3

ADD PKOL2,3

SUB PKOL1,3

; ————— Π²Ρ‹Ρ…ΠΎΠ΄ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΏΡ€Π°Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΠΊΠ½Π° ————-;

CMP KUZ1,640

JNE ne_vishla

; ——— Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π»Π΅Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΠΊΠ½Π° —;

MOV KUZ1, 300−410; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

MOV KUZ2, 366−410; ΠΊΡƒΠ·ΠΎΠ²Π°

MOV KAB1, 365−410; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

MOV KAB2, 385−410; ΠΊΠ°Π±ΠΈΠ½Ρ‹

MOV KAB3, 405−410; ΠΊΠ°Π±ΠΈΠ½Ρ‹

MOV PFAR, 397−410; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ Ρ„Π°Ρ€Ρ‹

MOV ZFAR1, 300−410; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

MOV ZFAR2, 308−410; Π·Π°Π΄Π½Π΅ΠΉ Ρ„Π°Ρ€Ρ‹

MOV ZFAR3, 306−410; Π·Π°Π΄Π½Π΅Π³ΠΎ Π³Π°Π±Π°Ρ€ΠΈΡ‚Π°

MOV ZKOL1, 323−410; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

MOV ZKOL2, 343−410; Π·Π°Π΄Π½Π΅Π³ΠΎ колСса

MOV PKOL1, 375−410; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

MOV PKOL2, 395−410; ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅Π³ΠΎ колСса

JMP @1

ne_vishla:

; ————— Π²Ρ‹Ρ…ΠΎΠ΄ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π»Π΅Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΠΊΠ½Π° ————-;

CMP KUZ1,-110

JNE ne_vishla1

; ——- Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΠΊΠ½Π° —;

MOV KUZ1, 300+340; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

MOV KUZ2, 366+340; ΠΊΡƒΠ·ΠΎΠ²Π°

MOV KAB1, 365+340; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

MOV KAB2, 385+340; ΠΊΠ°Π±ΠΈΠ½Ρ‹

MOV KAB3, 405+340; ΠΊΠ°Π±ΠΈΠ½Ρ‹

MOV PFAR, 397+340; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΉ Ρ„Π°Ρ€Ρ‹

MOV ZFAR1, 300+340; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

MOV ZFAR2, 308+340; Π·Π°Π΄Π½Π΅ΠΉ Ρ„Π°Ρ€Ρ‹

MOV ZFAR3, 306+340; Π·Π°Π΄Π½Π΅Π³ΠΎ Π³Π°Π±Π°Ρ€ΠΈΡ‚Π°

MOV ZKOL1, 323+340; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

MOV ZKOL2, 343+340; заднСго колСса

MOV PKOL1, 375+340; ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹

MOV PKOL2, 395+340; ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅Π³ΠΎ колСса

ne_vishla1:

@1:

;————— пСрСрисовка ΠΎΠΊΠ½Π° ————-;

INVOKE Sleep, 23

PUSH 0

PUSH OFFSET RECT

PUSH DWORD PTR [EBP+08H]

CALL InvalidateRect@12

; ————— ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ ————-;

INVOKE BitBlt, HDC, 0,0,XM, YM, MEMDC, 0,0,0CC0020h

; ————— Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ контСкст ΠΎΠΊΠ½Π° ————-;

INVOKE EndPaint, DWORD PTR [EBP+08H], OFFSET PNT

MOV EAX, 0

JMP FINISH

;———————————————————————————————;

WMCREATE:

; ————— Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ экрана ————-;

INVOKE GetSystemMetrics, 0

MOV XM, EAX

INVOKE GetSystemMetrics, 1

MOV YM, EAX

; ————— ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ контСкст ΠΎΠΊΠ½Π° ————-;

INVOKE GetDC, DWORD PTR [EBP+08H]

MOV HDC, EAX

; ————— ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ совмСстимый с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ контСкст ————-;

INVOKE CreateCompatibleDC, EAX

MOV MEMDC, EAX

; ——- ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ растровоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, совмСстимоС с hdc ——-;

INVOKE CreateCompatibleBitmap, HDC, XM, YM

; ————— Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ растровоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ контСкстС ————-;

INVOKE SelectObject, MEMDC, EAX

; ————— ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ кисти ————-;

INVOKE CreateSolidBrush, GREY

MOV HBRUSHGREY, EAX

INVOKE CreateSolidBrush, BLACK

MOV HBRUSHBLACK, EAX

INVOKE CreateSolidBrush, GREEN

MOV HBRUSHGREEN, EAX

INVOKE CreateSolidBrush, RED

MOV HBRUSHRED, EAX

INVOKE CreateSolidBrush, WHITE

MOV HBRUSHWHITE, EAX

INVOKE CreateSolidBrush, BLUE

MOV HBRUSHBLUE, EAX

INVOKE CreateSolidBrush, YELLOW

MOV HBRUSHYELLOW, EAX

INVOKE CreateSolidBrush, DGREY

MOV HBRUSHDGREY, EAX

INVOKE CreateSolidBrush, DBLUE

MOV HBRUSHDBLUE, EAX

INVOKE CreateSolidBrush, DGREEN

MOV HBRUSHDGREEN, EAX

; ————— ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ контСкст ————-;

INVOKE ReleaseDC, DWORD PTR [EBP+08H], HDC

MOV EAX, 0

JMP FINISH

; ———————————————————————————————;

DEFWNDPROC:

PUSH DWORD PTR [EBP+14H]

PUSH DWORD PTR [EBP+10H]

PUSH DWORD PTR [EBP+0CH]

PUSH DWORD PTR [EBP+08H]

CALL DefWindowProcA@16

JMP FINISH

; ———————————————————————————————;

WMDESTROY:

; ————— ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ кисти ————-;

INVOKE DeleteDC, HBRUSHGREY

INVOKE DeleteDC, HBRUSHBLACK

INVOKE DeleteDC, HBRUSHGREEN

INVOKE DeleteDC, HBRUSHRED

INVOKE DeleteDC, HBRUSHWHITE

INVOKE DeleteDC, HBRUSHBLUE

INVOKE DeleteDC, HBRUSHDBLUE

INVOKE DeleteDC, HBRUSHYELLOW

INVOKE DeleteDC, HBRUSHDGREY

INVOKE DeleteDC, HBRUSHDGREEN

; ————— ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ————-;

INVOKE DeleteDC, MEMDC

INVOKE PostQuitMessage, 0

MOV EAX, 0

;———————————————————————————————;

FINISH:

POP EDI

POP ESI

POP EBX

POP EBP

RET 16

WNDPROC ENDP

_TEXT ENDS

END START

5. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’Ρ‹Π²ΠΎΠ΄

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»Π° ΠΈΠ·ΡƒΡ‡Π΅Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Windows, написана ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° 32-Π±ΠΈΡ‚Π½ΠΎΠΌ ассСмблСрС.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ