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

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

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

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Для этого, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ ΠΏΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ этой ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΎΠΊΠ½Π° рСдактирования. Π’ ΠΏΠΎΠ»Π΅ ID, ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΉΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Toolbar Button Properties, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ID_MY_BUTTON (рис. 3.8).

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

Когда Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ рСсурсов мСню ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡƒΡŽ панСль, Ρ‚ΠΎ достаточно Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ ΠΈ откроСтся Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ мСню ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ClassWizard. Π’ ΠΎΠΊΠ½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния toolbar правая ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‚ΠΎΡ‡Π½Π΅Π΅ ΠΎΠ½Π° задСйствована для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ClassWizard, сначала Π½Π°Π΄ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ClassWizard ΠΈΠ· ΠΏΠ°Π½Π΅Π»ΠΈ Standard. ClassWizard ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ страницу Message Map ΠΈ сразу ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ (рис. 3.10).

Рис. 3.10. Диалоговая панСль ClassWizard


По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π² спискС Object IDs Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния β€” ID_MY_BUTTON. Π’ спискС Class name Π²Ρ‹Π±Ρ€Π°Π½ класс CMainFrame β€” класс Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс прилоТСния, Ссли ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π» ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· списка Messages ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сообщСния, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’Π°ΠΌ доступны Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° β€” COMMAND ΠΈ UPDATE_COMMAND_UI.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· списка Messages ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ COMMAND ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Add Function. ClassWizard Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сообщСний класса CMainFrame Π½ΠΎΠ²ΡƒΡŽ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ запросит имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ имя OnMyButton. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒΡΡ с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ OK. ClassWizard Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΊ классу CMainFrame ΠΌΠ΅Ρ‚ΠΎΠ΄ OnMyButton.

Π§Ρ‚ΠΎΠ±Ρ‹ сразу ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, достаточно Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Edit Code. Π’ ΠΎΠΊΠ½Π΅ рСдактирования появится Ρ„Π°ΠΉΠ» с исходными тСкстами ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса CMainFrame, Π° курсор Π±ΡƒΠ΄Π΅Ρ‚ установлСн Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ OnMyButton:

//////////////////////////////////////////////////////////////

// ΠœΠ΅Ρ‚ΠΎΠ΄ OnMyButton класса CMainFrame


void CMainFrame::OnMyButton() {

 // TODO: Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ собствСнный

 // ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄

}

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄ OnMyButton Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Одно Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²Ρ‹Π·Π²Π°Π½, слуТит сигналом наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ID_MY_BUTTON. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ послС коммСнтария TODO ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Для нашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ тСстового ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² всСго ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° MessageBox ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ AfxMessageBox:

//////////////////////////////////////////////////////////////

// ΠœΠ΅Ρ‚ΠΎΠ΄ OnMyButton класса CMainFrame


void CMainFrame::OnMyButton() {

 // TODO: Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ собствСнный

 // ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄

 MessageBox(β€œButton is pressed”);

}

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ запуститС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ для ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ID_MY_BUTTON, ΠΎΠ½Π° отобраТаСтся Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° Π½Π΅Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ.

Когда Π²Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ID_MY_BUTTON, вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ OnMyButton ΠΈΠ· класса CMainFrame. Он ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π° экранС сообщСниС Button is pressed.

ΠšΠ»Π°ΡΡΡ‹ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния

Π’ состав Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MFC Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π΄Π²Π° класса для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с панСлями управлСния – CToolBar ΠΈ CDialogBar. Оба ΠΎΠ½ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса CControlBar, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса CControlBar наслСдуСтся Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ класс – CStatusBar. Он ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с панСлями состояния ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСн ΠΏΠΎΠ·ΠΆΠ΅:

CToolBar  ←|←CControlBar←CWnd←CCmdTarget←CObject

CDialogBar←|

CStatusBar←|

Класс CToolBar прСдставляСт панСль управлСния, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· ряда ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, Π²Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, смоТСтС Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ€Π³Π°Π½Ρ‹ управлСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ списки ΠΈΠ»ΠΈ поля рСдактирования, ΠΎΠ΄Π½Π°ΠΊΠΎ такая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования.

Если трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ панСль, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ€Π³Π°Π½Ρ‹ управлСния, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ классом CDialogBar. Класс CDialogBar, Ρ‚Π°ΠΊΠΆΠ΅ наслСдованный ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса CControlBar, позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ панСль управлСния Π½Π° основС Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстного Π²Π°ΠΌ шаблона Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ возмоТностях использования класса CDialogBar ΠΌΡ‹ расскаТСм нСсколько ΠΏΠΎΠ·ΠΆΠ΅, Π° сСйчас остановим своС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° классС CToolBar.

Кнопки ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ с зависимой фиксациСй. Π’ΠΈΠΏ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния выбираСтся ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ класса CToolBar.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ панСль управлСния, сначала Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса CToolBar, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ панСль. Если панСль ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ€Π³Π°Π½ΠΎΠ² управлСния, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ класса CToolBar Π½ΠΎΠ²Ρ‹ΠΉ класс, Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ класс вмСсто класса CToolBar.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ CToolBar ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΊΠ°ΠΊ элСмСнт Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² прилоТСниях, созданных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСдств MFC AppWizard, панСль управлСния ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ элСмСнт класса CMainFrame, наслСдованного ΠΎΡ‚ класса CFrameWnd ΠΈΠ»ΠΈ CMDIFrameWnd (Π² зависимости ΠΎΡ‚ интСрфСйса прилоТСния). Класс CMainFrame ΠΊΠ°ΠΊ Ρ€Π°Π· прСдставляСт Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ располоТСны ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, ΠΎΠΊΠ½Π° просмотра ΠΈ Ρ‚. Π΄.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса CToolBar Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

CToolBar();

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса CToolBar создан, слСдуСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Create, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт панСль управлСния. Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Create ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ характСристики создаваСмой ΠΏΠ°Π½Π΅Π»ΠΈ:

BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT nID = AFX_IDW_TOOLBAR);

Волько ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° pParentWnd являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π’ Π½Π΅ΠΌ Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° для ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Π’ качСствС Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выступаСт Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния, элСмСнтом класса ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса CToolBar.

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

Π€Π»Π°Π³ ОписаниС CBRS_BOTTOM ПанСль управлСния отобраТаСтся Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΎΠΊΠ½Π° CBRS_FLOATING ПанСль управлСния отобраТаСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ CBRS_FLYBY ПанСль состояния ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, для этого ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ располагаСтся панСль управлСния, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π»ΠΎ панСль состояния ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ для ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ строковыС рСсурсы CBRS_SIZE_DYNAMIC Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. ΠŸΡ€ΠΈ этом ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² нСсколько рядов CBRS_SIZE_FIXED ПанСль состояния ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ (Ρ€Π°Π·ΠΌΠ΅Ρ€) CBRS_TOOLTIPS Для ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΈΡ… ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ описания Π² ΠΎΠΊΠ½Π°Ρ… tool tips CBRS_TOP ПанСль управлСния отобраТаСтся Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΎΠΊΠ½Π° 

Π’ качСствС послСднСго ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Create Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ присвоСн ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ AFX_IDW_TOOLBAR.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, созданныС MFC AppWizard, ΠΈΠΌΠ΅ΡŽΡ‚ мСню View, содСрТащСС строки Toolbar ΠΈ Status bar. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Toolbar с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ID_VIEW_TOOLBAR позволяСт Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ снова ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ панСль управлСния. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° стандартного ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ сообщСния ID_VIEW_TOOLBAR выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ OnUpdateControlBarMenu класса CFrameWnd. Π‘Ρ€Π°Π·Ρƒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ OnUpdateControlBarMenu ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ AFX_IDW_TOOLBAR. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ OnUpdateControlBarMenu ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ β€œΠΠ΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ возмоТности класса CMainFrame”.

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

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

BOOL LoadToolBar(LPCTSTR lpszResourceName);

BOOL LoadToolBar(UINT nIDResource);

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