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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Microsoft Visual C++ ΠΈ MFC. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Windows 95 ΠΈ Windows NT. Π§Π°ΡΡ‚ΡŒ 2Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 26

Автор АлСксандр Π€Ρ€ΠΎΠ»ΠΎΠ²

ΠœΠ΅Ρ‚ΠΎΠ΄ Create Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ создания ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ»ΠΈ Π½ΡƒΠ»ΡŒ Π² случаС ошибки.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ создали панСль управлСния, Π½Π°Π΄ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ рСсурс ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Для этого ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ LoadToolBar класса CToolBar. ΠœΠ΅Ρ‚ΠΎΠ΄ LoadToolBar ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

BOOL LoadToolBar(LPCTSTR lpszResourceName);

BOOL LoadToolBar(UINT nIDResource);

Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° lpszResourceName слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя рСсурса ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° nIDResource.

Если Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° рСсурса ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄ LoadToolBar Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ случаС ошибки возвращаСтся Π½ΡƒΠ»ΡŒ.

Π’ Microsoft Visual C++ вСрсии 2.Ρ… ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях рСсурс Ρ‚ΠΈΠΏΠ° toolbar отсутствуСт. ВмСсто этого рСсурса Π² Ρ„Π°ΠΉΠ»Π΅ рСсурсов прилоТСния Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. А вмСсто ΠΌΠ΅Ρ‚ΠΎΠ΄Π° LoadToolBar класса CToolBar использовались Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π΄Π²ΡƒΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² этого ΠΆΠ΅ класса – LoadBitmap ΠΈ SetButtons.

ΠœΠ΅Ρ‚ΠΎΠ΄ LoadBitmap Π·Π°Π³Ρ€ΡƒΠΆΠ°Π» ΠΈΠ· рСсурсов прилоТСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ SetButtons устанавливал соотвСтствиС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Π΅Π΅ изобраТСния ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ создании Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для отобраТСния ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ с рСсурсами toolbar ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ LoadToolBar, Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… LoadBitmap ΠΈ SetButtons.

На этом созданиС ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ панСль управлСния. Однако стоит ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса CToolBar ΠΈ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса CControlBar , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ панСль управлСния Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠœΠ΅Ρ‚ΠΎΠ΄ SetBarStyle класса CControlBar

Π’ΠΎ врСмя создания ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π΅ характСристики Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ dwStyle ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Create. Если Π²Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти характСристики ΡƒΠΆΠ΅ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ SetBarStyle. ΠœΠ΅Ρ‚ΠΎΠ΄ SetBarStyle ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² классС CControlBar, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для класса CToolBar:

void SetBarStyle(DWORD dwStyle);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ dwStyle Π·Π°Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ характСристики ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Π’ качСствС этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ„Π»Π°Π³ΠΎΠ², прСдставлСнных Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π€Π»Π°Π³ ОписаниС CBRS_ALIGN_TOP ПанСль управлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚Ρ‹ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π° CBRS_ALIGN_BOTTOM ПанСль управлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚Ρ‹ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π° CBRS_ALIGN_LEFT ПанСль управлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚Ρ‹ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊ Π»Π΅Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π° CBRS_ALIGN_RIGHT ПанСль управлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚Ρ‹ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊ ΠΏΡ€Π°Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π° CBRS_ALIGN_ANY ПанСль управлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚Ρ‹ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊ любой Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π° CBRS_TOOLTIPS Для ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΈΡ… ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ описания Π² ΠΎΠΊΠ½Π°Ρ… tool tips CBRS_FLYBY ПанСль состояния ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠœΠ΅Ρ‚ΠΎΠ΄ GetBarStyle класса CControlBar

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ характСристики ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ GetBarStyle класса CControlBar. ΠœΠ΅Ρ‚ΠΎΠ΄ GetBarStyle Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ„Π»Π°Π³ΠΎΠ². ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ„Π»Π°Π³ΠΎΠ² смотритС Π²Ρ‹ΡˆΠ΅, Π² описании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° SetBarStyle:

DWORD GetBarStyle();

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Bar, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ панСль управлСния, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с панСлью управлСния

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

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с устройством ΠΈ возмоТностями ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния, Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π²Π·ΡΡ‚ΡŒ малСнькоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΎΠ΄Π½ΠΈΠΌ взглядом. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π·Π° основу ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ MFStart с ΠΎΠ΄Π½ΠΈΠΌ СдинствСнным ΠΎΠΊΠ½ΠΎΠΌ, прСдставлСнноС Π½Π°ΠΌΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ сСрии β€œΠ‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° систСмного программиста”, посвящСнной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Microsoft Visual C++ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ классов MFC.

К соТалСнию, Ссли Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для создания прилоТСния MFC AppWizard, Ρ‚ΠΎ Π²Π°ΠΌ, скорСС всСго, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны ΠΈ возмоТности ClassWizard. БСйчас Π½Π°ΠΌ придСтся ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ удобством Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ прилоТСния Ρ€Π°Π΄ΠΈ простоты Π΅Π³ΠΎ исходных тСкстов.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Bar. Π’ качСствС Ρ‚ΠΈΠΏΠ° прилоТСния Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· списка Type строку Application. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· мСню Build строку Settings ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ клавиш <Alt+F7>. На экранС появится диалоговая панСль Project Settings. Π’ этой ΠΏΠ°Π½Π΅Π»ΠΈ располоТСны нСсколько страниц, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ характСристики ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ страницу General. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· списка Microsoft Foundation Classes строку Use MFC in a Shared Dll ΠΈΠ»ΠΈ строку Use MFC in a Static Library. Π­Ρ‚Π° настройка ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Microsoft Visual C++, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ классы Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MFC.

НабСритС Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ исходный тСкст прилоТСния ΠΈ сохранитС Π΅Π³ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ Bar.cpp (листинг 3.4). Π—Π°Ρ‚Π΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ этот Ρ„Π°ΠΉΠ» Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Для простоты ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» вСсь ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ прилоТСния.

Листинг 3.4. Π€Π°ΠΉΠ» Bar.cpp

//============================================================

// ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Bar

// (c) Frolov G.V., 1996

// E-mail: [email protected]

//============================================================

// Π˜ΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ опрСдСлСния ΠΈΠ·

// Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²

#define VC_EXTRALEAN


// Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» для MFC

#include <afxwin.h>

#include <afxext.h>

#include <afxcmn.h>


// Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» для рСсурсов прилоТСния

#include "resource.h"


//============================================================

// Класс CBarApp - Π³Π»Π°Π²Π½Ρ‹ΠΉ класс прилоТСния

//============================================================

class CBarApp : public CWinApp {

public:

 // ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ InitInstance,

 // ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прилоТСния

 virtual BOOL InitInstance();

};


// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ класса CBarApp

CBarApp MyBarApp;


//============================================================

// Класс CBarWindow - прСдставляСт Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ

//============================================================

class CBarWindow : public CFrameWnd {


protected:  // control bar embedded members

 CToolBar    m_wndToolBar;


protected:

 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);


public:

 // ОбъявляСм конструктор класса CBarWindow

 CBarWindow();


 // ОбъявляСм ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ мСню

 afx_msg void BarCommand();


 // ΠœΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ класс

 // CBarWindow ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ сообщСния

 DECLARE_MESSAGE_MAP()   

};


//============================================================

// ΠœΠ΅Ρ‚ΠΎΠ΄ BarCommand

// ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ID_TEST_BEEP

//============================================================

void CBarWindow::BarCommand() {

 MessageBox("Command not implemented");

}


//============================================================

// Π’Π°Π±Π»ΠΈΡ†Π° сообщСний класса CBarWindow

//============================================================

BEGIN_MESSAGE_MAP(CBarWindow, CFrameWnd)

 ON_WM_CREATE()

 ON_COMMAND(ID_FILE_OPEN, CBarWindow::BarCommand)

 ON_COMMAND(ID_FILE_SAVE, CBarWindow::BarCommand)

 ON_COMMAND(ID_TOOL_EXIT, CBarWindow::BarCommand)

END_MESSAGE_MAP()


//============================================================

// ΠœΠ΅Ρ‚ΠΎΠ΄ InitInstance класса CBarApp

//============================================================

BOOL CBarApp::InitInstance() {

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса CBarWindow

 m_pMainWnd = new CBarWindow();


 // ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ Π½Π° экранС

 m_pMainWnd->ShowWindow(m_nCmdShow);


 // ОбновляСм содСрТимоС ΠΎΠΊΠ½Π°

 m_pMainWnd->UpdateWindow();

 return TRUE;

}


//============================================================

// ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса CBarWindow

//============================================================

CBarWindow::CBarWindow() {

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ прилоТСния, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅

 // Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса CBarWindow

 Create(NULL, "Hello MFC", WS_OVERLAPPEDWINDOW, rectDefault, NULL);

}