Про GDI и MFC
От: DenY  
Дата: 05.01.02 11:52
Оценка:
У меня SDI приложение, работаю
с CScrollView. Имеется следующий
код в OnInitialUpdate():
*****
CBitmap* m_pBitmap; //это в классе вида
m_pBitmap=new CBitmap;//это в конструкторе
*****
CSize sizeTotal(5000,5000);
CClientDC dc(this);
OnPrepareDC(&dc);
CRect rectMax(0, 0,sizeTotal.cx,sizeTotal.cy);
m_pBitmap->CreateCompatibleBitmap(&dc, rectMax.right,
rectMax.bottom);
SetScrollSizes(MM_TEXT, sizeTotal);
*****
Здесь я пытаюсь изменить размер рабочей области и создать
растр точно такого же размера.
Беда в том, что функция CreateCompatibleBitmap() возвращает
ноль, т.е. не работает. Если же попробовать создать
растр поменьше (не 5000*5000, а, скажем, 2000*2000), то всё
работает! Помогите, плз., сделать так, чтобы работало с заданными
размерами (5000*5000 и более).
Напишите на _deny@mail.ru
Заранее благодарен!!!
Re: Про GDI и MFC
От: Serge Россия  
Дата: 05.01.02 14:13
Оценка: 9 (1)
Здравствуйте DenY, Вы писали:

DY> У меня SDI приложение, работаю

DY>с CScrollView. Имеется следующий
DY>код в OnInitialUpdate():
DY> *****
DY> CBitmap* m_pBitmap; //это в классе вида
DY> m_pBitmap=new CBitmap;//это в конструкторе
DY> *****
DY> CSize sizeTotal(5000,5000);
DY> CClientDC dc(this);
DY> OnPrepareDC(&dc);
DY> CRect rectMax(0, 0,sizeTotal.cx,sizeTotal.cy);
DY> m_pBitmap->CreateCompatibleBitmap(&dc, rectMax.right,
DY> rectMax.bottom);
DY> SetScrollSizes(MM_TEXT, sizeTotal);
DY> *****
DY> Здесь я пытаюсь изменить размер рабочей области и создать
DY>растр точно такого же размера.
DY> Беда в том, что функция CreateCompatibleBitmap() возвращает
DY>ноль, т.е. не работает. Если же попробовать создать
DY>растр поменьше (не 5000*5000, а, скажем, 2000*2000), то всё
DY>работает! Помогите, плз., сделать так, чтобы работало с заданными
DY>размерами (5000*5000 и более).
DY> Напишите на _deny@mail.ru
DY> Заранее благодарен!!!

Кстати, чтоб сообщение прочитали — вовсе не обязательно постить его во всех ветках форума...
Re: Про GDI и MFC
От: Sasparella США  
Дата: 05.01.02 15:46
Оценка:
Здравствуйте DenY, Вы писали:

Я с этим тоже сталкивался.

Причины 2

1. CreateCompatibleBitmap на Win9x не создает битмепы больше 16Mb. (RTFM)
2. На остальных операционках глючит по страшному с 3D акселераторами типа nVidia (точнее с их драйверами.)

Решить проблему мне лично так и не удалось (см мои постинги на эту тему в форумах тут же), а обойти пришлось так — юзайте CreateDibSection вместо CreateCOmpatibleBitmap. Работает железно.


Саша.
Re[2]: Про GDI и MFC
От: Sasparella США  
Дата: 05.01.02 15:48
Оценка:
Здравствуйте Sasparella, Вы писали:

Вот ссылка
http://rsdn.ru/forum/?gid=3&mid=6399&tid=0
Автор: Sasparella
Дата: 14.09.01


Саша.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.