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

Π Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ Π² условиях WinAPI

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

Π§Ρ‚ΠΎ касаСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows, Ρ‚ΠΎ Π·Π΄Π΅ΡΡŒ, ΠΊΠ°ΠΊ Π½ΠΈ ΡΡ‚Ρ€Π°Π½Π½ΠΎ это ΠΏΡ€ΠΎΠ·Π²ΡƒΡ‡ΠΈΡ‚ для ΡƒΡ…Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… программистов, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»Π΅Π³Ρ‡Π΅, Ρ‡Π΅ΠΌ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС MS DOS. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ Π² Windows Π½ΠΈΡ‡ΡƒΡ‚ΡŒ Π½Π΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° Π‘ΠΈ, ΠΈ ΠΏΡ€ΠΈ этом получаСтся ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ, эффСктивный ΠΈ Π±Ρ‹ΡΡ‚Ρ€Ρ‹ΠΉ ΠΊΠΎΠ΄. Работая с ΡΠ·Ρ‹ΠΊΠ°ΠΌΠΈ высокого уровня, ΠΌΡ‹ Ρ‚СряСм ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ алгоритмичСскиС… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ Π² условиях WinAPI (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ ВСорСтичСскиС свСдСния ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°Ρ… Windows

ОписаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… WinAPI Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π’Ρ‹Π²ΠΎΠ΄Ρ‹ Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм написаны прСимущСствСнно Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ ассСмблСра. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму Windows нагляднСС ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠΌΠ΅Π½Π½ΠΎ этот язык.

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

Π§Ρ‚ΠΎ касаСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows, Ρ‚ΠΎ Π·Π΄Π΅ΡΡŒ, ΠΊΠ°ΠΊ Π½ΠΈ ΡΡ‚Ρ€Π°Π½Π½ΠΎ это ΠΏΡ€ΠΎΠ·Π²ΡƒΡ‡ΠΈΡ‚ для ΡƒΡ…Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… программистов, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»Π΅Π³Ρ‡Π΅, Ρ‡Π΅ΠΌ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС MS DOS. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ Π² Windows Π½ΠΈΡ‡ΡƒΡ‚ΡŒ Π½Π΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° Π‘ΠΈ, ΠΈ ΠΏΡ€ΠΈ этом получаСтся ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ, эффСктивный ΠΈ Π±Ρ‹ΡΡ‚Ρ€Ρ‹ΠΉ ΠΊΠΎΠ΄. Работая с ΡΠ·Ρ‹ΠΊΠ°ΠΌΠΈ высокого уровня, ΠΌΡ‹ Ρ‚СряСм ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ алгоритмичСскиС Π½Π°Π²Ρ‹ΠΊΠΈ. И ΠΏΡ€ΠΎΡ†Π΅ΡΡ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС дальшС. Волько Ρ€Π°Π΄ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ своСго ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ уровня стоит Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅.

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ практичСских Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ Π² ΡƒΡΠ»ΠΎΠ²ΠΈΡΡ… WinAPI, ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ 32-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ программирования Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ ΠΏΠΎΠ΄ Windows ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ усвоСниС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ.

ВСорСтичСскиС свСдСния ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°Ρ… Windows

Π’Π°ΠΉΠΌΠ΅Ρ€ Π² Windows являСтся устройством Π²Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСриодичСски ΠΈΠ·Π²Π΅Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ истСк Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Windows посылаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ пСриодичСскиС сообщСния WM_TIMER, сигнализируя ΠΎΠ± ΠΈΡΡ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π‘Π½Π°Ρ‡Π°Π»Π° Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Windows ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ устройством Π²Π²ΠΎΠ΄Π°, Ρ‡Π΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ ΠΌΡ‹ΡˆΡŒ, ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Π²Π΅Ρ€Π½ΠΎ для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows. Но Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½, Ρ‡Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Π΄ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ врСмя, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Windows clock, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ‡. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ примСнСния Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π² Windows, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹.

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

Win32 API содСрТит ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для измСрСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для создания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² — устройств, ΠΈΠ·Π²Π΅Ρ‰Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΡΡ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ примСнСния этих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… срСдств Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ измСрСния.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ многозадачная опСрационная систСма Windows Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся систСмой Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, поэтому любой Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π² Windows Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ фактичСской точности отсчСта Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°. Π’Π΅Π΄ΡŒ Π² Π»ΡŽΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ систСма ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ вашСго прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ (простой, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ, Ρ‡Π°Ρ‰Π΅ всСго длится ΠΎΡ‚ 1 Π΄ΠΎ 30 мс). Π’Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Ρ‚Π΅ΠΌ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ мСньшС рассматриваСмый Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΈ Ρ‡Π΅ΠΌ мСньшС Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с Π²Π°ΡˆΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ экспСримСнты, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Windows обСспСчиваСт Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡƒΡŽ Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ отсчСта Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡.

Π’Π°ΠΉΠΌΠ΅Ρ€ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠΎΡ‰Π½Ρ‹Ρ… инструмСнтов, прСдоставляСмых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ самыС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’ΠΎΡ‚ Ρ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°:

ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: сСкундомСр, часы ΠΈ Ρ‚. Π΄. ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ пСриодичности Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π΅ сообщСния врСмя ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ, Π²Ρ‹Π·Π²Π°Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ получСния систСмного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’Π°ΠΉΠΌΠ΅Ρ€ — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² осущСствлСния многозадачности. МоТно ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сразу нСсколько Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пСриодичСски Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎ ΠΎΠ΄Π½Π°, Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³Π°Ρ функция. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ сказано Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΡΠΊΡ€Π°Π½ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

АвтосохранСниС — функция особСнно полСзная для Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ².

Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΠΏΠ° измСнСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΡΠΊΡ€Π°Π½Π΅.

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ — ΠΏΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π΅ сообщСния ΠΎΡ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° обновляСтся графичСскоС содСрТимоС экрана ΠΈΠ»ΠΈ ΠΎΠΊΠ½Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ эффСкт ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ часто ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ…. НапримСр, Ссли ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΄Π΅Π»Π°Π΅Ρ‚ запрос сСрвСру ΠΈ Ρ‚ΠΎΡ‚ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ считаСт, Ρ‡Ρ‚ΠΎ сСрвСр Π½Π΅ Π΄ΠΎΡΡ‚ΡƒΠΏΠ΅Π½. БСгодня клиСнтскиС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, со ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎΠΌ сСрвСров ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Если Π±Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ядра «Ρ‚Π°ΠΉΠΌΠ΅Ρ€» создавался для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы снизилась Π±Ρ‹ вСсьма Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ СдинствСнный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости просто ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ врСмя Π΅Π³ΠΎ срабатывания.

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎΠ΅ отслСТиваниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΈ Π΅Π³ΠΎ пСрСнастройка довольно ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ лишь Π² Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… прилоТСниях.

Π›ΡŽΠ±ΠΎΠΉ, маломальски ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ Windows-программист Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ поинтСрСсуСтся различиями ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² User (настраиваСмых Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SetTimer). Π’Π°ΠΊ Π²ΠΎΡ‚, Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΡΠ΄Ρ€Π΅, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ тяТСловСсны, ΠΊΠ°ΠΊ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ User. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅. Π’Π°ΠΉΠΌΠ΅Ρ€Ρ‹ User Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ сообщСния WM_TIMER, посылаСмыС Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Π²Π°Π» SetTimer (Π² ΡΠ»ΡƒΡ‡Π°Π΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² с ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связью) ΠΈΠ»ΠΈ создал ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ (Π² ΡΠ»ΡƒΡ‡Π°Π΅ ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ²). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° User увСдомляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ. А ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ позволяСт ΠΆΠ΄Π°Ρ‚ΡŒ Π»ΡŽΠ±ΠΎΠΌΡƒ числу ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΈ, Ссли это Ρ‚Π°ΠΉΠΌΠ΅Ρ€ со ΡΠ±Ρ€ΠΎΡΠΎΠΌ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΏΡ€ΠΈ Π΅Π³ΠΎ освобоТдСнии ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ±ΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ сразу нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Если Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π’Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, связанныС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом, Ρ‚ΠΎ, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ User, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² оТидания Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сообщСний, Π½ΠΎ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ядра. НаконСц, Π² ΡΠ»ΡƒΡ‡Π°Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² Π’Ρ‹ Ρ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΉ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ увСдомлСния ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΠΈΡΡ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°. БообщСния WM_TIMER всСгда ΠΈΠΌΠ΅ΡŽΡ‚ наимСньший ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ся, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… сообщСний. Но ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ обрабатываСтся Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±ΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ядра: Ссли ΠΎΠ½ ΡΡ€Π°Π±ΠΎΡ‚Π°Π», ΠΆΠ΄ΡƒΡ‰ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ пробуТдаСтся. Π£ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ. Если систСма посылаСт сообщСниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ сообщСниС Π΅Ρ‰Π΅ стоит Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Ρ‚ΠΎ ΡΠΈΡΡ‚Π΅ΠΌΠ° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ эти Π΄Π²Π° сообщСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, «Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ простой» Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Ρƒ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ подряд Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сообщСний Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°.

Π’Π°ΠΉΠΌΠ΅Ρ€ Π² Windows являСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простым Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, встроСнной Π² Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΡƒΡ€Ρƒ PC ΠΈ ROM BIOS. ROM BIOS ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ микросхСму Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «Ρ‚ΠΈΠΊΠΎΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°». Π­Ρ‚ΠΈ прСрывания Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 54.925 миллисСкунды ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 18,2 Ρ€Π°Π·Π° Π² ΡΠ΅ΠΊΡƒΠ½Π΄Ρƒ. НСкоторыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС для MS-DOS, сами ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ это Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ часов ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ².

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, сдСланных для Windows, Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ся. Windows сама ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ прСрывания ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡ… Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π³Π΄Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ установлСн Ρ‚Π°ΠΉΠΌΠ΅Ρ€, Windows ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Π½Π° 1 значСния счСтчика, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetTimer. Когда это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ становится Ρ€Π°Π²Π½Ρ‹ΠΌ 0, Windows ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ сообщСниС WM_TIMER Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ прилоТСния ΠΈ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ прилоТСния Windows ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ сообщСния WM_TIMER ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ бСспокоится ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ «ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°» Π²Π½Π΅Π·Π°ΠΏΠ½Ρ‹ΠΌ сообщСниСм WM_TIMER. Π’ ΡΡ‚ΠΎΠΌ смыслС Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ ΠΈ ΠΌΡ‹ΡˆΡŒ: Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ асинхронныС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ прСрывания, Π° Windows ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ эти прСрывания Π² Ρ€Π΅Π³ΡƒΠ»ΡΡ€Π½Ρ‹Π΅, структурированныС, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния.

Π’Π°ΠΉΠΌΠ΅Ρ€ Π² Windows ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ 54.925 миллисСкунды, Ρ‡Ρ‚ΠΎ ΠΈ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ PC. ΠžΡ‚ΡΡŽΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π΄Π²Π° Π²Π°ΠΆΠ½Ρ‹Ρ… Π²Ρ‹Π²ΠΎΠ΄Π°:

1. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows ΠΏΡ€ΠΈ использовании простого Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ сообщСния WM_TIMER Π² Ρ‚Π΅ΠΌΠΏΠ΅, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅ΠΌ 18,2 Ρ€Π°Π·Π° Π² ΡΠ΅ΠΊΡƒΠ½Π΄Ρƒ.

2. Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π·Π°Π΄Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetTimer всСгда округляСтся Π²Π½ΠΈΠ· Π΄ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа ΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ частотС срабатываний Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°. НапримСр, ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π² 1000 миллисСкунд, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π° 54.925 миллисСкунды Ρ€Π°Π²Π΅Π½ 18.207 срабатываниям Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΊΡ€ΡƒΠ³Π»ΡΡŽΡ‚ΡΡ Π²Π½ΠΈΠ· Π΄ΠΎ 18 срабатываний, Ρ‡Ρ‚ΠΎ фактичСски составляСт ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π² 989, Π° Π½Π΅ 1000 миллисСкунд. Для ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ², ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… 55 миллисСкунд, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ срабатываниС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎ сообщСниС WM_TIMER.

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ΄ DOS, написанныС для IBM PC ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ срабатывания Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, пСрСхватывая Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅. Когда происходит Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ приостанавливаСтся ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ. Когда ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ возвращаСтся ΠΏΡ€Π΅Ρ€Π²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ прСрывания ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ ΠΌΡ‹ΡˆΠΈ, Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΈΠ½ΠΎΠ³Π΄Π° называСтся асинхронным ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ происходит случайно ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π₯отя Windows Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ асинхронныС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π½Ρ‹Π΅ прСрывания, сообщСния WM_TIMER, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Windows посылаСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ся асинхронными. БообщСния Windows ставятся Π² ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ сообщСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ Π·Π°Π΄Π°Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetTimer 1000 миллисСкунд, Ρ‚ΠΎ Π²Π°ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ируСтся ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сообщСния WM_TIMER ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ (ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅) ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 989 миллисСкунд. Если вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ занято большС, Ρ‡Π΅ΠΌ сСкунду, Ρ‚ΠΎ ΠΎΠ½ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ сообщСния WM_TIMER Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ОписаниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… WinAPI Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠŸΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ использовались ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinAPI:

SendDlgItemMessage

wsprintf

GetLocalTime

ExitProcess

GetModuleHandle

DialogBoxParam

EndDialog

SetTimer

KillTimer

LoadIcon

GetWindowLong

GetDlgItemInt

SendMessage

GetDlgItem

CreateProcess

GetSystemMenu

AppendMenu

MessageBox

ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ свСдСны Π² Π’Π°Π±Π»ΠΈΡ†Π΅ 1.

Π’Π°Π±Π»ΠΈΡ†Π° 1 — Бводная Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ WinAPI

Ѐункция

ДСйствиС

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

SendDlgItemMessage

(

HWND hDlg,

int nIDDlgItem,

UINT Msg,

WPARAM wParam,

LPARAM lParam

);

ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚ сообщСниС Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ элСмСнту управлСния Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅

hDlg

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит ΠΎΡ€Π³Π°Π½ управлСния

nIDDlgItem

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΡ€Π³Π°Π½Π° управлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСниС

Msg

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

wParam

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ сообщСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ

lParam

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ сообщСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ

wsprintf

(

LPTSTR lpOut,

LPTSTR lpFmt,

);

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ ряд символов ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π±ΡƒΡ„Π΅Ρ€Π΅. Π›ΡŽΠ±Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ся Π² Π±ΡƒΡ„Π΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… согласно ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ спСцификации Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ строкС.

lpOut

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±ΡƒΡ„Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ….

lpFmt

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΡƒ с Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΌ Π½ΡƒΠ»Π΅ΠΌ, которая содСрТит Π² ΡΠ΅Π±Π΅ спСцификации управлСния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

GetLocalTime

(

LPSYSTEMTIME lpSystemTime

);

Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π°Ρ‚Ρƒ ΠΈ Π²Ρ€Π΅ΠΌΡ.

lpSystemTime

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ SYSTEMTIME, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π°Ρ‚Ρƒ ΠΈ Π²Ρ€Π΅ΠΌΡ

ExitProcess

(

UINT uExitCode

);

Π—Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ процСсса ΠΈ Π²ΡΠ΅Ρ… Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

uExitCode

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΊΠΎΠ΄ Π²Ρ‹Ρ…ΠΎΠ΄Π° для процСсса, ΠΈ Π΄Π»Ρ всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

GetModuleHandle

(

LPCTSTR lpModuleName

);

Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ дСскриптор ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ модуля, Ссли Ρ„Π°ΠΉΠ» Π±Ρ‹Π» ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Π² Π°Π΄Ρ€Π΅ΡΠ½ΠΎΠΌ пространствС Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ процСсса.

lpModuleName

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку с Π½ΡƒΠ»Π΅ΠΌ Π² ΠΊΠΎΠ½Ρ†Π΅, которая содСрТит имя модуля. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ NULL, Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дСскриптор. exe

DialogBoxParam

(

HINSTANCE hInstance,

LPCTSTR lpTemplateName,

HWND hWndParent, // дСскриптор ΠΎΠΊΠ½Π° Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°

DLGPROC lpDialogFunc,

LPARAM dwInitParam

);

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΈΠ· Ρ€Π΅ΡΡƒΡ€ΡΠ° шаблона Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°

hInstance

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ экзСмпляр модуля, исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТит шаблон Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

lpTemplateName

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ шаблон Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

hWndParent

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π»Π°Π΄Π΅Π΅Ρ‚ Π±Π»ΠΎΠΊΠΎΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³Π°.

lpDialogFunc

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°

dwInitParam

УстанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСсылаСт Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ сообщСниС WM_INITDIALOG Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ lParam.

EndDialog

(

HWND hDlg,

int nResult

);

Π Π°Π·Ρ€ΡƒΡˆΠ°Π΅Ρ‚ модальноС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, вынуТдая систСму Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ для Π±Π»ΠΎΠΊΠ° Π΄ΠΈΠ°Π»ΠΎΠ³Π°.

hDlg

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΎ.

nResult

УстанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая создавала Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.

SetTimer

(

UINT nIDEvent,

UINT nElapse,

void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD)

);

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ простоя.

nDEvent

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ Π½ΡƒΠ»Ρ.

nElapse

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ….

lpfnTimer

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ адрСс обСспСчСнный ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ для TimerProc Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, которая ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ WM_TIMER сообщСния. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ NULL WM_TIMER сообщСния ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

KillTimer

(

Wnd: HWnd,

IDEvent:Integer

);

Π›ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€

Wnd

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎp ΠΎΠΊΠ½Π°.

IDEvent

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎp события Ρ‚Π°ΠΉΠΌΠ΅pΠ°.

LoadIcon

(

HINSTANCE hInstance,

LPCTSTR lpIconName // ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

);

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ опрСдСляСмый рСсурс ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

hInstance

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ экзСмпляр модуля, исполняСмый Ρ„Π°ΠΉΠ» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТит ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π°. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ПУБВО (NULL), ΠΊΠΎΠ³Π΄Π° загруТаСтся стандартная ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

lpIconName

ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса Π² ΠΌΠ»Π°Π΄ΡˆΠ΅ΠΌ словС ΠΈ Π½ΡƒΠ»ΠΈ Π² ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΌ словС

GetWindowLong

(

HWND hWnd,

int nIndex

);

Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΌ ΠΎΠΊΠ½Π΅

hWnd

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ получаСтся информация.

nIndex

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ смСщСниС (начиная ΠΎΡ‚ Π½ΡƒΠ»Ρ) ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ значСния. GWL_ID — ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°.

GetDlgItemInt

(

HWND hDlg,

int nIDDlgItem,

BOOL *lpTranslated, // ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ/Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ

BOOL bSigned

);

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ тСкст Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡ€Π³Π°Π½Π° управлСния Π² Π±Π»ΠΎΠΊΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π² Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

hDlg

ДСскриптор Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°

nIDDlgItem

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ элСмСнта Π±Π»ΠΎΠΊΠ° Π΄ΠΈΠ°Π»ΠΎΠ³Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΎΡ€Π³Π°Π½ управлСния.

lpTranslated

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ: ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ПУБВО (NULL). Π’ ΡΡ‚ΠΎΠΌ случаС, функция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΡƒΡΠΏΠ΅Ρ…Π΅ ΠΈΠ»ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅.

bSigned

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ функция сначала ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ тСкст Π½Π° Π·Π½Π°ΠΊ «ΠΌΠΈΠ½ΡƒΡ» ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа со Π·Π½Π°ΠΊΠΎΠΌ, Ссли ΠΎΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π΅Π³ΠΎ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ИБВИНА (TRUE) устанавливаСт, Ρ‡Ρ‚ΠΎ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ сдСлано, Π›ΠžΠ–Π¬ (FALSE), Ρ‡Ρ‚ΠΎ этого Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π½Π°Π΄ΠΎ.

GetDlgItem

(

HWND hDlg,

int nIDDlgItem

);

Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ дСскриптор ΠΎΡ€Π³Π°Π½Π° управлСния Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅.

hDlg

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит ΠΎΡ€Π³Π°Π½ управлСния.

nIDDlgItem

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ элСмСнта управлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

BOOL CreateProcess

(

LPCTSTR lpApplicationName,

LPTSTR lpCommandLine,

LPSECURITY_ATTRIBUTES lpProcessAttributes,

LPSECURITY_ATTRIBUTES lpThreadAttributes,

BOOL bInheritHandles,

DWORD dwCreationFlags,

LPVOID lpEnvironment,

LPCTSTR lpCurrentDirectory,

LPSTARTUPINFO lpStartupInfo,

LPPROCESS_INFORMATION lpProcessInformation

);

Основная функция запуска процСсса

lpApplicationName. — Π˜ΠΌΡ выполняСмого модуля

lpCommandLine-Командная строка.

lpProcessAttributes — Атрибуты Π·Π°Ρ‰ΠΈΡ‚Ρ‹ для Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния.

lpThreadAttributes — Атрибуты Π·Π°Ρ‰ΠΈΡ‚Ρ‹ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°.

bInheritHandles — Π€Π»Π°Π³ наслСдования

dwCreationFlagsΠ€Π»Π°Π³ способа созданиС процСсса

lpEnvironment.-Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π±Π»ΠΎΠΊ срСды.

lpCurrentDirectory — Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ диск ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

lpStartupInfo — Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для настройки свойств процСсса,

lpProcessInformation Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° PROCESS_INFORMATION с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅

GetSystemMenu

(

Wnd: HWnd;

Revert: Bool

):

Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ систСмноС мСню ΠΎΠΊΠ½Π° для ΠΊΠΎΠΏΠΈpования ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

hWnd

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π»Π°Π΄Π΅Ρ‚ΡŒ ΠΊΠΎΠΏΠΈΠ΅ΠΉ мСню ΠΎΠΊΠ½Π°.

bRevert

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — Π›ΠžΠ–Π¬ (FALSE), GetSystemMenu Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дСскриптор ΠΊΠΎΠΏΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² Π½Π°ΡΡ‚оящСС врСмя мСню ΠΎΠΊΠ½Π°. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ИБВИНА (TRUE), GetSystemMenu Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ мСню ΠΎΠΊΠ½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΡΠΎΡΡ‚ояниС опрСдСляСмоС Π² Windows ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

AppendMenu

(

HMENU hMenu, // дСскриптор мСню, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½

UINT uFlags, // Ρ„Π»Π°ΠΆΠΊΠΈ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню

UINT uIDNewItem,

LPCTSTR lpNewItem // ΠΏΡƒΠ½ΠΊΡ‚ контСкстного мСню

);

ДобавляСт Π² ΠΊΠΎΠ½Π΅Ρ† опрСдСляСмой строки мСню, «Π²Ρ‹ΡΠΊΠ°ΠΊΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ» мСню, подмСню ΠΈΠ»ΠΈ контСкстного мСню Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚

hMenu

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ строку мСню, «Π²Ρ‹ΡΠΊΠ°ΠΊΠΈΠ²Π°ΡŽΡ‰Π΅Π΅» мСню, подмСню ΠΈΠ»ΠΈ контСкстноС мСню, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ.

uFlags

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ„Π»Π°ΠΆΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ внСшним Π²ΠΈΠ΄ΠΎΠΌ ΠΈ Ρ…арактСристиками Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ комбинация Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, пСрСчислСнных Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ Π½ΠΈΠΆΠ΅.

uIDNewItem

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню ΠΈΠ»ΠΈ, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ uFlags установлСн Π² MF_POPUP, дСскриптор «Π²Ρ‹ΡΠΊΠ°ΠΊΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ» мСню ΠΈΠ»ΠΈ подмСню.

lpNewItem

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ содСрТаниС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню.

MessageBox

(

HWND hWnd,

LPCTSTR lpText,

LPCTSTR lpCaption,

UINT uType

);

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎΠΌ сообщСний

hWnd

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° Π±Π»ΠΎΠΊΠ° сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ создано.

lpText

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΡƒ с ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ нуля Π² ΠΊΠΎΠ½Ρ†Π΅, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° ΡΠΊΡ€Π°Π½Π΅.

lpCaption

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΡƒ с ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ нуля Π² ΠΊΠΎΠ½Ρ†Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ для Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

uType

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ установку Π±ΠΈΡ‚ΠΎΠ² Ρ„Π»Π°ΠΆΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡƒΡΠ»Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ содСрТаниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π€Π°ΠΉΠ» timer2. rc

// Ρ„Π°ΠΉΠ» timer2. rc

// ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ констант

#define WS_SYSMENU 0×8 0000L

// элСмСнты Π½Π° ΠΎΠΊΠ½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π²ΠΈΠ΄ΠΈΠΌΡ‹

#define WS_VISIBLE 0×1 000 0000L

// Π±ΠΎΡ€Π΄ΡŽΡ€ Π²ΠΎΠΊΡ€ΡƒΠ³ элСмСнта

#define WS_BORDER 0×80 0000L

// ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ TAB ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты

#define WS_TABSTOP 0×1 0000L

// тСкст Π² ΠΎΠΊΠ½Π΅ рСдактирования ΠΏΡ€ΠΈΠΆΠ°Ρ‚ ΠΊ Π»Π΅Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ

#define ES_LEFT 0×0000L

// ΡΡ‚ΠΈΠ»ΡŒ всСх элСмСнтов Π½Π° ΠΎΠΊΠ½Π΅

#define WS_CHILD 0×4 000 0000L

// запрСщаСтся Π²Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

#define ES_READONLY 0×0800L

#define DS_3DLOOK 0×0004L

// ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°

DIAL1 DIALOG 0, 0, 240, 100

STYLE WS_SYSMENU | DS_3DLOOK

CAPTION «Π”ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ с Ρ‡Π°ΡΠ°ΠΌΠΈ ΠΈ Π΄Π°Ρ‚ΠΎΠΉ»

FONT 8, «Arial»

CONTROL «», 1, «edit», ES_LEFT

Π€Π°ΠΉΠ» timer2. inc

; Ρ„Π°ΠΉΠ» timer2. inc

; константы

; сообщСниС ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π°

WM_CLOSE equ 10h

;сообщСниС ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈ создании ΠΎΠΊΠ½Π°

WM_INITDIALOG equ 110h

;сообщСниС ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈ событии с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π½Π° ΠΎΠΊΠ½Π΅

WM_COMMAND equ 111h

;сообщСниС ΠΎΡ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

WM_TIMER equ 113h

; сообщСниС посылки тСкста элСмСнту

WM_SETTEXT equ 0Ch

; ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€

IFDEF MASM

EXTERN SendDlgItemMessageA@20:NEAR

EXTERN wsprintfA: NEAR

EXTERN GetLocalTime@4:NEAR

EXTERN ExitProcess@4:NEAR

EXTERN GetModuleHandleA@4:NEAR

EXTERN DialogBoxParamA@20:NEAR

EXTERN EndDialog@8:NEAR

EXTERN SetTimer@16:NEAR

EXTERN KillTimer@8:NEAR

ELSE

EXTERN SendDlgItemMessageA: NEAR

EXTERN _wsprintfA:NEAR

EXTERN GetLocalTime: NEAR

EXTERN ExitProcess: NEAR

EXTERN GetModuleHandleA: NEAR

EXTERN DialogBoxParamA: NEAR

EXTERN EndDialog: NEAR

EXTERN SetTimer: NEAR

EXTERN KillTimer: NEAR

SendDlgItemMessageA@20 = SendDlgItemMessageA

wsprintfA = _wsprintfA

GetLocalTime@4 = GetLocalTime

ExitProcess@4 = ExitProcess

GetModuleHandleA@4 = GetModuleHandleA

DialogBoxParamA@20 = DialogBoxParamA

EndDialog@8 = EndDialog

SetTimer@16 = SetTimer

KillTimer@8 = KillTimer

ENDIF

; структура сообщСния

MSGSTRUCT STRUC

MSHWND DD ?

MSMESSAGE DD ?

MSWPARAM DD ?

MSLPARAM DD ?

MSTIME DD ?

MSPT DD ?

MSGSTRUCT ENDS

; структура Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°Ρ‚Π°-врСмя

DAT STRUC

year DW ?

month DW ?

dayweek DW ?

day DW ?

hour DW ?

min DW ?

sec DW ?

msec DW ?

DAT ENDS

Π€Π°ΠΉΠ» timer2. asm

.386P

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

.MODEL FLAT, stdcall

include timer2. inc

; Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΡƒ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

IFDEF MASM

; для ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° LINK. EXE

includelib d: masm32libuser32. lib

includelib d: masm32libkernel32. lib

includelib d: masm32libgdi32. lib

ELSE

; для ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠ° TLINK32. EXE

includelib c: tasm32libimport32. lib

ENDIF

;——————————————————————————-;

; сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ…

_DATA SEGMENT DWORD PUBLIC USE32 'DATA'

MSG MSGSTRUCT

HINST DD 0; дСскриптор прилоТСния

PA DB «DIAL1», 0

TIM DB «Π”Π°Ρ‚Π° %u/%u/%u ВрСмя %u:%u:%u», 0

STRCOPY DB 50 DUP (?)

DATA DAT <0>

_DATA ENDS

; сСгмСнт ΠΊΠΎΠ΄Π°

_TEXT SEGMENT DWORD PUBLIC USE32 'CODE'

START:

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

PUSH 0

CALL GetModuleHandleA@4

MOV [HINST], EAX

; ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ

PUSH 0

PUSH OFFSET WNDPROC

PUSH 0

PUSH OFFSET PA

PUSH [HINST]

CALL DialogBoxParamA@20

CMP EAX,-1

JNE KOL

; сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅

KOL:

;——————————————————-;

PUSH 0

CALL ExitProcess@4

;——————————————————-;

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

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

; [EBP+014Н]; LPARAM

; [EBP+10Н]; WAPARAM

; [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_CLOSE

JNE L1

; здСсь рСакция Π½Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΎΠΊΠ½Π°

; ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ 1

PUSH 1; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

PUSH DWORD PTR [EBP+08H]

CALL KillTimer@8

; ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ 2

PUSH 2; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

PUSH DWORD PTR [EBP+08H]

CALL KillTimer@8

; Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³

PUSH 0

PUSH DWORD PTR [EBP+08H]

CALL EndDialog@8

JMP FINISH

L1:

CMP DWORD PTR [EBP+0CH], WM_INITDIALOG

JNE L2

; здСсь Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ инициализация

; ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ 1

PUSH 0; ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ = NULL

PUSH 1000; ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» 1 с.

PUSH 1; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

PUSH DWORD PTR [EBP+08H]

CALL SetTimer@16

; ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ 2

PUSH OFFSET TIMPROC; ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ = NULL

PUSH 500; ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» 0.5 с.

PUSH 2; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

PUSH DWORD PTR [EBP+08H]

CALL SetTimer@16

JMP FINISH

L2:

CMP DWORD PTR [EBP+0CH], WM_TIMER

JNE FINISH

; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ строку Π² ΠΎΠΊΠ½ΠΎ

PUSH OFFSET STRCOPY

PUSH 0

PUSH WM_SETTEXT

PUSH 1; ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ элСмСнта

PUSH DWORD PTR [EBP+08H]

CALL SendDlgItemMessageA@20

FINISH:

POP EDI

POP ESI

POP EBX

POP EBP

MOV EAX, 0

RET 16

WNDPROC ENDP

;———————————————-;

;ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

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

; [EBP+014Н]; LPARAM — ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ запуска Windows

; [EBP+10Н]; WAPARAM — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

; [EBP+0CH]; WM_TIMER

; [EBP+8]; HWND

TIMPROC PROC

PUSH EBP

MOV EBP, ESP

; ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ локальноС врСмя

PUSH OFFSET DATA

CALL GetLocalTime@4

; ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ строку для Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

MOVZX EAX, DATA. sec

PUSH EAX

MOVZX EAX, DATA. min

PUSH EAX

MOVZX EAX, DATA. hour

PUSH EAX

MOVZX EAX, DATA. year

PUSH EAX

MOVZX EAX, DATA. month

PUSH EAX

MOVZX EAX, DATA. day

PUSH EAX

PUSH OFFSET TIM

PUSH OFFSET STRCOPY

CALL wsprintfA

; Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ стСк

ADD ESP, 32

POP EBP

RET 16

TIMPROC ENDP

_TEXT ENDS

END START

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

Рисунок 1 — Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ windows winapi

Π’Ρ‹Π²ΠΎΠ΄Ρ‹ Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ тСорСтичСскиС свСдСния ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°Ρ… Windows, для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΎ 32-Π±ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, освоСны Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠ°ΠΊ MASM32(основной компилятор), MASM Builder (графичСская ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° MASM32), ResEdit (Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ рСсурсов), OllyDBG (ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΎΡ‚ ΡΡ‚ΠΎΡ€ΠΎΠ½Π½Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°). На ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ с Ρ†Π΅Π»ΡŒΡŽ ΠΈΡ… Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΡ Π±Ρ‹Π»Π° написана ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС дСйствия:

Π’Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π’Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ Π’Ρ‹Π²ΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π’Ρ‹Π²ΠΎΠ΄ ΠΎΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎΡΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ свСдСний ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

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