Π”ΠΈΠΏΠ»ΠΎΠΌΡ‹, курсовыС, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅...
Брочная ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅

БистСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах

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

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π²Ρ‹Π·ΠΎΠ²Π° систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DispatchMessage (), которая ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ сообщСниС ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, связанной с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DispatchMessage () сообщСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’Π°ΠΊ, функция TranslateMessage ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ сообщСния ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π’ Windows ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈΠ΄ΡƒΡ‚ сообщСния WM_KEYDOUN ΠΈ WM_KEYUP, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

БистСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ агСнтство ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ ПСнзСнский государствСнный унивСрситСт ΠšΠ°Ρ„Π΅Π΄Ρ€Π° «Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности систСм ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ»

ΠŸΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ записка ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅:

" БистСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах"

Дисциплина: Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Π“Ρ€ΡƒΠΏΠΏΠ° Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»:.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ принят с ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

ПСнза, 2006 Π³.

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚

ΠŸΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ записка содСрТит 38с., 7 рис., 2 источника, 2 ΠΏΡ€ΠΈΠ».

VISUAL БИ++, ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ, Π ΠΠ‘ΠŸΠ˜Π‘ΠΠΠ˜Π•, WINDOWS NT (98), ЀАЙЛ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ исслСдования являСтся систСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах.

ЦСлью Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ: расписаниС хранится Π² Ρ„Π°ΠΉΠ»Π΅.

Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ освоСны Π½Π°Π²Ρ‹ΠΊΠΈ систСмного программирования Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ: расписаниС хранится Π² Ρ„Π°ΠΉΠ»Π΅ (Π΅Ρ‘ Ρ‚Скст ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ).

  • 1 Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ
    • 1.1 ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ интСрфСйса ΠΈ Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    • 1.2 Π’Ρ‹Π±ΠΎΡ€ интСрфСйса
    • 2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
    • 3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π±Π°Π·Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°
    • 4. Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
    • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
    • Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников
    • Алгоритм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1 Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ

1.1 ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ интСрфСйса ΠΈ Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ самого программирования ΠΈ Π΄Π°ΠΆΠ΅ составлСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²ΠΎΠΌ этого Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ интСрфСйс.

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ интСрфСйса являСтся унификация внутрисистСмных ΠΈ ΠΌΠ΅ΠΆΡΠΈΡΡ‚Π΅ΠΌΠ½Ρ‹Ρ… связСй ΠΈ ΡƒΡΡ‚ройств сопряТСния с Ρ†Π΅Π»ΡŒΡŽ эффСктивной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прогрСссивных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² проСктирования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы.

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

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

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, систСма взаимодСйствия Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ систСмы — АБУ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ послСдняя — систСмы управляСмой срСды.

Π’ Π½Π°ΡΡ‚оящСС врСмя ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ главная Π·Π°Π΄Π°Ρ‡Π° проСктирования интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ «Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ» Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² ΠΊΠΎΠ½Ρ‚ΡƒΡ€ управлСния, Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹, исходя ΠΈΠ· Π·Π°Π΄Π°Ρ‡ управлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ систСму взаимодСйствия Π΄Π²ΡƒΡ… Ρ€Π°Π²Π½ΠΎΠΏΡ€Π°Π²Π½Ρ‹Ρ… ΠΏΠ°Ρ€Ρ‚Π½Ρ‘Ρ€ΠΎΠ² (Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ — ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ комплСкс АБУ), Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ управлСния.

1.2 Π’Ρ‹Π±ΠΎΡ€ интСрфСйса

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ элСмСнтом любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΡ‚ Π΅Π³ΠΎ продуманности ΠΈ ΡƒΠ΄ΠΎΠ±ΡΡ‚Π²Π° часто зависит коммСрчСский успСх ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅. ΠŸΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ с Π·Π°Π΄Π°Π½ΠΈΡΠΌΠΈ, Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° эти задания выполняСт ΠΈ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ постоянно с Π½Π΅ΠΉ взаимодСйствуСт. БущСствуСт интСрфСйс Π½Π° Π±Π°Π·Π΅ мСню, псСвдографичСский интСрфСйс, ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ — ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΉ интСрфСйс, эти интСрфСйсы ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎ Π·Π°Π΄Π°Π½ΠΈΡŽ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ графичСский интСрфСйс. ГрафичСский интСрфСйс слСдуСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΌΠ½ΠΎΠ³ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ массовоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.

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

Рисунок 1. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ проводится Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ, расписаниС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π²Π²ΠΎΠ΄ΠΈΠΌ нСсколько ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ:

Π°) ΠžΠ±Ρ‰ΠΈΠ΅ трСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅:

исходныС Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅;

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ взаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ посрСдством графичСского интСрфСйса;

процСсс выполнСния запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Microsoft Visual C++ v.6.0.

Π±) ВрСбования ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задания любого ΠΈΠΌΠ΅Π½ΠΈ для Ρ„Π°ΠΉΠ»Π° с Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ;

ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… ситуаций ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»ΠΎΠΌ с Π²Ρ‹Π΄Π°Ρ‡Π΅ΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… сообщСний ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Π° Π² Π²ΠΈΠ΄Π΅ прилоТСния.

Π²) Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅:

Π² Ρ„Π°ΠΉΠ»Π΅ с Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ имя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π° Π΄Π°Π»Π΅Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π» Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ врСмя Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° 00: 00: 00;

расписаниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΈ Π½Π΅ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ;

ПослС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ввСсти имя Ρ„Π°ΠΉΠ»Π° с Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ. ПослС наТатия клавиши «Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ расписаниС» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ сущСствованиС Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Ссли ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ± ΡΡ‚ΠΎΠΌ сообщСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. ПослС открытия Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ строчку Π·Π° ΡΡ‚Ρ€ΠΎΡ‡ΠΊΠΎΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΈΠΌΠ΅Π½Π° ΠΈ Π²Ρ€Π΅ΠΌΡ запускаСмых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΈΡ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅. Π”Π°Π»Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°.

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ ΠΎ Π΅Ρ‘ ΡΠΎΡΡ‚оянии.

Бтруктурная схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ, расписаниС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ А.

3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π±Π°Π·Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ приводится описаниС тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘++ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСды ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Visual Π‘++.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ MS-DOS, графичСская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Windows послС запуска находится Π² «ΠΏΠ°ΡΡΠΈΠ²Π½ΠΎΠΌ» состоянии. Она постоянно ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ сообщСниями. БообщСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сообщСниС ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши, сообщСниС ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ курсора «ΠΌΡ‹ΡˆΠΈ», ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ сообщСниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ Ρ‚. Π΄. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π°Π±ΠΎΡ‚Π° графичСского прилоТСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡΠΊΡ€Π°Π½Π΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π΅ΡΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ Π² ΡΡ‚ΠΎ ΠΎΠΊΠ½ΠΎ Π² Π³Ρ€Π°Ρ„ичСском Π²ΠΈΠ΄Π΅. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ посылаСт Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π›ΡŽΠ±ΠΎΠ΅ графичСскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏΠΎΠ²ΡƒΡŽ структуру, основой ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся каркасноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ содСрТит минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ для обСспСчСния функционирования ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ Windows-прилоТСния.

ΠšΠ°Ρ€ΠΊΠ°ΡΠ½ΠΎΠ΅ графичСскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows.

МинимальноС каркасноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… частСй:

Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний;

ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

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

Для создания каркасного прилоТСния Π² MS Visual C++ 6.0 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ мСню «File — >New_>Projects_>Win32 Application». Π”Π°Π»Π΅Π΅ ΠΈΠ· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ «A simple Win32 application». Π’ ΡΡ‚ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ создано ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΡƒΡΡ‚ΠΎΠΉ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Для создания каркасного прилоТСния Π² ΡΡ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Главная функция ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ являСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ всСгда ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ содСрТит ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, Π° Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Оконная функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ имя, Π½ΠΎ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для Π½Π΅Π΅ строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

Π“Π΄Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обслуТиваСтся Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сообщСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся Π½Π° ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ — Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вмСстС с ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinMain (), Π° ΡΠ°ΠΌ ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ дСлаСтся ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ функция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π΄ΠΎ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² WinMain ().

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ шагом, создания каркасного прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π΄ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinMain).

Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ шагом создания каркасного прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ созданиС ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ структуры с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ класса ΠΎΠΊΠ½Π°. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinMain ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ всС Π΄Π΅ΡΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ структуры:

WNDCLASS wcl;

// объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° структуры класса ΠΎΠΊΠ½Π°

wcl. style=CS_HREDRAW|CS_VREDRAW;

// ΡΡ‚ΠΈΠ»ΡŒ ΠΎΠΊΠ½Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ // Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ // ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².

wcl. lpfnWndProc=WindowProc;

// ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ // Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

wcl. cbClsExtra=0;

// количСство Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ // структуры.

wcl. cbWndExtra=0;

// количСство Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π°.

wcl. hInstance=hInstance;

// ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), Π²Π»Π°Π΄Π΅ΡŽΡ‰Π΅ΠΉ // Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ.

wcl. hIcon=LoadIcon (NULL, IDI_APPLICATION);

// ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ класса Π·Π½Π°Ρ‡ΠΊΠ° (ΠΈΠΊΠΎΠ½ΠΊΠΈ) для Π΄Π°Π½Π½ΠΎΠ³ΠΎ // ΠΎΠΊΠ½Π°. Π—Π½Π°Ρ‡ΠΎΠΊ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Π²ΠΈΠ΄Π΅ рСсурса. Π’ // Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ LoadIcon () загруТаСтся // стандартный Π·Π½Π°Ρ‡ΠΎΠΊ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Windows.

wcl. hCursor=LoadCursor (NULL, IDC_ARROW);

// ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ класса курсора для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ΠšΡƒΡ€ΡΠΎΡ€ // Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Π²ΠΈΠ΄Π΅ рСсурса. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС // Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ LoadCursor () загруТаСтся стандартный курсор // Π² Π²ΠΈΠ΄Π΅ стрСлки.

wcl. hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH);

// ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ класса кисти для Ρ„ΠΎΠ½Π° ΠΎΠΊΠ½Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ // случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±Π΅Π»Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°.

wcl. lpszMenuName="MENU";

// ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΡƒ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ рСсурс Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ // мСню ΠΎΠΊΠ½Π°.

wcl. lpszClassName="Pass" ;

// имя класса окна

Π’Ρ€Π΅Ρ‚ΡŒΠΈΠΌ шагом являСтся созданиС ΠΎΠΊΠ½Π°. Он ΡΠΎΡΡ‚ΠΎΠΈΡ‚ ΠΈΠ· Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ класса ΠΎΠΊΠ½Π°, создания ΠΎΠΊΠ½Π°, ΠΏΠΎΠΊΠ°Π·Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠΊΠ½Π°. РСгистрация класса ΠΎΠΊΠ½Π° выполняСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ RegisterClass ():

if (! RegisterClass (&wcl)) return 0;

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ структуру класса ΠΎΠΊΠ½Π°. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ рСгистрации функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ноль ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° выполняСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ CreateWindow (), ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ

HWND CreateWindow (

LPCTSTR lpClassName, // адрСс ΠΈΠΌΠ΅Π½ΠΈ зарСгистрированного класса

LPCTSTR lpWindowName, // адрСс ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠΊΠ½Π°

DWORD dwStyle, // ΡΡ‚ΠΈΠ»ΡŒ ΠΎΠΊΠ½Π°, константы WS_xxxxxx

int x, // Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ позиция ΠΎΠΊΠ½Π°

int y, // Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ позиция ΠΎΠΊΠ½Π°

int nWidth, // ΡˆΠΈΡ€ΠΈΠ½Π° ΠΎΠΊΠ½Π°

int nHeight, // высота ΠΎΠΊΠ½Π°

HWND hWndParent, // ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ «Π²Π½Π΅ΡˆΠ½Π΅Π³ΠΎ» ΠΎΠΊΠ½Π°

HMENU hMenu, // ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ мСню ΠΎΠΊΠ½Π°

HANDLE hInstance, // ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прилоТСния

LPVOID lpParam // адрСс Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

);

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ WinMain ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ строку:

HWND hWnd = CreateWindow (wcl. lpszClassName, «Window», WS_OVERLAPPEDWINDOW, // ΠΎΠΊΠ½ΠΎ с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΠΈ Π±ΠΎΡ€Π΄ΡŽΡ€ΠΎΠΌ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, // ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ «ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ» NULL, NULL, hInstance, NULL);

// Π½Π΅Ρ‚ «Π²Π½Π΅ΡˆΠ½Π΅Π³ΠΎ» ΠΎΠΊΠ½Π° (это Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹),

// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ мСню класса ΠΎΠΊΠ½Π°,

// ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinMain ()

// Π½Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π”Π°Π»Π΅Π΅, для ΠΏΠΎΠΊΠ°Π·Π° ΠΎΠΊΠ½Π° Π½Π° ΡΠΊΡ€Π°Π½Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция ShowWindow ():

ShowWindow (hWnd, nCmdShow);

Π“Π΄Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π° (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΆΠ΅ зарСгистрировано ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ), Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — способ отобраТСния ΠΎΠΊΠ½Π°. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ способ отобраТСния, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WinMain (Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€).

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, для пСрСрисовки ΠΎΠΊΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция UpdateWindow ():

UpdateWindow (hWnd);

Π’ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° пСрСдаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°.

Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΌ шагом создания каркасного прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ созданиС Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний:

MSG lpMsg;

while (GetMessage (&lpMsg, NULL, 0,0))

{

TranslateMessage (&lpMsg);

DispatchMessage (&lpMsg);

}

return lpMsg. wParam;

Ѐункция GetMessage () Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ сообщСниС ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Π½ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Ѐункция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡΠΌΠΈ, адрСсованными Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ процСссам. Данная функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0, Ссли Π±Ρ‹Π»ΠΎ Π²Ρ‹Π±Ρ€Π°Π½ΠΎ сообщСниС WM_QUIT ΠΈ Π½Π΅ Π½ΠΎΠ»ΡŒ Π²ΠΎ Π²ΡΠ΅Ρ… ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ послС получСния сообщСния WM_QUIT. А Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈ ΡΠ°ΠΌΠ° функция WinMain ().

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π²Ρ‹Π·ΠΎΠ²Π° систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DispatchMessage (), которая ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ сообщСниС ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, связанной с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DispatchMessage () сообщСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’Π°ΠΊ, функция TranslateMessage ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ сообщСния ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π’ Windows ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈΠ΄ΡƒΡ‚ сообщСния WM_KEYDOUN ΠΈ WM_KEYUP, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΈ ΠΎΡ‚ΠΏΡƒΡΠΊΠ°Π½ΠΈΡŽ клавиш. Π­Ρ‚ΠΈ сообщСния содСрТат Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ клавиш. Ѐункция TranslateMessage () ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ эти сообщСния Π² ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡ WM_CHAR, содСрТащиС ΠŸΡΡ‚Ρ‹ΠΌ, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ, шагом создания каркасного прилоТСния являСтся написаниС ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Она выглядит Ρ‚Π°ΠΊ:

LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

static HINSTANCE hInstance;

switch (message)

{

case WM_CREATE:

{

hInstance = ((LPCREATESTRUCT) lParam) — >hInstance;

DialogBox (hInstance, IDD_DIAL, hWnd, MyDlgProc);

break;

}

case WM_DESTROY:

{

PostQuitMessage (0);

break;

}

default:

return DefWindowProc (hWnd, message, wParam, lParam);

}

return 0;

}

Оконная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сообщСниС ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ. ПослС Π°Π½Π°Π»ΠΈΠ·Π° сообщСниС Π»ΠΈΠ±ΠΎ обрабатываСтся, Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ сообщСниС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. НапримСр оконная функция ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ сообщСниС — WM_DESTROY. Π­Ρ‚ΠΎ сообщСниС пСрСдаСтся ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π°. ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°ΠΊΡ†ΠΈΠ΅ΠΉ Π½Π° Ρ‚Π°ΠΊΠΎΠ΅ сообщСниС являСтся посылка сообщСния WM_QUIT для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ прилоТСния. Π­Ρ‚ΠΎ сообщСниС посылаСтся ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ PostQuitMessage (). ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ минимальноС каркасноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows.

БозданиС мСню.

Для добавлСния мСню ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ рСсурс. Для создания рСсурса мСню Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠΌ мСню «Insert — > Resourse — > Resurs Type: Menu — > New». ΠŸΡ€ΠΈ этом Π² ΠΎΠΊΠ½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° появится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ систСму мСню. Для рСдактирования свойств элСмСнтов мСню ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ «View_>Properties». ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ мСню Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ свой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ создания рСсурса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅Π³ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈ этом автоматичСски Π±ΡƒΠ΄ΡƒΡ‚ созданы Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° — resource. h ΠΈ script. rc (Π³Π΄Π΅ script — имя Ρ„Π°ΠΉΠ»Π° рСсурсаd). ПослС этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ„Π°ΠΉΠ» рСсурса script. rc Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΠΏΠ°ΠΏΠΊΡƒ Source Files, Π° Π² Ρ„Π°ΠΉΠ» StdAfh. h Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ строку #include " resource. h" . ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ» рСсурса Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° станСт, доступна Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ° ResourceView. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эту Π·Π°ΠΊΠ»Π°Π΄ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру рСсурсов ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ ΠΏΠ°ΠΏΠΊΠ΅ menu Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ рСсурсов мСню.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ созданноС мСню ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΎΡΡŒ Π² ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ структуры класса ΠΎΠΊΠ½Π°:

wcl. lpszMenuName="MENU";

Π³Π΄Π΅ «MENU» — Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ мною ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ мСню. ПослС компиляции Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ мСню.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ мСню ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ дСйствия, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. Π’Ρ‹Π±ΠΎΡ€ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² мСню с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ отслСТиваСтся автоматичСски ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ сообщСния WM_COMMAND. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ сообщСния пСрСдаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ сообщСниС Ρ‚ΠΈΠΏΠ° WM_COMMAND ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. А Π΄Π°Π»Π΅Π΅, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ дСйствиС.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ слСдуСт ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π²Π½Π΅ Ρ‚Π΅Π»Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch.

Π’Ρ‹Π²ΠΎΠ΄ сообщСний Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅.

Π‘Π°ΠΌΡ‹ΠΌ простым способом Π²Ρ‹Π²ΠΎΠ΄Π° сообщСний Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ являСтся использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MessageBox (). Π­Ρ‚Π° функция ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:

int MessageBox (

HWND hWnd,

LPCTSTR lpText,

LPCTSTR lpCaption,

UINT uType);

Π“Π΄Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

hWnd — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°-Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° создаваСмого ΠΎΠΊΠ½Π° с ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ;

lpText — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΡƒ с ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ, строка Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ символом с ΠΊΠΎΠ΄ΠΎΠΌ 0;

lpCaption — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΡƒ с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΠΎΠΊΠ½Π°, строка Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ символом с ΠΊΠΎΠ΄ΠΎΠΌ 0;

uType — Ρ‚ΠΈΠΏ ΠΎΠΊΠ½Π° с ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… констант.Π΄.опустимы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ константы Π² ΡΡ‚ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅:

MB_YESNO — ΠΎΠΊΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ: Yes ΠΈ No.

MB_YESNOCANCEL — ΠΎΠΊΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ: Yes, No, ΠΈ Cancel.

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ноль Π² ΡΠ»ΡƒΡ‡Π°Π΅ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти для открытия ΠΎΠΊΠ½Π°. ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

IDABORT — Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Abort.

IDCANCEL — Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Cancel.

IDIGNORE — Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Ignore.

IDNO — Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° No.

IDOK — Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° OK.

IDRETRY — Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Retry.

IDYES — Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Yes.

Если ΠΎΠΊΠ½ΠΎ содСрТит ΠΊΠ½ΠΎΠΏΠΊΡƒ Cancel, Ρ‚ΠΎ Ρ„ункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ IDCANCEL Π² ΡΠ»ΡƒΡ‡Π°Π΅ наТатия клавиши ESC ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Cancel. Если ΠΊΠ½ΠΎΠΏΠΊΠ° Cancel отсутствуСт, Ρ‚ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши ESC Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ эффСкта.

На ΡΡ‚ΠΎΠΌ созданиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ процСсса.

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

Π£ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ° Π΅ΡΡ‚ΡŒ нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: адрСсноС пространство, выполняСмый ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ) ΠΈ Π²ΡΠ΅, Ρ‡Ρ‚ΠΎ эти ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚. Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, процСсс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ модуля, Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ адрСсного пространства ΠΈ Π²Π΅Ρ‚Π²ΠΈ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСсса ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½Π° Π²Π΅Ρ‚Π²ΡŒ. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅Ρ‚Π²ΡŒ? ЀактичСски, Π²Π΅Ρ‚Π²ΡŒ — это Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°ΡΡΡ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. Когда Windows Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ создаСт процСсс, ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‚Π²ΡŒ Π½Π° ΠΏΡ€ΠΎΡ†Π΅ΡΡ. Π­Ρ‚Π° Π²Π΅Ρ‚Π²ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ с ΠΏΠ΅Ρ€Π²ΠΎΠΉ инструкции Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅. Если Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ понадобится большС Π²Π΅Ρ‚Π²Π΅ΠΉ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ сам ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΡ….

Когда Windows ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для создания процСсса, ΠΎΠ½Π° создаСт Π»ΠΈΡ‡Π½ΠΎΠ΅ адрСсноС пространство для процСсса, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ½Π° Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ исполняСмый Ρ„Π°ΠΉΠ» Π² ΠΏΡ€ΠΎΡΡ‚ранство. ПослС этого ΠΎΠ½Π° создаСт ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ для процСсса.

Под Win32 ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ процСссы ΠΈΠ· ΡΠ²ΠΎΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Createprocess. Она ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… синтаксис:

BOOL CreateProcess (

LPCTSTR lpszApplicationName.

LPCTSTR IpszCommandLine,

LPSECURITYJUTRIBUTES ipsaProcess.

LPSECURITY_ATTRIBUTES lpsaThread,

BOOL flnhentHandles,

DWORD fdwCreate,

LPVOID ipvEnvironment.

LPTSTR lpszCurDir,

LPSTARTUPINFO ipsiStartlnfo,

LPPROCESS_INFORMATION lppiProcInfo):

Когда ΠΏΠΎΡ‚ΠΎΠΊ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ CreateProcess, систСма создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ядра «ΠΏΡ€ΠΎΡ†Π΅ΡΡ» с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ счСтчика числа Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ€Π°Π²Π½Ρ‹ΠΌ 1. Π­Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ — Π½Π΅ ΡΠ°ΠΌ процСсс, Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚ная структура Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ опСрационная систСма управляСт процСссом. (ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ядра «ΠΏΡ€ΠΎΡ†Π΅ΡΡ» слСдуСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ структуру Π΄Π°Π½Π½Ρ‹Ρ… со ΡΡ‚атистичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅) Π—Π°Ρ‚Π΅ΠΌ систСма создаСт для Π½ΠΎΠ²ΠΎΠ³ΠΎ процСсса Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ адрСсноС пространство Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 4 Π“Π± ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ для исполняСмого Ρ„Π°ΠΉΠ»Π°, Ρ‚Π°ΠΊ ΠΈ Π΄Π»Ρ Π»ΡŽΠ±Ρ‹Ρ… DLL (Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ).

Π”Π°Π»Π΅Π΅ систСма Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ядра «ΠΏΠΎΡ‚ΠΎΠΊ» (со ΡΡ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ, Ρ€Π°Π²Π½Ρ‹ΠΌ 1) для ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ процСсса. Как ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ядра «ΠΏΠΎΡ‚ΠΎΠΊ» — это компактная структура Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ систСма управляСт ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ. ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π°Ρ‡Π½Π΅Ρ‚ с ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ стартового ΠΊΠΎΠ΄Π° ΠΈΠ· ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π‘, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ — ΠΊΠ°ΠΊ всСгда — Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ WinMain. Если систСмС удастся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ процСсс ΠΈ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, CreateProcess Π²Π΅Ρ€Π½Π΅Ρ‚ TRUE.

На ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ.

4. Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° «C: /totalcmd/TOTALCMD. EXE» 00: 00: 00

Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ OSkurs. ПослС запуска появится ΠΎΠΊΠ½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставлСно Π½Π° Ρ€ΠΈΡ. 10.

Рисунок 2.

Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти Π² ΠΎΠΊΠΎΡˆΠΊΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Ρ„Π°ΠΉΠ»Π° Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится расписаниС ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ «Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ расписаниС». ПослС Ρ‡Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ. Если имя Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚ΠΎ ΠΏΠΎΡΠ²ΠΈΡ‚ся окошко:

Рисунок 3.

Если Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ имя ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π½Π΅ Π²Π΅Ρ€Π½ΠΎ Ρ‚ΠΎ Π²Ρ‹Π΄Π°Ρ‘тся сообщСниС.

Рисунок 4

Если Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ записан Π½Π΅ Π²Π΅Ρ€Π½ΠΎ, Ρ‚ΠΎ Π²Ρ‹Π΄Π°Ρ‘тся сообщСниС:

Рисунок 5

Если имя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π½ΠΎ с ΠΎΡˆΠΈΠ±ΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚, Ρ‚ΠΎ Π²Ρ‹Π΄Π°Ρ‘тся сообщСниС ΠΈ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° продолТСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Рисунок 6.

ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ окончания Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выдаётся сообщСниС:

Рисунок 7.

Для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ расписания Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ «ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ». Для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ «Π’Ρ‹Ρ…ΠΎΠ΄» ΠΈΠ»ΠΈ Π½Π°ΠΆΠ°Π² Π½Π° «ΠΊΡ€Π΅ΡΡ‚ΠΈΠΊ» .

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ, расписаниС хранится Π² Ρ„Π°ΠΉΠ»Π΅. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° написана ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Visual C++. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° соотвСтствуСт всСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ трСбованиям, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ВзаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ графичСского интСрфСйса.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ.

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

1. ΠšΠ΅Π»Π΅Ρ†ΠΊΠΈΠΉ Π―. ЭнциклопСдия языка Π‘ΠΈ/ ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πœ.: ΠœΠΈΡ€, 1992. — 687с.

2. ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½ Π‘., Π ΠΈΡ‡ΠΈ Π”., Π€ΡŒΡŽΠ΅Ρ€ А. Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ. Π—Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΡΠ·Ρ‹ΠΊΡƒ Π‘ / ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πœ.: Ѐинансы ΠΈ ΡΡ‚атистика, 1985. — 279с.

Алгоритм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А

——————————— [Π½Π° лист 2

Рисунок А.1. Алгоритм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

———————————— [с листа1

Рисунок А.1. Лист № 2

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

#include

#include «resource. h»

#include

#define WM_SHELLNOTIFY WM_USER+5

#define IDC_RESTORE 1000

#define TM 1001

typedef struct _SHEDULEDATA {

char fname ;

char tname ;

int h;

int m;

int s;

int priority;

int delay;

} SHEDULEDATA;

char * FileOpen (HWND hWnd);

int FindNext (SHEDULEDATA sd [30], int count);

void cstrcpy (char *a, char *b, int from, int count);

void MakeItStandart (SHEDULEDATA sd [30], int count);

void SubtDelay (SHEDULEDATA sd [30], int count, int delay);

int ReadShedule (HANDLE hFile, SHEDULEDATA sd [30]);

LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); // дСскриптор ΠΎΠΊΠ½Π°

INT CALLBACK MyDlgProc (HWND hDlg, // обращаСтся ΠΊ dialog box

UINT uMsg, // сообщСниС

WPARAM wParam, // ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сообщСния

LPARAM lParam // Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сообщСния);

int APIENTRY WinMain (HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

WNDCLASS wcl;

HWND hWnd;

MSG lpMsg;

// Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ структуры с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

wcl. style=CS_HREDRAW|CS_VREDRAW; // ΡΡ‚ΠΈΠ»ΡŒ ΠΎΠΊΠ½Π°

wcl. lpfnWndProc=WindowProc; // Ρ„-ция ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий ΠΎΠΊΠ½Π° // оконная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

wcl. cbClsExtra=0; // Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹ класса

wcl. cbWndExtra=0; // Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹ ΠΎΠΊΠ½Π°

wcl. hInstance=hInstance; // дСскриптор экзСмпляра ΠΎΠΊΠ½Π° // дСскриптор ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

wcl. hIcon=LoadIcon (NULL, IDI_APPLICATION);

wcl. hCursor=LoadCursor (NULL, IDC_ARROW); // дСскриптор курсора

wcl. hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH);); // Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°

wcl. lpszMenuName=NULL; // имя рСсурса с Π³Π»Π°Π²Π½Ρ‹ΠΌ мСню ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ // рСсурс мСню, связанный с ΠΎΠΊΠ½ΠΎΠΌ

wcl. lpszClassName="Pass"; // имя класса окна

if (! RegisterClass (&wcl))

return 0;

hWnd=CreateWindow (wcl. lpszClassName," window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

ShowWindow (hWnd, SW_HIDE);

UpdateWindow (hWnd);

while (GetMessage (&lpMsg, NULL, 0,0))

{

TranslateMessage (&lpMsg);

DispatchMessage (&lpMsg);

}

return lpMsg. wParam;

}

LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) // дСскриптор ΠΎΠΊΠ½Π°

{

static HINSTANCE hInstance;

switch (message)

{

case WM_CREATE:

{

hInstance = ((LPCREATESTRUCT) lParam) — >hInstance;

DialogBox (hInstance, IDD_DIAL, hWnd, MyDlgProc);

break;

}

case WM_DESTROY:

{

PostQuitMessage (0);

break;

}

default:

return DefWindowProc (hWnd, message, wParam, lParam);

}

return 0;

}

INT CALLBACK MyDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)

{

static SHEDULEDATA sd ;

static int count, nextexe, delayexe;

static char name ;

char * n;

static BOOL frst, fileopen = FALSE, filewasopened=FALSE;

BOOL cp;

char tip [] ="запуск ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ" ;

UINT uId=111;

static NOTIFYICONDATA nfd;

int i;

static STARTUPINFO si;

static HANDLE hMenu, hTimer, hFile;

static PROCESS_INFORMATION pi;

switch (uMsg)

{

case WM_INITDIALOG:

MF_STRING, IDC_EXIT," Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ");

frst=TRUE;

SetDlgItemText (hDlg, IDC_TEXT," «);

return (TRUE);

case WM_CLOSE:

{

if (filewasopened)

CloseHandle (hFile);

Shell_NotifyIcon (NIM_DELETE,&nfd);

DestroyMenu (hMenu);

SendMessage (GetParent (hDlg), WM_DESTROY, 0,0);

EndDialog (hDlg, 0);

return (TRUE);

}

case WM_SIZE:

{

if (wParam==SIZE_MINIMIZED)

{

ShowWindow (hDlg, SW_HIDE);

Shell_NotifyIcon (NIM_ADD,&nfd);

}

return TRUE;

}

case WM_TIMER:

{

cp=CreateProcess (sd [nextexe]. fname, NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, NULL,&si,&pi);

KillTimer (hDlg, TM);

if (! cp)

MB_ICONERROR) ==IDNO)

SendMessage (hDlg, WM_COMMAND, IDC_STOP, 0);

else

SendMessage (hDlg, WM_COMMAND, IDC_START, 0);

else

{

nextexe=FindNext (sd, count);

if (nextexe<0)

{

SendMessage (hDlg, WM_COMMAND, IDC_STOP, 0);

return TRUE;

}

delayexe=sd [nextexe]. delay;

sd [nextexe]. delay=-1;

SubtDelay (sd, count, delayexe);

if (! SetTimer (hDlg, TM, 1000*delayexe, NULL))

frst=TRUE;

if (MessageBox (hDlg," Π’ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Π½Π΅Ρ‚ свободных Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ². «, 0, MB_RETRYCANCEL

}

return TRUE;

}

case WM_SHELLNOTIFY:

{

POINT pn;

if (wParam==uId)

{

if (lParam==WM_RBUTTONDOWN)

{

GetCursorPos (&pn);

SetForegroundWindow (hDlg);

TrackPopupMenu (hMenu, TPM_RIGHTALIGN, pn. x, pn. y, 0, hDlg, NULL);

PostMessage (hDlg, WM_NULL, 0,0);

}

else if (lParam==WM_LBUTTONDOWN)

SendMessage (hDlg, WM_COMMAND, IDC_RESTORE, 0);

}

return TRUE;

}

case WM_COMMAND:

switch (LOWORD (wParam))

{

case IDC_EXIT:

{

if (filewasopened)

CloseHandle (hFile);

Shell_NotifyIcon (NIM_DELETE,&nfd);

DestroyMenu (hMenu);

SendMessage (GetParent (hDlg), WM_DESTROY, 0,0);

EndDialog (hDlg, 0);

return TRUE;

}

case IDC_OPEN:

{

n=FileOpen (hDlg);

if (n! =0)

{

lstrcpy (name, n);

fileopen=TRUE;

SetDlgItemText (hDlg, IDC_TEXT, name);

}

return TRUE;

}

case IDC_START:

{

if (frst)

{

if (! fileopen)

{

i=GetDlgItemText (hDlg, IDC_TEXT, name, 120);

if (i==0)

{

MessageBox (hDlg," Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя Ρ„Π°ΠΉΠ»Π° с Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ" ," оТидаСтся Π²Π²ΠΎΠ΄", MB_OK);

return TRUE;

}

}

if ((hFile=CreateFile (name, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) ==INVALID_HANDLE_VALUE)

MessageBox (0," НС ΡƒΠ΄Π°Π΅Ρ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ" ," error", MB_APPLMODAL|MB_OK|MB_ICONSTOP);

filewasopened=FALSE;

return TRUE;

}

filewasopened=TRUE;

count=ReadShedule (hFile, sd);

if (count <=0)

MB_ICONERROR);

return TRUE;

CloseHandle (hFile);

MakeItStandart (sd, count);

filewasopened=frst=FALSE;

}

nextexe=FindNext (sd, count);

if (nextexe<0)

{

SendMessage (hDlg, WM_COMMAND, IDC_STOP, 0);

return TRUE;

}

delayexe=sd [nextexe]. delay;

sd [nextexe]. delay=-1;

SubtDelay (sd, count, delayexe);

SendMessage (hDlg, WM_SIZE, SIZE_MINIMIZED, 0);

if (! SetTimer (hDlg, TM, 1000*delayexe, NULL))

frst=TRUE;

if (MessageBox (hDlg," Π’ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Π½Π΅Ρ‚ свободных Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ². «, 0, MB_RETRYCANCEL

return TRUE;

}

case IDC_STOP:

{

if (! frst)

KillTimer (hDlg, TM);

count =0;

nextexe=-1;

frst=TRUE;

MessageBox (hDlg," Π² Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΠΈ большС Π½Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡" ," Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅", MB_OK

return TRUE;

}

case IDC_RESTORE:

{

Shell_NotifyIcon (NIM_DELETE,&nfd);

ShowWindow (hDlg, SW_RESTORE);

SetForegroundWindow (hDlg);

return TRUE;

}

}

return TRUE;

}

return FALSE;

}

char * FileOpen (HWND hWnd)

OFN_FILEMUSTEXIST;

if (GetOpenFileName (&filename) ! = NULL)

return (filename. lpstrFile);

else

return 0;

int ReadShedule (HANDLE hFile, SHEDULEDATA sd [30])

{

char str ="" ;

char symb;

char buff ="" ;

int w;

BOOL IsComm;

int numb;

int i;

int j;

for (i=0; i<30; i++)

{

j=-1;

w=0;

while (1)

{

ReadFile (hFile,&symb, 1,&numb, NULL);

if (numb==0)

return i+1;

if (symb=='\')

symb='/';

if ((j==-1) && (symb! ='" '))

return — 1;

else

if (j==-1)

{

IsComm=TRUE;

j++;

continue;

}

else

if (IsComm)

if (symb=='" ')

{

IsComm=FALSE;

sd [i]. fname [j] =0;

j=0;

continue;

}

else

{

sd [i]. fname [j] =symb;

j++;

continue;

}

else

if ((symb==0xd) || (symb==' ') || (symb==': '))

continue;

if ((symb! =0xa))

{

if (j>5)

return — 1;

sd [i]. tname [j] =symb;

j++;

continue;

}

else

break;

}

}

return i+1;

}

void cstrcpy (char *a, char *b, int from, int count)

{

int i;

int j=0;

for (i=from; i

{

b [j] =a [i] ;

j++;

}

}

void MakeItStandart (SHEDULEDATA sd [30], int count)

{

int i;

SYSTEMTIME st;

char buffer ;

int uis;

int uil;

int ui;

GetLocalTime (&st);

for (i=0; i

{

cstrcpy (sd [i]. tname, buffer, 0,2);

sd [i]. h=atoi (buffer);

cstrcpy (sd [i]. tname, buffer, 2,2);

sd [i]. m=atoi (buffer);

cstrcpy (sd [i]. tname, buffer, 4,2);

sd [i]. s=atoi (buffer);

uil=sd [i]. h*3600+sd [i]. m*60+sd [i]. s;

uis=st. wHour*3600+st. wMinute*60+st. wSecond;

ui=uil-uis;

if (ui<0)

sd [i]. delay=ui+24*3600;

else

sd [i]. delay=ui;

}

}

int FindNext (SHEDULEDATA sd [30], int count)

{

int i, min=0xFFFFFFF;

int minnumber=-1;

for (i=0; i

{

if (sd [i]. delay<0)

continue;

else

if (sd [i]. delay

{

min=sd [i]. delay;

minnumber=i;

}

}

return minnumber;

}

void SubtDelay (SHEDULEDATA sd [30], int count, int delay)

{

int i;

for (i=0; i

if (sd [i]. delay>=0)

sd [i]. delay-=delay;

}

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