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

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

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

protected:

 // ПанСль управлСния Player

 CToolBar m_wndPlayerBar;

 // ПанСль управлСния Style

 CToolBar m_wndStyleBar;

 // ПанСль управлСния Extended

 CExtendedBar m_wndExtendedBar;


protected:

 // ΠœΠ΅Ρ‚ΠΎΠ΄ OnCreate ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания

 // ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния

 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);


public:

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

 CMultiBarWindow();


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

 // управлСния

 afx_msg void BarCommandOne();

 afx_msg void BarCommandRange(UINT nID);

 afx_msg void AddStringToComboBox();


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

 afx_msg BOOL ShowStyle(UINT nID);


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

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

 DECLARE_MESSAGE_MAP()   

};


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

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

// ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния

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

void CMultiBarWindow::BarCommandRange(UINT nID) {

 // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π΅ выполняСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

}

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

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

// ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния

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

void CMultiBarWindow::BarCommandOne() {

 // ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°

 MessageBox("Command not implemented");

}


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

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

// ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ Add ΠΏΠ°Π½Π΅Π»ΠΈ

// управлСния Extended

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

void CMultiBarWindow::AddStringToComboBox() {

 // ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ строку, Π²Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ m_edit

 char  tmpStr[39];

 m_wndExtendedBar.m_edit.GetLine(0, tmpStr,40);


 // ДобавляСм Π½ΠΎΠ²ΡƒΡŽ строку ΠΊ списку m_combo_box

 m_wndExtendedBar.m_combo_box.AddString(tmpStr);

}


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

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

// ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ мСню View

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

BOOL CMultiBarWindow::ShowStyle(UINT nID) {

 // ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° панСль управлСния,

 // ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ nID

 CControlBar* pBar = GetControlBar(nID);


 // ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ, отобраТаСтся Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ панСль

 // управлСния Π½Π° экранС ΠΈΠ»ΠΈ Π½Π΅Ρ‚

 BOOL bShow = ((pBar->GetStyle() & WS_VISIBLE) != 0);


 // ИзмСняСм состояниС ΠΏΠ°Π½Π΅Π»ΠΈ управлСния: Ссли панСль

 // управлСния отобраТаСтся Π½Π° экранС, удаляСм Π΅Π΅ с экрана,

 // Ссли Π½Π΅Ρ‚ - ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ

 ShowControlBar(pBar, !bShow, FALSE);


 return TRUE;

}

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

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

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

BEGIN_MESSAGE_MAP(CMultiBarWindow, CFrameWnd)


 // ΠœΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ OnCreate

 ON_WM_CREATE()


 // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Player

 ON_COMMAND(ID_STOP, BarCommandOne)

 ON_COMMAND(ID_PLAY, BarCommandOne)

 ON_COMMAND(ID_PAUSE, BarCommandOne)

 ON_COMMAND_RANGE(ID_LEFT, ID_RIGHT, BarCommandRange)

 ON_COMMAND_RANGE(ID_TYPE, ID_WAVE,  BarCommandRange)


 // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Extended

 ON_COMMAND(ID_ADD, AddStringToComboBox)

 ON_COMMAND_RANGE(ID_FOTO, ID_DISK,  BarCommandRange)


 // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Style

 ON_COMMAND_RANGE(ID_UNDERLINE, ID_MARK_4, BarCommandRange)


 // ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ мСню View

 ON_COMMAND_EX(ID_Style, ShowStyle)

 ON_COMMAND_EX(ID_Extended, ShowStyle)

 ON_COMMAND_EX(ID_Player, ShowStyle)


END_MESSAGE_MAP()


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

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

// Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΅Π³ΠΎ Π½Π° экранС

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

BOOL CMultiBarApp::InitInstance() {

 m_pMainWnd = new CMultiBarWindow();

 m_pMainWnd->ShowWindow(m_nCmdShow);

 m_pMainWnd->UpdateWindow();


 return TRUE;

}


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

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

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

CMultiBarWindow::CMultiBarWindow() {

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

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

 Create(NULL, "Multi Bar", WS_OVERLAPPEDWINDOW, rectDefault, NULL, MAKEINTRESOURCE(IDR_MENU));

}


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

// ΠœΠ΅Ρ‚ΠΎΠ΄ OnCreate класса CMultiBarWindow

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния

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

int CMultiBarWindow::OnCreate(LPCREATESTRUCT lpCreateStruct) {

 // Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ OnCreate Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса

 if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1;


 // Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ присоСдинСниС ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния ΠΊΠΎ

 // всСм сторонам ΠΎΠΊΠ½Π° CMultiBarWindow

 EnableDocking(CBRS_ALIGN_ANY);


 // ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для измСнСния стилСй ΠΊΠ½ΠΎΠΏΠΎΠΊ

 UINT nBarStyle;

 int nIndex;

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

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ панСль управлСния Player

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

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ панСль управлСния toolbar

 if (!m_wndPlayerBar.Create(this, WS_CHILD | WS_VISIBLE | CBRS_SIZE_DYNAMIC | CBRS_BOTTOM  | CBRS_TOOLTIPS, ID_Player))   {

  // Ошибка ΠΏΡ€ΠΈ создании ΠΏΠ°Π½Π΅Π»ΠΈ управлСния

  TRACE0("Failed to create toolbar\n");

  return -1;

 }


 // Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ рСсурс ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Player

 if (!m_wndPlayerBar.LoadToolBar(IDR_PLAYER)) {

  // Ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ рСсурса ΠΏΠ°Π½Π΅Π»ΠΈ управлСния

  TRACE0("Failed to load toolbar\n");

  return -1;

 }


 // УстанавливаСм Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Player

 m_wndPlayerBar.SetWindowText("Player");     


 // Из ΠΊΠ½ΠΎΠΏΠΎΠΊ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ID_TYPE, ID_CD_DRV ΠΈ

 // ID_WAVE Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚Ρ€Π΅Ρ…ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ с зависимой

 // фиксациСй. УстанавливаСм для этих ΠΊΠ½ΠΎΠΏΠΎΠΊ ΡΡ‚ΠΈΠ»ΡŒ

 // TBBS_CHECKGROUP

 nIndex = m_wndPlayerBar.CommandToIndex(ID_TYPE);

 nBarStyle = m_wndPlayerBar.GetButtonStyle(nIndex) | TBBS_CHECKGROUP;

 m_wndPlayerBar.SetButtonStyle(nIndex, nBarStyle);


 nIndex = m_wndPlayerBar.CommandToIndex(ID_CD_DRV);

 nBarStyle = m_wndPlayerBar.GetButtonStyle(nIndex) | TBBS_CHECKGROUP;

 m_wndPlayerBar.SetButtonStyle(nIndex, nBarStyle);


 nIndex = m_wndPlayerBar.CommandToIndex(ID_WAVE);

 nBarStyle = m_wndPlayerBar.GetButtonStyle(nIndex) | TBBS_CHECKGROUP;

 m_wndPlayerBar.SetButtonStyle(nIndex, nBarStyle);


 // Из ΠΊΠ½ΠΎΠΏΠΊΠΈ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ID_PAUSE Π΄Π΅Π»Π°Π΅ΠΌ

 // ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ. УстанавливаСм для этой ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΡ‚ΠΈΠ»ΡŒ

 // TBBS_CHECKBOX

 nIndex = m_wndPlayerBar.CommandToIndex(ID_PAUSE);

 nBarStyle = m_wndPlayerBar.GetButtonStyle(nIndex) | TBBS_CHECKBOX;

 m_wndPlayerBar.SetButtonStyle(nIndex, nBarStyle);


 // Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚Ρ‹Π²ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ панСль управлСния Player ΠΊ

 // любой строкС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°

 m_wndPlayerBar.EnableDocking(CBRS_ALIGN_ANY);


 // ΠŸΡ€ΠΈΡΡ‚Ρ‹Π²ΠΊΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ панСль управлСния Player ΠΊ

 // Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ

 DockControlBar(&m_wndPlayerBar);


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

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ панСль управлСния Style

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

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ панСль управлСния toolbar

 if (!m_wndStyleBar.Create(this, WS_CHILD | WS_VISIBLE | CBRS_SIZE_FIXED | CBRS_TOP | CBRS_TOOLTIPS, ID_Style)) {

  // Ошибка ΠΏΡ€ΠΈ создании ΠΏΠ°Π½Π΅Π»ΠΈ управлСния

  TRACE0("Failed to create toolbar\n");

  return -1;

 }


 // Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ рСсурс ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Style

 if (!m_wndStyleBar.LoadToolBar(IDR_STYLE)) {

  // Ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ рСсурса ΠΏΠ°Π½Π΅Π»ΠΈ управлСния

  TRACE0("Failed to load toolbar\n");

  return -1;

 }


 // УстанавливаСм Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Style

 m_wndStyleBar.SetWindowText("Style");  


 // Π—Π°ΠΏΡ€Π΅Ρ‰Π°Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚Ρ‹Π²ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ панСль управлСния Player ΠΊ

 // Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ

 m_wndStyleBar.EnableDocking(0);


 // УстанавливаСм для ΠΊΠ½ΠΎΠΏΠΊΠΈ ID_SUBSCRIPT ΡΡ‚ΠΈΠ»ΡŒ TBBS_WRAPPED

 nIndex = m_wndStyleBar.CommandToIndex(ID_SUBSCRIPT);

 nBarStyle = m_wndStyleBar.GetButtonStyle(nIndex) | TBBS_WRAPPED;

 m_wndStyleBar.SetButtonStyle(nIndex, nBarStyle);


 // УстанавливаСм для ΠΊΠ½ΠΎΠΏΠΊΠΈ ID_TEXT_JUSTIFY ΡΡ‚ΠΈΠ»ΡŒ

 // TBBS_WRAPPED