Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 93

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 87 88 89 90 91 92 < 93 > 94 95 96 97 98 99 .. 173 >> Следующая

CBitDemoView::CBitDemoView() {
// TODO: Здесь добавьте код конструктора BITMAP ВМ;
m_Bitmap.LoadBitmap (IDB_BITMAP1); m_Bitmap.GetObject (sizeof (ВМ), &BM); m_BitmapWidth = BM.bmWidth; m_BitmapHeight = BM.braHeight;
}
Вызов CBitmap: : LoadBitmap инициализирует объект растрового изображения и загружает его. Размеры изображения получают, вызывая функцию CBitmap: :Getobject, возвращающую информацию об изображении.
Наконец, чтобы отобразить растровое изображение, добавьте следующий фрагмент функции OnDraw в файл BitDemoView.cpp.
///////////////////////////////////////////////////////// // отображение с использованием класса CBitDemoView
void CBitDemoView::OnDraw(CDC* pDC) {
CBitDemoDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);
// TODO: здесь добавьте код отображения для собственных данных
CDC MemDC;
RECT ClientRect;
// создайте объект памяти контекста устройства и выберите //в нем объект растрового изображения: MemDC.CreateCompatibleDC (NULL); MemDC.SelectObject (fim_Bitmap);
// введите текущие размеры окна представления: GetClientRect (SClientRect);
// отобразить растровое изображение, согласуй его с
// окном представления:
pDC->StretchBlt
(О, О,
ClientRect.right, ClientRect.bottom, SMamDC, 0, 0,
m_BitmapWidth, m_BitmapHeight, SRCCOPY);
// координаты верхнего левого угла
// прямоугольника приемника;
// ширина прямоугольника приемника;
// высота прямоугольника приемника;
// объект контекста устройства источника;
// координаты верхнего левого угла
// прямоугольника источника;
// ширина прямоугольника источника;
// высота прямоугольника источника;
// ход растровой операции
Функция OnDraw отображает растровое изображение так же, как и функция DisplayBitmap, рассмотренная в параграфе "Отображение растрового изображения". Однако вместо использования функции BitBit для перемещения растрового изображения без изменения его размеров, она использует функцию stretchBlt, чтобы скопировать растровое изображение в окно представления и сжать или растянуть его так, чтобы оно в точности разместилось внутри окна.
Наконец, в файле BitDemo.cpp добавьте обычный вызов функции SetWindowsText в функцию Initlnstance.
// Единственное окно приложения отображается и обновляется m_pMainWnd->ShowWindow(SW_SH0W); m_pMainWnd->UpdateWindow() ;
m_pMainWnd->SetWindowsText ("Bitmap Demo") ;
return TRUE;
I
Теперь программу BitDemo можно построить и выполнить.
Текст программы BitDemo
Листинги 20.1 — 20.8 содержат исходный текст программы В^Оето. Исходные файлы программы помещены в каталоге \BitDemo прилагаемого компакт-диска.
Листинг 20.1.
// BitDemo.h : главный файл заголовков приложения BITDEMO //
#if !defined(
AFX_BITDEMO_H_O955F7ED_A778_llDl_8OFC_00C0F6A83B7F_INCLUDEDJ
#define AFX_BITDEMO_H_0955F7ED_A778_11D1_80FC_00C0F6A83B7F_INCLUDED_
#if _MSC_VER > 1000 ipragma once
#endif // _MSC_VER > 1000
tifndef _AFXWIN_H_
#error include 'stdafx.h' before including this file for PCH fendif
tinclude "resource.h" // основные символические константы
/////////////////////////////////////////////////////////////////////// // класс CBitDemoApp:
// Смотрите реализацию этого класса в файле BitDemo.cpp //
class CBitDemoApp : public CWinApp {
public:
CBitDemoApp();
// Переопределения
// Переопределения виртуальных функций, сгенерированные
// мастером ClassWizard
//{{AFX_VIRTUAL(CBitDemoApp)
public:
virtual BOOL Initlnstance(); //}}AFX_VIRTUAL
// Реализация
//{{AFX_MSG(CBitDemoApp)
afx_msg void OnAppAbout();
// ПРИМЕЧАНИЕ - Мастер ClassWizard будет добавлять
// и удалять здесь функции-члены класса
//НЕ РЕДАКТИРУЙТЕ текст в этих блоках сгенерированного кода!
//})AFX_MSG
DECLARE_MESSAGE_MAP()
);
//////////////////////////////////////////////////////////////////////У
//((AFX_INSERT_LOCATION))
// Visual С++ вставит дополнительные объявления // сразу перед предыдущей строкой
#endif
// !defined(
// AFX_BITDEMO_H_0955F7ED_A778_11D1_80FC_00C0F6A83B7F_INCLUDED_)
Листинг 20.2.
// BitDemo.cpp : Определяет работу класса приложения
//
#include "stdafx.h" #include "ВitDemo.h"
#include "MainFrm.h" #include "BitDemoDoc.h" #include "BitDemoView.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE
static char THTS_FILE[] = _FILE_;
#endif
11111 /1111111111 /11111111 /11111 /11111111111/111111111 /11111111111111. /I класс CBitDemoApp
BEGIN_MESSAGE_MAP(CBitDemoApp, CWinApp)
//((AFX_MSG_MAP(CBitDemoApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
// ПРИМЕЧАНИЕ - Мастер ClassWizard будет добавлять
// и удалять здесь макросы обработки сообщений
// НЕ РЕДАКТИРУЙТЕ текст в этих блоках сгенерированного кода!
//))AFX_MSG_MAP
// Команды работы с файлами документов ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) END_MESSAGE_MAP()
11111111111111111 /111111111 /111111111111111111111111111111111 /111111) II Конструктор класса CBitDemoApp
CBitDemoApp::CBitDemoApp() (
// TODO: Здесь добавьте код конструктора. Поместите
// основные команды инициализации в функцию Initlnstance
Предыдущая << 1 .. 87 88 89 90 91 92 < 93 > 94 95 96 97 98 99 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100