C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 145 - Дальше Читаем растр с диска / MFC шаг за шагом / Visual C++

Шаг 145 - Дальше Читаем растр с диска

	Суббота 9.00 такое классное утро. Так хорошо спится. Только вот 
	телефон рядом с диваном :-(	так поспать и не дали :-((((  
	Суббота 19:50 вот и новые шаги готовы :-))) 
Ну что, попробуем наш еле живой класс на предмет чтения и помещения изображения на экран. Давайт создадим пункт меню типа Read BMP. Вот где.

145_1.gif (1097 b)

Объявляем указатель на описание нашего класса.

// TestDibView.h : interface of the CTestDibView class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_TESTDIBVIEW_H__DE26E62D_F772_11D3_B050_000001260696__INCLUDED_)
#define AFX_TESTDIBVIEW_H__DE26E62D_F772_11D3_B050_000001260696__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "dib.h"
......
Ссылку на класс в классе вида.
class CTestDibView : public CView
{
...........

// Operations
public:
    CDib *cbmfile;
..........
}
Теперь конструктор и присвоение этой перменной значения NULL.
CTestDibView::CTestDibView()
{
    // TODO: add construction code here
    cbmfile=NULL;
}
По нажатию на пункт меню
void CTestDibView::OnStepsReadbmp() 
{
	if (cbmfile!=NULL) delete cbmfile;
	cbmfile = new CDib("c:\\windows\\my.bmp");
	RedrawWindow();
}
И функция рисования.
////////////////////////////////////////////////////
// CTestDibView drawing

void CTestDibView::OnDraw(CDC* pDC)
{
	CTestDibDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (cbmfile!=NULL)
	{
	StretchDIBits(pDC->m_hDC,10,10,100,100,0,0,100,100,cbmfile->lpBMP ,cbmfile->lpInfo,DIB_RGB_COLORS,SRCCOPY);  
	}
	// TODO: add draw code for native data here
}

Из-за того, что когда я писал шаг меня отвлекли я проспал распределение памяти в CDib.cpp, вот необходимые изменения.

#include "windowsx.h"
.......
void CDib::LoadFile(CString filename)
{
	.....
	BYTE* ptrBmp = (BYTE*)GlobalAllocPtr(GMEM_MOVEABLE,sizebmp);
	..... 
}

Проверим ??? Только не забудьте указать имя своего BMP файла.

145_2.gif (2274 b)

С нашим классом просто. Создаем его и выводим на экран в функции OnDraw с помощью StretchDIBits.

Ну наконец получилось. Если Вы заметили я очень быстро пробежался по многим вопросам, которым нужно уделить больше внимания. Я попробую немного попозже. Несмотря на то, что сегодня суббота меня честно говоря достали. Всё-таки работать тоже надо иногда. То одному чего-то надо, то другому чего-то надо. Вообщем караул. Так что за ошибки извеняйте. Я в свою очередь обещаю описать все мутные вопросы, которые встречались здесь в подробностях.


Загрузить проект | | |
Автор Каев Артем.
[AD]