Категории
Самые читаемые
RUSBOOK.SU » Компьютеры и Интернет » Программирование » Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 - Александр Фролов

Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 - Александр Фролов

Читать онлайн Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 - Александр Фролов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 45 46 47 48 49 50 51 52 53 54
Перейти на страницу:

Рис. 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:

1 ... 45 46 47 48 49 50 51 52 53 54
Перейти на страницу:
На этой странице вы можете бесплатно скачать Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 - Александр Фролов торрент бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Вася
Вася 24.11.2024 - 19:04
Прекрасное описание анального секса
Сергій
Сергій 25.01.2024 - 17:17
"Убийство миссис Спэнлоу" от Агаты Кристи – это великолепный детектив, который завораживает с первой страницы и держит в напряжении до последнего момента. Кристи, как всегда, мастерски строит