Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка битмапа в Picture Control

441
05 октября 2002 года
Doc__
82 / / 20.06.2000
Есть диалоговое окно. В нем Picture Control. Загружаю туда картинку:

void DrawPicture(HWND hWnd)
{
static HANDLE hImage, hOldBitmap;
RECT Rect;
BITMAP Bitmap;
static HDC hDC, hCompatibleDC;

hDC=GetDC(GetDlgItem(hWnd, PIC_SOURCE));
hImage=LoadImage(NULL, FileNAME, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
GetObject(hImage, sizeof(BITMAP), &Bitmap);
hCompatibleDC=CreateCompatibleDC(hDC);
hOldBitmap=SelectObject(hCompatibleDC, hImage);
GetClientRect(GetDlgItem(hWnd, PIC_SOURCE), &Rect);
StretchBlt(hDC, 0, 0, Rect.right, Rect.bottom, hCompatibleDC, 0, 0, Bitmap.bmWidth, Bitmap.bmHeight, SRCCOPY);
SelectObject(hCompatibleDC, hOldBitmap);
DeleteDC(hCompatibleDC);
DeleteObject(hImage);
ReleaseDC(GetDlgItem(hWnd, PIC_SOURCE), hDC);
}


Все, в общем-то, работает нормально, но когда окно частично или полностью перекрывается, приходится заново загружать картинку, иначе она не отображается. 8( Что делать? Заранее благодарен.

P.S. Вышеописанная функция вызывается при получении сообщения WM_PAINT.
1.8K
07 мая 2003 года
Jeff
94 / / 22.04.2003
Цитата:
Originally posted by Doc__
Есть диалоговое окно. В нем Picture Control. Загружаю туда картинку:

void DrawPicture(HWND hWnd)
{
static HANDLE hImage, hOldBitmap;
RECT Rect;
BITMAP Bitmap;
static HDC hDC, hCompatibleDC;

hDC=GetDC(GetDlgItem(hWnd, PIC_SOURCE));
hImage=LoadImage(NULL, FileNAME, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
GetObject(hImage, sizeof(BITMAP), &Bitmap);
hCompatibleDC=CreateCompatibleDC(hDC);
hOldBitmap=SelectObject(hCompatibleDC, hImage);
GetClientRect(GetDlgItem(hWnd, PIC_SOURCE), &Rect);
StretchBlt(hDC, 0, 0, Rect.right, Rect.bottom, hCompatibleDC, 0, 0, Bitmap.bmWidth, Bitmap.bmHeight, SRCCOPY);
SelectObject(hCompatibleDC, hOldBitmap);
DeleteDC(hCompatibleDC);
DeleteObject(hImage);
ReleaseDC(GetDlgItem(hWnd, PIC_SOURCE), hDC);
}


Все, в общем-то, работает нормально, но когда окно частично или полностью перекрывается, приходится заново загружать картинку, иначе она не отображается. 8( Что делать? Заранее благодарен.

P.S. Вышеописанная функция вызывается при получении сообщения WM_PAINT.



Если под MFC делаешь:
попробуй в OnInitDialog()

CStatic m_bitmap; //переменная для ImageControl

HANDLE hImage = LoadImage( NULL , BitmapFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
m_bitmap.SetBitmap( (HBITMAP)hImage );

У меня картинка появляется, и не пропадает при перерисовке окна.

если нет, то ничем помочь не могу

1.8K
08 мая 2003 года
alex-better
54 / / 08.03.2003
Цитата:
Originally posted by Jeff

Если под MFC делаешь:
попробуй в OnInitDialog()
-------------------------
У меня картинка появляется, и не пропадает при перерисовке окна.
если нет, то ничем помочь не могу



Слушай, OnInitDialog() - это функция не перерисовки, а настройки. Она запускается один раз перед запуском программы(д.окна...):!!!:
А какая из них для перерисовки Я и сам хочу узнать...:-?
Я пользуюсь DoDataExchange(CDataExchange* pDX), хотя это, наверно, неправильно.;)
Класные книги по С++:
http://insertsoft.narod.ru/</a>
<a"]http://anatolix.naumen.ru/[/url]

1.8K
09 мая 2003 года
Jeff
94 / / 22.04.2003
Цитата:
Originally posted by alex-better


Слушай, OnInitDialog() - это функция не перерисовки, а настройки. Она запускается один раз перед запуском программы(д.окна...):!!!:
А какая из них для перерисовки Я и сам хочу узнать...:-?
Я пользуюсь DoDataExchange(CDataExchange* pDX), хотя это, наверно, неправильно.;)
Класные книги по С++:
http://insertsoft.narod.ru/</a>
<a"]http://anatolix.naumen.ru/[/url]



Если картинка не изменяется, то грузи ее в OnInitDialog() ( хотя и сам знаешь ), а если меняется, то грузи ее моим способом при необходимости поменять. Если не ошибаюсь, то у меня была такая же задача как и у тебя: в каком-то случае надо загрузить какую-то картинку ( у меня тыкаешь на bmp файле в списке, а прога этот bmp и загружает )

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог