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

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

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

 IDC_COMBO_COLOUR, 0x403, 7, 0, 0x6559, 0x6c6c, 0x776f, "\000"

 IDC_COMBO_COLOUR, 0x403, 6, 0, 0x6c42, 0x6361, 0x006b,

 IDC_COMBO_COLOUR, 0x403, 6, 0, 0x6857, 0x7469, 0x0065, 0

END


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

//

// String Table

//


STRINGTABLE DISCARDABLE

BEGIN

 IDC_RADIO_LEFT   "Left radio box"

 IDC_RADIO_CENTER "Center radio box"

 IDC_RADIO_RIGHT  "Right radio box"

 IDC_BUTTON_SET   "Set button pressed"

END


STRINGTABLE DISCARDABLE

BEGIN

 IDC_BUTTON_CLEAR "Clear button pressed"

END


#endif // Russian resources

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


#ifndef APSTUDIO_INVOKED

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

// Generated from the TEXTINCLUDE 3 resource.

//


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

#endif // not APSTUDIO_INVOKED

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ рСсурсов прилоТСния DialogBar ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ€Π³Π°Π½ΠΎΠ² управлСния Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ IDD_DIALOG_BAR ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ resource.h. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» создаСтся автоматичСски Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ рСсурсов Microsoft Visual C++. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ тСкст Ρ„Π°ΠΉΠ»Π° прСдставлСн Π² листингС 3.12.

Листинг 3.12. Π€Π°ΠΉΠ» resource.h

//{{NO_DEPENDENCIES}}

// Microsoft Developer Studio generated include file.

// Used by DialogBar.rc

//

#define IDD_DIALOG_BAR   101

#define IDC_RADIO_LEFT   1004

#define IDC_RADIO_CENTER 1005

#define IDC_RADIO_RIGHT  1006

#define IDC_BUTTON_SET   1007

#define IDC_BUTTON_CLEAR 1008

#define IDC_COMBO_COLOUR 1012


// Next default values for new objects

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 104

#define _APS_NEXT_COMMAND_VALUE  40001

#define _APS_NEXT_CONTROL_VALUE  1014

#define _APS_NEXT_SYMED_VALUE    101

#endif

#endif

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ DialogBar ΠΈ запуститС Π΅Π³ΠΎ. На экранС появится Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния, Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ отобраТаСтся диалоговая панСль управлСния (рис. 3.19).

Рис. 3.19. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ DialogBar


ΠŸΠΎΡ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ DialogBar. Если Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ строки ΠΈΠ· списка combo-box, Ρ‚ΠΎ Π½Π° экранС Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ сообщСния, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΎΡ€Π³Π°Π½ управлСния.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ DialogBar

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ DialogBar ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ всСго Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° класса – это Π³Π»Π°Π²Π½Ρ‹ΠΉ класс прилоТСния CDlgBarApp ΠΈ класс Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния CDlgBarWindow. Как ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… прилоТСниях, посвящСнных использованию ΠΏΠ°Π½Π΅Π»Π΅ΠΉ управлСния, Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния ΠΏΠΎ сути являСтся Π΅Π³ΠΎ СдинствСнным ΠΎΠΊΠ½ΠΎΠΌ. Однако ΠΌΡ‹ сохранили Π·Π° Π½ΠΈΠΌ это ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ внСсти ΠΎΠ΄Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Π² описаниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, созданных с использованиСм MFC AppWizard ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ.

Π“Π»Π°Π²Π½Ρ‹ΠΉ класс прилоТСния CDlgBarApp

Π“Π»Π°Π²Π½Ρ‹ΠΉ класс прилоТСния CDlgBarApp наслСдуСтся ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса CWinApp. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ DlgBarApp класса CDlgBarApp объявлСн ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ создаСтся сразу послС запуска прилоТСния.

Π’ класс CDlgBarApp Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ InitInstance. Он создаСт Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния, прСдставлСнноС классом CDlgBarWindow, наслСдованным ΠΎΡ‚ класса CFrameWnd. ΠœΡ‹ Π½Π΅ станСм ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ фактичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Bar ΠΈ MultiBar, прСдставлСнных Π²Ρ‹ΡˆΠ΅.

Класс Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния CDlgBarWindow

Класс CDlgBarWindow управляСт Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ прилоТСния, создаСт Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡƒΡŽ панСль управлСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ сообщСния, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния:

class CDlgBarWindow : public CFrameWnd {

// ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ панСль управлСния

protected:

// ПанСль управлСния Π½Π° основС класса CDialogBar

 CDialogBar m_wndDialogBar;


protected:

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

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

 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);


public:

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

 CDlgBarWindow();


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

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

 afx_msg BOOL DlgBarCommand(UINT nID);

 afx_msg void DlgBarCombo();


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

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

 DECLARE_MESSAGE_MAP()

};

ΠšΡ€ΠΎΠΌΠ΅ ряда ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π² класс CDlgBarWindow Π²Ρ…ΠΎΠ΄ΠΈΡ‚ элСмСнт m_wndDialogBar класса CDialogBar. Π­Ρ‚ΠΎΡ‚ элСмСнт прСдставляСт Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡƒΡŽ панСль управлСния, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ прилоТСния.

Рассмотрим ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса CDlgBarWindow Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

БСйчас для нас Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ OnCreate, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ собствСнно, ΠΈ создаСт Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡƒΡŽ панСль управлСния прилоТСния DialogBar. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сообщСний класса CDlgBarWindow, находится ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° ON_WM_CREATE. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² процСссС создания Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ OnCreate.

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

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса CDlgBarWindow ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния. ΠœΡ‹ рассказывали ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ создания Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния Π² Ρ‚ΠΎΠΌΠ΅ 24 сСрии β€œΠ‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° систСмного программиста”, посвящСнном Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ MFC, поэтому сСйчас Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π½Π° Π½Π΅ΠΌ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

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

Π’Π°Π±Π»ΠΈΡ†Π° сообщСний класса CDlgBarWindow ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ сообщСния ΠΎΡ‚ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния. Π’ Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ располагаСтся ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° ON_WM_CREATE, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ OnCreate Π²ΠΎ врСмя создания ΠΎΠΊΠ½Π°:

ON_WM_CREATE()

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ панСлью управлСния, Π² Π΅Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ сообщСния. ΠžΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ Set ΠΈ Clear ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ Alighn ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄ ON_COMMAND_EX:

// ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сообщСния ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ Set ΠΈ Clear

ON_COMMAND_EX(IDC_BUTTON_SET, DlgBarCommand)

ON_COMMAND_EX(IDC_BUTTON_CLEAR, DlgBarCommand)

ON_COMMAND_EX(IDC_CHECK1, DlgBarCommand)


// ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сообщСния ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ Alighn

ON_COMMAND_EX(IDC_RADIO_LEFT, DlgBarCommand)

ON_COMMAND_EX(IDC_RADIO_CENTER, DlgBarCommand)

ON_COMMAND_EX(IDC_RADIO_RIGHT, DlgBarCommand)

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ всСх этих ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… сообщСний вызываСтся ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ DlgBarCommand, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ пСрСдаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅Π³ΠΎ сообщСниС.

ΠžΡ‚ списка combo-box, располоТСнного Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ сообщСниС с ΠΊΠΎΠ΄ΠΎΠΌ извСщСния CBN_SELCHANGE. Π­Ρ‚ΠΎ сообщСниС пСрСдаСтся, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· списка Π½ΠΎΠ²ΡƒΡŽ строку:

// ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сообщСния ΠΎΡ‚ списка combo-box

ON_CBN_SELCHANGE( IDC_COMBO_COLOUR, DlgBarCombo)

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

ΠœΠ΅Ρ‚ΠΎΠ΄ OnCreate класса CDlgBarWindow сначала Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ OnCreate Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса CFrameWnd:

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


Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡƒΡŽ панСль управлСния. Для этого Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Create для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° m_wndDialogBar, входящСго Π² класс CDlgBarWindow, ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ панСль управлСния:

 if (!m_wndDialogBar.Create(this, IDD_DIALOG_BAR, CBRS_TOP|CBRS_TOOLTIPS, IDD_DIALOG_BAR)) {

  TRACE0("Failed to create dialog bar\n");

  return -1;     

 }

 return 0;

}

Π’ качСствС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° для Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this прСдставляСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, ΠΎΠΊΠ½ΠΎ CDlgBarWindow.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ шаблона Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ диалоговая панСль управлСния прилоТСния. ΠœΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ шаблона Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ IDD_DIALOG_BAR.

Π’ качСствС Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Create ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΡΡ‚ΠΈΠ»ΡŒ CBRS_TOP. Π‘Ρ‚ΠΈΠ»ΡŒ CBRS_TOP устанавливаСт располоТСниС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΎΠΊΠ½Π° прилоТСния.

ΠœΠ΅Ρ‚ΠΎΠ΄ DlgBarCombo класса CDlgBarWindow

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ строку ΠΈΠ· списка combo-box Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния, Π² Π΅Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² нашСм случаС являСтся Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ прилоТСния, поступаСт сообщСниС. Для Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ DlgBarCombo класса CDlgBarWindow.

ΠœΠ΅Ρ‚ΠΎΠ΄ DlgBarCombo Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сдСлал Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ· списка combo-box:

void CDlgBarWindow::DlgBarCombo() {

 // ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сдСлан Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ· списка

 MessageBox("Combo-box selection changed");

}

ΠœΠ΅Ρ‚ΠΎΠ΄ BarCommand класса CDlgBarWindow

ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сообщСния ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ Set, Clear, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ Alighn ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ BarCommand класса CDlgBarWindow. Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° nID ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ BarCommand пСрСдаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅Π³ΠΎ Π΅Π³ΠΎ ΠΎΡ€Π³Π°Π½Π° управлСния:

BOOL CDlgBarWindow::DlgBarCommand(UINT nID) {

 //…

}

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ для ΠΊΠ½ΠΎΠΏΠΎΠΊ Set, Clear, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Alighn, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΡ… строковыС рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠΎΠ³Π΄Π° вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ DlgBarCommand ΠΈ Π΅ΠΌΡƒ пСрСдаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ, ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ строковый рСсурс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Π΅Π³ΠΎ Π½Π° экранС: