Автор: cheops (24.01.2007 в 22:19)
Понимаете там... картинка рисуется один раз, после этого, при срабатывании события WM_PAINT, перерисовываются только те участки которые изменились... Грубо говоря тащите вы окно и видите, что наложения других окон нет, размер не изменяется... в этом случае вы ничего не перерисовываете, а если требуется перерисовать - перерисовывайте. WM_PAINT может сотню раз сработать пока окно тащите... попробуйте переместить код отрисовки в события отображения окна WM_SHOWWINDOW и событие изменения его размера WM_SIZE (я тут вызов LoadBitmap() в WinMian() вынес)
switch(iMsg)
{
case WM_SHOWWINDOW:
case WM_SIZE:
hDc = BeginPaint(hWnd, &ps);
DrawBitmap(hDc, bmPicture, 100, 100);
EndPaint(hWnd, &ps);
return 0;
case WM_PAINT :
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
|
В этом случае изображение будет отрисовываться только при отображении окна и при изменени его размера... правда ещё потерю фокуса нужно обработать - иначе перекрытие другими окнами будет затирать окно.