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

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

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

public:

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

 virtual BOOL InitInstance();

};


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

CDlgBarApp DlgBarApp;


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

// Класс 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()   

};


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

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

// ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран сообщСниС

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

BOOL CDlgBarWindow::DlgBarCommand(UINT nID) {

 CString szCommandAbout;


 // Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ строку с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ,

 // ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠ΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ

 // сообщСния ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π΅Π΅ Π½Π° экран

 if (szCommandAbout.LoadString(nID)) MessageBox(szCommandAbout);

 else {

  // Ошибка ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ строкового рСсурса

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

  return -1;     

 }


 return TRUE;

}


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

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

// ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран сообщСниС

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

void CDlgBarWindow::DlgBarCombo() {

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

 MessageBox("Combo-box selection changed");

}


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

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

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

BEGIN_MESSAGE_MAP(CDlgBarWindow, CFrameWnd)


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

 ON_WM_CREATE()


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

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

 // ΠšΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ сообщСния ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ 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)


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

 ON_CBN_SELCHANGE(IDC_COMBO_COLOUR, DlgBarCombo)


END_MESSAGE_MAP()


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

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

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

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

BOOL CDlgBarApp::InitInstance() {

 m_pMainWnd = new CDlgBarWindow();

 m_pMainWnd->ShowWindow(m_nCmdShow);

 m_pMainWnd->UpdateWindow();


 return TRUE;

}


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

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

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

CDlgBarWindow::CDlgBarWindow() {

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

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

 Create(NULL, "Dialog Bar", WS_OVERLAPPEDWINDOW, rectDefault, NULL);

}


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

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

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

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

int CDlgBarWindow::OnCreate(LPCREATESTRUCT lpCreateStruct) {

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

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


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

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡƒΡŽ панСль управлСния

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

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

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

  return -1;

 }

 return 0;

}

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» рСсурсов ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ DialogBar.rc. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ шаблон Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ панСль свойств Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Dialog Properties. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ страницу General ΠΈ присвойтС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ IDD_DIALOG_BAR. Π—Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ страницу Styles. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· списка Style ΡΡ‚ΠΈΠ»ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Child. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ диалоговая панСль Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°ΠΌΠΊΠΈ β€” ΠΈΠ· списка Border Π½Π°Π΄ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ строку None. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ· страницы Styles ΠΈ ΠΈΠ· страниц More Styles ΠΈ Extended Styles Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ диалоговая панСль управлСния Π½Π΅ заняла Ρƒ вас Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ ΠΎΠΊΠ½Π° прилоТСния, ΠΏΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ·ΠΊΠΎΠΉ.

РазмСститС Π² шаблонС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ нСсколько ΠΎΡ€Π³Π°Π½ΠΎΠ² управлСния. Для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Set ΠΈ Clear с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ IDC_BUTTON_SET ΠΈ IDC_BUTTON_CLEAR, Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ Left, Center ΠΈ Right с зависимой фиксациСй, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ IDC_RADIO_LEFT, IDC_RADIO_CENTER ΠΈ IDC_RADIO_RIGHT, Π° Ρ‚Π°ΠΊΠΆΠ΅ список combo-box с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ IDC_COMBO_COLOUR. Π’ список IDC_COMBO_COLOUR внСситС нСсколько Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠœΡ‹ записали Π² Π½Π΅Π³ΠΎ названия Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² β€” Red, Blue, Green, Yellow, Black ΠΈ White. Π­Ρ‚ΠΈ строки Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² спискС сразу послС отобраТСния Π½Π° экранС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ.

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

ΠœΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ Ρ„Π°ΠΉΠ» рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π² листингС 3.11.

Листинг 3.11. Π€Π°ΠΉΠ» DialogBar.rc

//Microsoft Developer Studio generated resource script.

//

#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS

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

//

// Generated from the TEXTINCLUDE 2 resource.

//

#include "afxres.h"


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

#undef APSTUDIO_READONLY_SYMBOLS


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

//

// Russian resources


#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)

#ifdef _WIN32

LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

#pragma code_page(1251)

#endif //_WIN32


#ifdef APSTUDIO_INVOKED

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

//

// TEXTINCLUDE

//


1 TEXTINCLUDE DISCARDABLE

BEGIN

 "resource.h\0"

END


2 TEXTINCLUDE DISCARDABLE

BEGIN

 "#include ""afxres.h""\r\n"

 "\0"

END


3 TEXTINCLUDE DISCARDABLE

BEGIN

 "\r\n"

 "\0"

END


#endif // APSTUDIO_INVOKED


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

//

// Dialog

//


IDD_DIALOG_BAR DIALOG DISCARDABLE 0, 0, 227, 50

STYLE WS_CHILD

FONT 8, "MS Sans Serif"

BEGIN

 CONTROL "Left", IDC_RADIO_LEFT, "Button", BS_AUTORADIOBUTTON, 95, 10, 40, 10

 CONTROL "Center", IDC_RADIO_CENTER, "Button", BS_AUTORADIOBUTTON, 95, 19, 45, 11

 CONTROL "Right", IDC_RADIO_RIGHT, "Button", BS_AUTORADIOBUTTON, 95, 30, 40, 9

 GROUPBOX "Aligns", IDC_STATIC, 85, 0, 80, 45

 PUSHBUTTON "Set", IDC_BUTTON_SET, 175, 5, 45, 15

 PUSHBUTTON "Clear", IDC_BUTTON_CLEAR, 175, 30, 45, 15

 COMBOBOX IDC_COMBO_COLOUR, 5, 5, 70, 50, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP

END


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

//

// DESIGNINFO

//


#ifdef APSTUDIO_INVOKED

GUIDELINES DESIGNINFO DISCARDABLE

BEGIN

 IDD_DIALOG_BAR, DIALOG

 BEGIN

  LEFTMARGIN, 7

  RIGHTMARGIN, 220

  TOPMARGIN, 7

  BOTTOMMARGIN, 43

 END

END

#endif // APSTUDIO_INVOKED


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

//

// Dialog Info

//


IDD_DIALOG_BAR DLGINIT

BEGIN

 IDC_COMBO_COLOUR, 0x403, 4, 0, 0x6552, 0x0064,

 IDC_COMBO_COLOUR, 0x403, 5, 0, 0x6c42, 0x6575, "\000"

 IDC_COMBO_COLOUR, 0x403, 6, 0, 0x7247, 0x6565, 0x006e,