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

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

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

Рис. 5.11. Π”ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ шаблон Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ IDD_DATER_FORM


ЗапуститС MFC ClassWizard. Π’ ΠΎΠΊΠ½Π΅ MFC ClassWizard Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· списка ClassName имя класса ΠΎΠΊΠ½Π° просмотра - CDaterView ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ страницу Member Variables. На этой страницС Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ список ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠ»Π΅ΠΉ рСдактирования шаблона Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ IDD_DATER_FORM.

Π’Ρ‹Π±Π΅Ρ€ΠΈΠ΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Add Variable. На экранС появится диалоговая панСль Add Member Variable (рис. 5.12). Π’ этой ΠΏΠ°Π½Π΅Π»ΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΠ»Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. Π’ спискС Category отобраТаСтся катСгория ΠΎΡ€Π³Π°Π½Π° управлСния ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹ добавляСтС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Для ΠΏΠΎΠ»Π΅ΠΉ рСдактирования ΠΈΠ· этого списка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π° строка Value. Π’ списскС Variable type отобраТаСтся Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π² ΠΏΠΎΠ»Π΅ Member variable name. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ OK.

Рис. 5.12. Диалоговая панСль Add Member Variable


Π’ нашСм случаС список Member variable name содСрТит строки, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ поля записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Address Pad. Выбирая ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ шаблона Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ IDD_DATER_FORM ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈΠΌ Π² соотвСтствиС поля Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 5.13.

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


Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎ врСмя добавлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊ полям Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Π½Π΅Π»Π΅ΠΉ (список ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² ΠΏΠ°Π½Π΅Π»ΠΈ MFC ClassWizard пуст), Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π°ΠΌ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ язык для Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ IDD_DATER_FORM.

Π’Π°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ настроСн Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с русским языком, диалоговая панСль IDD_DATER_FORM Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ русской. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ язык, Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ панСль свойств для Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ IDD_DATER_FORM ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ· списка Language строку Russian (рис. 5.14). Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Π²Ρ‹Π±ΠΎΡ€Π΅ языка смотритС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ β€œΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ рСсурсы”.

Рис. 5.14. Бвойства Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ IDD_DATER_FORM


ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ для рСдактирования ΠΌΠ΅Ρ‚ΠΎΠ΄ GetDefaultSQL класса CDaterSet:

CString CDaterSet::GetDefaultSQL() {

 return _T("[TextBase].[txt]");

}

MFC AppWizard Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с тСкстовым Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ ΠΈ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ содСрТит ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ Π΄Π²Π΅ лишниС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

CString CDaterSet::GetDefaultSQL() {

 return _T("[TextBase.txt]");

}

ВсС! Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. На экранС откроСтся Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния Dater (рис. 5.15). Π’ ΠΎΠΊΠ½Π΅ просмотра ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ поля Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Address Pad. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС записи Π±Π°Π·Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ мСню Record ΠΈ панСль управлСния прилоТСния.

Рис. 5.15. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Dater

Как устроСно ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Dater

Бписок всСх классов, входящих Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Dater, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² ΠΎΠΊΠ½Π΅ Project Workspace Π½Π° страницС ClassView (рис. 5.16).

Рис. 5.16. Окно Project Workspace, страница ClassView


Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Dater входят ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ классы.

Класс Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс НазначСниС CAboutDlg CDialog УправляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ панСлью About CDaterApp CWinApp Π“Π»Π°Π²Π½Ρ‹ΠΉ класс прилоТСния CDaterDoc CDocument ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π»ΡΠ΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ прилоТСния CDaterSet CRecordset ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π»ΡΠ΅Ρ‚ запись Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… CDaterView CRecordView УправляСт ΠΎΠΊΠ½ΠΎΠΌ просмотра прилоТСния. Π’ этом ΠΎΠΊΠ½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ записи Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… CMainFrame CFrameWnd Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния Π“Π»Π°Π²Π½Ρ‹ΠΉ класс прилоТСния – CDaterApp

Класс CDaterApp прилоТСния Dater Π½Π΅ содСрТит Π² сСбС Π½ΠΈΡ‡Π΅Π³ΠΎ особСнного ΠΈ практичСски Π½Π΅ отличаСтся ΠΎΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса ΠΎΠ΄Π½ΠΎΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ прилоТСния Single, созданного MFC AppWizard ΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…:

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

// Класс CDaterApp

//

class CDaterApp : public CWinApp {

public:

CDaterApp();


// Overrides

 //{{AFX_VIRTUAL(CDaterApp)

public:

 virtual BOOL InitInstance();

 //}}AFX_VIRTUAL


// Implementation

 //{{AFX_MSG(CDaterApp)

 afx_msg void OnAppAbout();

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()

};

Класс CDaterApp содСрТит конструктор, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ InitInstance ΠΈ OnAppAbout.

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

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса CSingleApp Π½Π΅ выполняСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий ΠΈ состоит ΠΈΠ· пустого Π±Π»ΠΎΠΊΠ°:

CDaterApp::CDaterApp() {

 // TODO:

}

ΠœΠ΅Ρ‚ΠΎΠ΄ OnAppAbout класса CDaterApp

ΠœΠ΅Ρ‚ΠΎΠ΄ OnAppAbout класса CDaterApp вызываСтся для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ сообщСния с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ID_APP_ABOUT, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ посылаСтся ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΈΠ· мСню Help строки About. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ совмСстно с классом CAboutDlg ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ About (Π² Ρ„Π°ΠΉΠ»Π΅ рСсурсов ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ IDD_ABOUTBOX). ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ класс CAboutDlg, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для взаимодСйствия с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

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

Наибольший интСрСс прСдставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ InitInstance класса CDaterApp, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт шаблон Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° прилоТСния ΠΈ добавляСт Π΅Π³ΠΎ ΠΊ списку шаблонов прилоТСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄ InitInstance Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку прилоТСния, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΎΡ€Π³Π°Π½ΠΎΠ² упрпавлСния ΠΈ выполняСт Π΅Ρ‰Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСйствия:

BOOL CDaterApp::InitInstance() {

#ifdef _AFXDLL

 Enable3dControls();

#else

 Enable3dControlsStatic();

#endif


 LoadStdProfileSettings();


 CSingleDocTemplate* pDocTemplate;

 pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME, RUNTIME_CLASS(CDaterDoc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CDaterView));

 AddDocTemplate(pDocTemplate);


 CCommandLineInfo cmdInfo;

 ParseCommandLine(cmdInfo);


 if (!ProcessShellCommand(cmdInfo)) return FALSE;


 return TRUE;

}

ΠŸΡ€ΠΈ создании шаблона Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° указываСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° IDR_MAINFRAME, класс Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° прилоТСния CDaterDoc, класс Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния CMainFrame ΠΈ класс ΠΎΠΊΠ½Π° просмотра CDaterView.

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ†Π΅Π»Ρ‹ΠΉ ряд рСсурсов с этим ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ – мСню, панСль управлСния, Ρ‚Π°Π±Π»ΠΈΡ†Π° аксСлСраторов, ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ строковый рСсурс. НаиболСС интСрСсны для нас сСйчас мСню ΠΈ панСль управлСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ содСрТат строки ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ просмотром записСй Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° InitInstance Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ класса ΠΎΠ΄Π½ΠΎΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ прилоТСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π² 24 Ρ‚ΠΎΠΌΠ΅ сСрии β€œΠ‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° систСмного программиста”.

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

Класс CMainFrame ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для управлСния Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ прилоТСния. Для этого класса ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ конструктор, дСструктор, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ PreCreateWindow, OnCreate, AssertValid ΠΈ Dump. Π’ Π½Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ входят Π΄Π²Π° элСмСнта Π΄Π°Π½Π½Ρ‹Ρ… m_wndToolBar ΠΈ m_wndStatusBar, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ панСль управлСния ΠΈ панСль состояния:

class CMainFrame : public CFrameWnd {

protected:

 CMainFrame();

 DECLARE_DYNCREATE(CMainFrame)


// Attributes

public:


// Operations

public:


// Overrides

 //{{AFX_VIRTUAL(CMainFrame)

 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

 //}}AFX_VIRTUAL


// Implementation

public:

 virtual ~CMainFrame();

#ifdef _DEBUG

 virtual void AssertValid() const;

 virtual void Dump(CDumpContext& dc) const;

#endif


protected: 

 CStatusBar m_wndStatusBar;

 CToolBar   m_wndToolBar;


protected:

 //{{AFX_MSG(CMainFrame)

 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()

};

ΠœΡ‹ Π½Π΅ стали ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ исходныС тСксты ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса CMainFrame, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ практичСски Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса CMainFrame любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ΄Π½ΠΎΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ прилоТСния созданного MFC AppWizard.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈ дСструктор класса CMainFrame

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈ дСструктор класса CMainFrame Π½Π΅ содСрТат ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

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

ΠœΠ΅Ρ‚ΠΎΠ΄ PreCreateWindow Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ PreCreateWindow Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса CFrameWnd ΠΈ выполняСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

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

ΠœΠ΅Ρ‚ΠΎΠ΄ OnCreate класса CMainFrame создаСт Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния, ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π² Π½Π΅ΠΌ панСль управлСния IDR_MAINFRAME ΠΈ ΡΡ‚Π°Π½Π΄Π°Π°Ρ€Ρ‚Π½ΡƒΡŽ панСль состояния.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ AssertValid ΠΈ Dump класса CMainFrame

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ AssertValid ΠΈ Dump класса CMainFrame ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ прилоТСния.

Класс Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° прилоТСния – CDaterDoc

Класс Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° прилоТСния CDaterDoc прСдставляСт Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ Π½Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ элСмСнт m_daterSet класса CDaterSet, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт запись Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ΠšΡ€ΠΎΠΌΠ΅ этого элСмСнта Π² классС CDaterDoc ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ конструктор, дСструктор, ΠΌΠ΅Ρ‚ΠΎΠ΄ OnNewDocument, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ AssertValid ΠΈ Dump: