Александр Фролов - Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2
- Название:Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2
- Автор:
- Жанр:
- Издательство:Диалог-МИФИ
- Год:1996
- Город:Москва
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Александр Фролов - Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 краткое содержание
Книга посвящена программированию в среде Microsoft Visual C++ с использованием библиотеки классов MFC. В ней мы расскажем о разработке приложений с многооконным пользовательским интерфейсом, использовании классов MFC для создания меню, панелей управления и состояния. Рассмотрим возможности повторного использования программного кода, предоставляемые Microsoft Visual C++. Отдельную главу книги мы посвятили разработке приложений, взаимодействующих с базами данных через драйвера ODBC.
Книга предназначена для всех, кто интересуется программированием в среде операционных систем Windows 95 и Windows NT версий 3.51 и 4.0.
Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
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 предназначен для управления главным окном приложения. Для этого класса определены конструктор, деструктор, методы 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 не содержат программного кода.
Метод PreCreateWindow вызывает метод PreCreateWindow базового класса CFrameWnd и выполняет обработку по умолчанию.
Метод OnCreate класса CMainFrame создает главное окно приложения, и размещает в нем панель управления IDR_MAINFRAME и стандаартную панель состояния.
Методы AssertValid и Dump класса CMainFrame могут использоваться при отладке приложения.
Класс документа приложения CDaterDoc представляет документ, с которым работает приложение. В него входит элемент m_daterSet класса CDaterSet, также определенного в нашем приложении, который представляет запись базы данных.
Кроме этого элемента в классе CDaterDoc определены конструктор, деструктор, метод OnNewDocument, а также методы AssertValid и Dump:
class CDaterDoc : public CDocument {
protected:
CDaterDoc();
DECLARE_DYNCREATE(CDaterDoc)
// Attributes
public:
CDaterSet m_daterSet;
// Operations
public:
// Overrides
//{{AFX_VIRTUAL(CDaterDoc)
public:
virtual BOOL OnNewDocument();
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CDaterDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
//{{AFX_MSG(CDaterDoc)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
Конструктор и деструктор класса CMainFrame не содержжат программного кода.
Метод OnNewDocument вызывается, когда надо создать новый документ для приложения. Метод OnNewDocument приложения Dater вызывает метод OnNewDocument базового класса CDocument:
BOOL CDaterDoc::OnNewDocument() {
if (!CDocument::OnNewDocument()) return FALSE;
// TODO:
return TRUE;
}
Методы AssertValid и Dump класса CMainFrame могут использоваться при отладке приложения.
Большой интерес представляет класс окна просмотра приложения CDaterView. В нем содержится указатель m_pSet на объект класса CDaterSet, который представляет запись базы данных. Обратите внимание, что определение указателя находится внутри комментариев вида //{{AFX_DATA. Эти комментарии используются MFC ClassWizard:
class CDaterView : public CRecordView {
protected:
CDaterView();
DECLARE_DYNCREATE(CDaterView)
public:
//{{AFX_DATA(CDaterView)
enum { IDD = IDD_DATER_FORM };
CDaterSet* m_pSet;
//}}AFX_DATA
// Attributes
public:
CDaterDoc* GetDocument();
// Operations
public:
// Overrides
//{{AFX_VIRTUAL(CDaterView)
public:
virtual CRecordset* OnGetRecordset();
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual void DoDataExchange(CDataExchange* pDX);
virtual void OnInitialUpdate();
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CDaterView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
//{{AFX_MSG(CDaterView)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
Помимо конструктора и деструктора в классе CDaterView определен целый ряд методов – PreCreateWindow, GetDocument, OnGetRecordset, DoDataExchange, OnInitialUpdate, а также AssertValid и Dump. Опишем наиболее важные из этих методов более подробно.
Конструктор класса CMainFrame вызывает конструктор базового класса CRecordView и передает ему в качестве параметра символ IDD, определенный как идентификатор шаблона диалоговой панели IDD_DATER_FORM, используемого окном просмотра.
Конструктор CMainFrame также приваивает указателю m_pSet значение NULL:
CDaterView::CDaterView() : CRecordView(CDaterView::IDD) {
//{{AFX_DATA_INIT(CDaterView)
m_pSet = NULL;
//}}AFX_DATA_INIT
// TODO:
}
Деструктор класса CMainFrame не содержит программного кода:
CDaterView::~CDaterView() {}
Метод PreCreateWindow вызывает метод PreCreateWindow базового класса CRecordView и выполняет обработку по умолчанию:
BOOL CDaterView::PreCreateWindow(CREATESTRUCT& cs) {
// TODO:
return CRecordView::PreCreateWindow(cs);
}
Метод GetDocument возвращает указатель на документ, связанный с данным окном просмотра. Если окно просмотра не связано ни с каким документом, метод возвращает значение NULL.
Метод GetDocument имеет две реализации. Одна используется для отладочной версии приложения, а другая для окончательной.
Читать дальшеИнтервал:
Закладка: