Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 264
от 23.05.2003, 11:20

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 792
Отправлено ответов: 1786
Активность: 225.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Hayk
Статус: Начальный
Общий рейтинг: 112.34
[Подробней >>]
Knignick
Статус: Доверительный
Общий рейтинг: 113.62
[Подробней >>]
Ramzes
Статус: Опытный
Общий рейтинг: 128.23
URL: Microsoft homepage
[Подробней >>]
 
DiGiT[old]
Статус: Профессиональный
Общий рейтинг: 111.63
[Подробней >>]
Avl2k
Статус: Опытный
Общий рейтинг: 125.34
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 785. Здравствуйте, уважаемые эксперты! Возвращаюсь к своему вопросу №770. Мне посоветовали использовать ... (ответов: 4)
Вопрос № 786. Здравствуйте, уважаемые эксперты! (предыдущий вопрос №785) Спасибо всем кто откликнулся. Ваши советы... (ответов: 3)

Вопросов: 2, ответов: 7


 Вопрос № 785

Здравствуйте, уважаемые эксперты!
Возвращаюсь к своему вопросу №770.
Мне посоветовали использовать класс CImage вместо CBitmap, только вот беда в том, что в MSDN я не нашел помощи по этому классу ;(
Может, кто-нибудь кинет ссылочку, где рыть надо.
И еще не подскажет ли кто, в чем проблема.
У меня есть два окна: одно - родительское, другое - дочернее.
В каждом классе этих окон есть указатель на объект CBitmap, который должен отображаться в окне.
В один момент мне надо в битмап дочернего окна (оно скрыто) скопировать куски битмапа родительского и показать дочернее окно. Изображение копируется, но при появлении дочернего окна оно пустое. Если окно свернуть и развернуть, изображение появится. В чем лажа?
С уважением, Валера.
ЗЫ: в приложении приведена данная процедура.
CPostCardDlg - родительское окно;
CEnlargedWnd - дочернее окно.
В описании классов обоих окон присутствует CBitmap *pBmp;


Приложение:


Вопрос отправлен: 19.05.2003, 11:53
Отправитель: Валера (sp999@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Hayk

Здравствуйте, Валера!
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.
И еще хотел спросить: а если битмап очень большой и не влазит в окно, как окно сделать скроллируемым?
С уважением, Валера.



Вопрос отправлен: 20.05.2003, 06:54
Отправитель: Валера (sp999@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Hayk

Доброе время суток, Валера!
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.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (40)
C / C++ (32)
Perl (7)
Builder / Delphi (18)
Pascal (31)
Basic / VBA (15)
Java / JavaScript (12)
PHP (7)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (44)
Windows NT/2000/XP (33)
"Железо" (32)
Поиск информации (16)
Администратору
Windows NT/2000/XP (21)
Linux / Unix (10)
Юристу
Гражданское право (5)
Семейное право (3)
Трудовое право (4)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2003 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное