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

Тут можно читать онлайн Александр Фролов - Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Диалог-МИФИ, год 1996. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2
  • Автор:
  • Жанр:
  • Издательство:
    Диалог-МИФИ
  • Год:
    1996
  • Город:
    Москва
  • ISBN:
    нет данных
  • Рейтинг:
    3.89/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

Книга посвящена программированию в среде 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 - читать онлайн бесплатно полную версию (весь текст целиком)

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

Интервал:

Закладка:

Сделать

Во время вставки в проект компонента Splash Screen в метод PreTranslateMessage главного класса приложения добавляется вызов метода PreTranslateAppMessage класса CSplashWnd.

Если метод PreTranslateAppMessage класса CSplashWnd возвращает значение TRUE, тогда метод PreTranslateAppMessage класса CMultiApp также сразу завершается и возвращает значение TRUE. Сообщения, обработанные классом CSplashWnd более не передаются приложению для дальнейшей обработки.

Если метод PreTranslateAppMessage класса CSplashWnd возвращает значение FALSE, тогда вызывается метод PreTranslateMessage базового класса CWinApp.

Заметим, что по умолчанию метод PreTranslateMessage класса CWinApp выполняет некоторую дополнительную обработку сообщений, например выделяет сообщения от клавиатуры, соответствующие комбинациям клавиш, определенным в таблице акселераторов и преобразует их в командные сообщения. Более подробно о таблице акселераторов вы можете прочитать в разделе “Таблица акселераторов” главы “Меню, панели управления и панели состояния”, а также в 13 томе серии “Библиотека системного программиста”:

BOOL CMultiApp::PreTranslateMessage(MSG* pMsg) {

// CG: The following lines were added by the Splash Screen

// component.

if (CSplashWnd::PreTranslateAppMessage(pMsg)) return TRUE;

return CWinApp::PreTranslateMessage(pMsg);

}

В случае, если сообщение передается для обработки методу PreTranslateMessage базового класса CWinApp – CWinApp::PreTranslateMessage, метод PreTranslateMessage класса CMultiApp возвращает результат работы этого метода.

Метод OnCreate класса CMainFrame

Метод OnCreate создает главное окно приложения и отображает в нем панели управления и состояния. Описание метода OnCreate класса CMainFrame вы можете посмотреть в разделе “Приложение Multi”.

Во время добавления компонента Splash Screen метод OnCreate класса CMainFrame модифицируется. К нему добавляется вызов метода ShowSplashScreen класса CSplashWnd.

Метод ShowSplashScreen класса CSplashWnd, который создает и отображает на экране окно заставки, будет описан нами позже:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {

// Вызываем метод OnCreate базового класса

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

// Создаем панель управления toolbar

if (!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) {

// Ошибка при создании панели управления toolbar

TRACE0("Failed to create toolbar\n");

return -1;

}

// Создаем панель состояния status bar

if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) {

// Ошибка при создании панели состояния status bar

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

return -1;

}

// TODO: вы можете изменить характеристики панели

// управления, убрав некоторые флаги CBRS_

m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

// TODO: вы можете запретить перемещение панели управления,

// если удалите следующие три строки программы

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

// CG: The following line was added by the Splash Screen

// component.

CSplashWnd::ShowSplashScreen(this);

return 0;

}

Класс CSplashWnd

Практически весь программный код, отвечающий за отображение заставки Splash Screen, содержится в классе CSplashWnd. Этот класс включается в состав проекта и вы можете просмотреть его содержимое в окне проекта Project Workspace на странице ClassView (рис. 2.4).

Рис 24 Окно Project Workspace класс CSplashWnd Определение класса - фото 43

Рис. 2.4. Окно Project Workspace, класс CSplashWnd

Определение класса CSplashWnd находится в файле Splash.h. Мы привели его полностью в листинге 2.1.

Класс CSplashWnd создан на основе базового класса CWnd. Он включает в себя ряд методов и несколько элементов данных. Класс CSplashWnd может обрабатывать сообщения, поэтому для него в файле Splash.h определена макрокоманда DECLARE_MESSAGE_MAP, а в файле реализации — Splash.cpp — таблица сообщений класса.

Листинг2.1. Файл Splash.h

// CG: This file was added by the Splash Screen component.

#ifndef _SPLASH_SCRN_

#define _SPLASH_SCRN_

// Splash.h : header file

//

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

// Splash Screen class

class CSplashWnd : public CWnd {

// Construction

protected:

CSplashWnd();

// Attributes:

public:

CBitmap m_bitmap;

// Operations

public:

static void EnableSplashScreen(BOOL bEnable = TRUE);

static void ShowSplashScreen(CWnd* pParentWnd = NULL);

static void PreTranslateAppMessage(MSG* pMsg);

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CSplashWnd)

//}}AFX_VIRTUAL

// Implementation

public:

~CSplashWnd();

virtual void PostNcDestroy();

protected:

BOOL Create(CWnd* pParentWnd = NULL);

void HideSplashScreen();

static BOOL c_bShowSplashWnd;

static CSplashWnd* c_pSplashWnd;

// Generated message map functions

protected:

//{{AFX_MSG(CSplashWnd)

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_msg void OnPaint();

afx_msg void OnTimer(UINT nIDEvent);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

#endif

Методы класса CSplashWnd определены в файле реализации – Splash.cpp. Этот файл также добавляется к проекту Multi. Мы привели полный исходный текст этого файла в листинге 2.2.

Листинг2.2. Файл Splash.cpp

Листинг 2.2. ФайлSplash.cpp

// CG: Файл Splash.cpp добавляется в проект во время вставки

// компонента Splash Screen и содержит реализацию класса

// CSplashWnd

#include "stdafx.h"

#include "resource.h"

#include "Splash.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char BASED_CODE THIS_FILE[] = __FILE__;

#endif

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

// Splash Screen class

BOOL CSplashWnd::c_bShowSplashWnd;

CSplashWnd* CSplashWnd::c_pSplashWnd;

CSplashWnd::CSplashWnd() {}

CSplashWnd::~CSplashWnd() {

// Clear the static window pointer.

ASSERT(c_pSplashWnd == this);

c_pSplashWnd = NULL;

}

BEGIN_MESSAGE_MAP(CSplashWnd, CWnd)

//{{AFX_MSG_MAP(CSplashWnd)

ON_WM_CREATE()

ON_WM_PAINT()

ON_WM_TIMER()

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

void CSplashWnd::EnableSplashScreen(BOOL bEnable /*= TRUE*/) {

c_bShowSplashWnd = bEnable;

}

void CSplashWnd::ShowSplashScreen(CWnd* pParentWnd /*= NULL*/) {

if (!c_bShowSplashWnd || c_pSplashWnd != NULL) return;

// Allocate a new splash screen, and create the window.

c_pSplashWnd = new CSplashWnd;

if (!c_pSplashWnd->Create(pParentWnd)) delete c_pSplashWnd;

else c_pSplashWnd->UpdateWindow();

}

BOOL CSplashWnd::PreTranslateAppMessage(MSG* pMsg){

if (c_pSplashWnd == NULL) return FALSE;

// If we get a keyboard or mouse message, hide the splash

// screen.

if (pMsg->message == WM_KEYDOWN || pMsg->message == WM_SYSKEYDOWN || pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_RBUTTONDOWN || pMsg->message == WM_MBUTTONDOWN || pMsg->message == WM_NCLBUTTONDOWN || pMsg->message == WM_NCRBUTTONDOWN || pMsg->message == WM_NCMBUTTONDOWN) {

c_pSplashWnd->HideSplashScreen();

return TRUE; // message handled here

}

return FALSE; // message not handled

}

BOOL CSplashWnd::Create(CWnd* pParentWnd /*= NULL*/) {

if (!m_bitmap.LoadBitmap(IDB_SPLASH)) return FALSE;

BITMAP bm;

m_bitmap.GetBitmap(&bm);

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Александр Фролов читать все книги автора по порядку

Александр Фролов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2, автор: Александр Фролов. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x