Здравствуйте, уважаемые эксперты! Возвращаюсь к своему вопросу №770. Мне посоветовали использовать класс CImage вместо CBitmap, только вот беда в том, что в MSDN я не нашел помощи по этому классу ;( Может, кто-нибудь кинет ссылочку, где рыть надо. И еще не подскажет ли кто, в чем проблема. У меня есть два окна: одно - родительское, другое - дочернее. В каждом классе этих окон есть указатель на объект CBitmap, который должен отображаться в окне. В один момент мне надо в битмап дочернего окна (оно скрыто) скопировать куски битмапа родительского и показать дочернее окно. Изображение копируется, но при появлении дочернего окна оно пустое. Если окно свернуть и развернуть, изображение появится. В чем лажа? С уважением, Валера. ЗЫ: в приложении приведена данная процедура. CPostCardDlg - родительское окно; CEnlargedWnd
- дочернее окно. В описании классов обоих окон присутствует CBitmap *pBmp;
Здравствуйте, Валера! Ne prosmatrival source vnimatel'no, no dumayu problema v tom, chto nel'zya vybirat' tot je samy bitmap dlya neskol'kix raznyx CDC. V MSDN-e prosmotrite SelectObject() funkciyu. Ответ отправлен: 19.05.2003, 13:32 Отправитель: Hayk Отвечает Knignick
Приветствую Вас, Валера! 1)CImage? Я тоже что-то такого не нашел.. 2)Думается твое окно "не в курсе", что ты там что-то делал с CBitmap попробуй вызвать InvalidateRgn перед UpdateWindow
Ответ отправлен: 19.05.2003, 16:43 Отправитель: Knignick Отвечает Ramzes
Приветствую Вас, Валера! Насколько я помню тебе прислали ссылку на http://www.jeffheaton.com/source/sbitmap.c программа записывает CBitmap в файл. А по второрму вопросу, у тебя скорей всего проблемы с перерисовкой, попробуй после ShowWindow вызвать InwalidateRect(...)
Ответ отправлен: 19.05.2003, 12:37 Отправитель: Ramzes Отвечает DiGiT[old]
Добрый день, Валера! В MSDN от .NET точно есть. Вводишь CImage в строку Look for страницы Index. А там InvalidateWindow надо посылать наверное :)
Приложение: Ответ отправлен: 20.05.2003, 04:03 Отправитель: DiGiT[old]
Вопрос № 786
Здравствуйте, уважаемые эксперты! (предыдущий вопрос №785) Спасибо всем кто откликнулся. Ваши советы помогли решить часть проблемы: InvalidateRect после UpdateWindow сработал и окно уже показывается с рисунком (хотя я считал, что раз окно только что создано, то оно должно обязательно перерисоваться при UpdateWindow). Насчет CImage: видимо, он доступен только в NET-версии, а я сижу на 6. Насчет sbitmap.c: у меня записывается вместо изображения черный прямоугольник тех же самых размеров, наверное, что-то не в порядке с CDC. И еще хотел спросить: а если битмап очень большой и не влазит в окно, как окно сделать скроллируемым? С уважением, Валера.
Доброе время суток, Валера! CImage class is defined in atlimage.h, etot zagolovok sushectvuet tol'ko v postavke VS .Net. Naschet scrollinga.... Variant No.1 : Ispol;zuy class CScrollView, ochen' udoben esli konechno ispol'zuyesh arxitekturu Doc/View. Zadayesh razmer bitmapa, i on avtomaticheski stavit razmery xodunkov i upravlyayet ixnimi poziciami. Variant No.2 : Ispol'zuy window style WS_HSCROLL i WS_VSCROLL. Posle zadaniya etix stiley u tebya poyavyatsya xodunki. Obrabatyvayesh message-i WM_HSCROLL, WM_VSCROLL. Pri etom ispol'zuyetsya struktura SCROLLINFO. Au Revoir ! Ответ отправлен: 20.05.2003, 12:44 Отправитель: Hayk Отвечает Avl2k
Приветствую Вас, Валера! 2. CImage поставляется в ATL с VS.NET. Его реализация частично использует GDI+ (в частности, для сохранения и загрузки). К тому же, некоторые из функций не будут работать под Win95/Win98. 3. Я проверял SaveBitmap из sbitmap.c на 24-битных картинках под Win98/2000 - работает. Проверьте, работает ли у вас следующий код: ... CBitmap bmp; VERIFY( bmp.Attach( (HBITMAP)::LoadImage( NULL, "02040016.BMP", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ) ) ); SaveBitmap("zzz.bmp", bmp); ... После этого откройте zzz.bmp не своей программой, а внешним viewer'ом :) 4. a) Если Вы используете MFC и view, то наследуйте свой view от CScrollView и вызывайте в нужном месте SetScrollSizes. b) Если Вы не используете view, то удостоверьтесь, что Ваш CWnd (или HWND) имеет стили WS_HScroll/WS_VScroll и обрабатывайте
WM_VScroll и WM_HScroll. С уважением, Avl2k.
Ответ отправлен: 20.05.2003, 12:46 Отправитель: Avl2k Отвечает Ramzes
Здравствуйте, Валера! Насчет первого вопроса не знаю что и сказать, у меня все нормально записывается. Пошли исходник, может разберемся. А насчет скролла посмотри функции SetScrollSizes или SetScrollInfo. Ответ отправлен: 20.05.2003, 13:21 Отправитель: Ramzes
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.