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

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

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

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

ПанСль управлСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚Ρ‹ΠΊΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ‚Π΅ΠΌ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ CFrameWnd::EnableDocking ΠΈ CControlBar::EnableDocking.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ DockControlBar ΠΈ FloatControlBar класса CFrameWnd

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΡ‚Ρ‹ΠΊΠΎΠ²Π°Ρ‚ΡŒ панСль управлСния ΠΊ Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π°, Π½Π°Π΄ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ DockControlBar класса CFrameWnd :

void DockControlBar(CControlBar * pBar, UINT nDockBarID = 0, LPCRECT lpRect = NULL);

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

Π€Π»Π°Π³ ОписаниС AFX_IDW_DOCKBAR_TOP ПанСль управлСния присоСдиняСтся ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π° AFX_IDW_DOCKBAR_BOTTOM ПанСль управлСния присоСдиняСтся ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π° AFX_IDW_DOCKBAR_LEFT ПанСль управлСния присоСдиняСтся ΠΊ Π»Π΅Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π° AFX_IDW_DOCKBAR_RIGHT ПанСль управлСния присоСдиняСтся ΠΊ ΠΏΡ€Π°Π²ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π°

Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nDockBarID Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ панСль управлСния присоСдиняСтся ΠΊ любой сторонС ΠΎΠΊΠ½Π°.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nDockBarID ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ нСсколько сторон ΠΎΠΊΠ½Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’ этом случаС панСль управлСния присоСдиняСтся ΠΊ Ρ‚ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΎΠΊΠ½Π°, которая ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ CFrameWnd::EnableDocking ΠΈ CControlBar::EnableDocking. Если Ρ‚Π°ΠΊΠΈΡ… Π³Ρ€Π°Π½ΠΈΡ† нСсколько, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС – сначала вСрхняя, Π° Ссли ΠΊ Π½Π΅ΠΉ панСль Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присоСдинСна, Ρ‚ΠΎΠ³Π΄Π° ниТняя, лСвая, ΠΈ правая стороны ΠΎΠΊΠ½Π°.

ПослСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpRect опрСдСляСт, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ панСль управлСния. ПолоТСниС ΠΏΠ°Π½Π΅Π»ΠΈ задаСтся Π² экранных ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ….

Если Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ панСль управлСния Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΠ½ΠΈ-ΠΎΠΊΠ½Π΅ ΠΈ Π½Π΅ ΠΏΡ€ΠΈΡΡ‚Ρ‹ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌ ΠΎΠΊΠ½Π°, Ρ‚ΠΎ вмСсто ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DockControlBar Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ FloatControlBar класса CFrameWnd:

CFrameWnd* FloatControlBar(CControlBar * pBar, CPoint point);

ПанСль управлСния, указанная ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ pBar, отобраТаСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΠ½ΠΈ-ΠΎΠΊΠ½Π΅. РасполоТСниС ΠΎΠΊΠ½Π° ΠΏΠ°Π½Π΅Π»ΠΈ управлСния задаСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ point, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ экранныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹.

ΠœΠ΅Ρ‚ΠΎΠ΄ FloatControlBar Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, панСль управлСния Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. Для установки ΠΈ измСнСния тСкста Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ SetWindowText, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² классС CWnd:

void SetWindowText(LPCTSTR lpszString);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpszString Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса CString ΠΈΠ»ΠΈ строку символов, Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ Π½ΡƒΠ»Π΅ΠΌ. Π’ Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ записан Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ для ΠΏΠ°Π½Π΅Π»ΠΈ управлСния.

Π€ΠΎΡ€ΠΌΠ° ΠΏΠ°Π½Π΅Π»ΠΈ управлСния

ПанСль управлСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ динамичСски измСняСмой. Π’ послСднСм случаС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ.

МоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΈΠ»ΠΈ Π½Π΅Ρ‚, опрСдСляСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Create класса CToolBar. Если ΠΏΡ€ΠΈ создании ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Π±Ρ‹Π» установлСн Ρ„Π»Π°Π³ CBRS_SIZE_DYNAMIC Π΅Π΅ Ρ„ΠΎΡ€ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ, Π° Ссли Π±Ρ‹Π» установлСн Ρ„Π»Π°Π³ CBRS_SIZE_FIXED β€” нСльзя.

Π’ состав класса CToolBar Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ SetButtonStyle. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΊΠ½ΠΎΠΏΠΎΠΊ вмСстС:

void SetButtonStyle(int nIndex, UINT nStyle);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nIndex Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ индСкс ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ раздСлитСля Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nStyle позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ раздСлитСля. ИндСкс ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ раздСлитСля соотвСтствуСт Π΅Π΅ порядковому Π½ΠΎΠΌΠ΅Ρ€Ρƒ Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния.

Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° nStyle ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π»Π°Π³ΠΎΠ²:

Π€Π»Π°Π³ Π Π΅ΠΆΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ раздСлитСля TBBS_BUTTON Бтандартная ΠΊΠ½ΠΎΠΏΠΊΠ° TBBS_SEPARATOR Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ TBBS_CHECKBOX ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ TBBS_GROUP Π‘ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ начинаСтся Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠ½ΠΎΠΏΠΎΠΊ TBBS_CHECKGROUP Π‘ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ начинаСтся Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ TBBS_WRAPPED Π­Ρ‚ΠΎΡ‚ Ρ„Π»Π°Π³ позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ панСль управлСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ располоТСны Π² нСсколько рядов. УстановитС этот Ρ„Π»Π°Π³ для самых послСдних ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ряду. Кнопка, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π° ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ с установлСнным Ρ„Π»Π°Π³ΠΎΠΌ TBBS_WRAPPED, отобраТаСтся Π² Π½ΠΎΠ²ΠΎΠΌ ряду

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΡΡ‚ΠΈΠ»ΡŒ TBBS_WRAPPED Π½Π΅ описан Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Microsoft Visual C++, Π½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΊΠ½ΠΎΠΏΠΎΠΊ, рСкомСндуСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Для этого слСдуСт Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ GetButtonStyle класса CToolBar:

UINT GetButtonStyle(int nIndex) const;

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ„Π»Π°Π³ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ с индСксом nIndex. ΠœΡ‹ ΡƒΠΆΠ΅ рассматривали эти Ρ„Π»Π°Π³ΠΈ ΠΏΡ€ΠΈ описании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° SetButtonStyle класса CToolBar.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ индСкс (порядковый Π½ΠΎΠΌΠ΅Ρ€) любой ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, Ссли Π·Π½Π°Π΅Ρ‚Π΅ Π΅Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Для этого ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ CommandToIndex класса CToolBar. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ индСкс ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ nIDFind. Если Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ CommandToIndex Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ –1:

int CommandToIndex(UINT nIDFind);

ΠžΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ выполняСт ΠΌΠ΅Ρ‚ΠΎΠ΄ GetItemID ΠΊΠ»Π°ΡΡΠ° CToolBar. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ с индСксом nIndex. Если Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° nIndex ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ индСкс раздСлитСля, Ρ‚ΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ GetItemID Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ID_SEPARATOR:

UINT GetItemID(int nIndex) const;

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΏΠ°Π½Π΅Π»ΠΈ управлСния

ПанСль управлСния, созданная Π½Π° основС класса CToolBar, состоит ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ срСдства для отобраТСния Π² Π½Π΅ΠΉ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΡ€Π³Π°Π½ΠΎΠ² управлСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ список, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚.

Однако, Π²Ρ‹ всС ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вывСсти Π² ΠΏΠ°Π½Π΅Π»ΠΈ toolbar Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ€Π³Π°Π½Ρ‹ управлСния. Π’Π°ΠΊ ΠΊΠ°ΠΊ панСль управлСния являСтся Π½ΠΈ Ρ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ ΠΊΠ°ΠΊ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ€Π³Π°Π½Ρ‹ управлСния.

Для этого прСдлагаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

β€’ Π’ Ρ‚ΠΎΠΌ мСстС ΠΏΠ°Π½Π΅Π»ΠΈ управлСния toolbar, Π³Π΄Π΅ Π²Ρ‹ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ€Π³Π°Π½ управлСния, Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ

β€’ Π‘Ρ€Π°Π·Ρƒ послС создания ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ раздСлитСля вмСсто ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΡ€Π³Π°Π½ управлСния. ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ Π΅ΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

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

Π’ состав класса CToolBar Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ SetButtonInfo. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ внСшний Π²ΠΈΠ΄ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ SetButtonInfo, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния:

void SetButtonInfo(int nIndex, UINT nID, UINT nStyle, int iImage);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nIndex ΠΌΠ΅Ρ‚ΠΎΠ΄Π° SetButtonInfo опрСдСляСт индСкс ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ раздСлитСля. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ характСристики для этой ΠΊΠ½ΠΎΠΏΠΊΠΈ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nID позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ раздСлитСля.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nStyle опрСдСляСт Ρ€Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ„Π»Π°Π³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ Π½Π°ΠΌΠΈ прСдставлСны ΠΏΡ€ΠΈ описании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° SetButtonStyle класса CToolBar.

ПослСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° позволяСт ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ. НовоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ бСрСтся ΠΈΠ· рСсурса ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. ΠŸΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с порядковым Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ iImage.

Если Π²Ρ‹ Π²Ρ‹Π·Π²Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ SetButtonInfo ΠΈ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π΅ΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nIndex индСкс раздСлитСля, Ρ‚ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° iImage измСняСтся. Π’ этом случаС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ iImage Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ раздСлитСля.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ характСристики ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ GetButtonStyle класса CToolBar, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ характСристики ΠΊΠ½ΠΎΠΏΠΊΠΈ:

void GetButtonInfo(int nIndex, UINT& nID, UINT& nStyle, int& iImage) const;

Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ nIndex Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ индСкс ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π§Π΅Ρ€Π΅Π· ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ GetButtonInfo ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ записаны характСристики ΠΊΠ½ΠΎΠΏΠΎΠΊ.

Π§Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nID Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ nStyle – Ρ€Π΅ΠΆΠΈΠΌ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π° Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ iImage – индСкс изобраТСния ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² рСсурсС ΠΏΠ°Π½Π΅Π»ΠΈ управлСния.