Вывод HBITMAP
Рисую на окне HBITMAP но если переместить окно за пределы экрана то пропадают все остальные контролы
Static и Button'ы я вроде смог вернуть, но ListView не получается.
Код:
procedure ShowBitMap(Wnd: HWND; Bit: HBITMAP; X, Y: Integer);
var
BitMap: TBitmap;
Width, Height: Integer;
DC, DCMem: HDC;
OldBitmap: HBITMAP;
begin
GetObject(Bit, SizeOf(BITMAP), @BitMap);
Height:=BitMap.bmHeight;
Width:=BitMap.bmWidth;
DC:=GetDC(Wnd);
DCMem:=CreateCompatibleDC(DC);
OldBitmap:=HBITMAP(SelectObject(DCMem, Bit));
//HBITMAP OldBitmap=SelectBitmap(hdc,Bit);
BitBlt(DC, X, Y, Width, Height, DCMem, 0, 0, SRCCOPY); //PATCOPY
SelectObject(DCMem, OldBitmap);
//SelectBitmap(hdcMem,OldBitmap);
ReleaseDC(Wnd, DC);
DeleteDC(DCMem);
end;
...
WM_PAINT:
begin
SetBkMode(GetDC(WindowCaptionStatic), TRANSPARENT);
HDCClient:=BeginPaint(UsersWindow, PaintStruct);
GetClientRect(UsersWindow, WndRect);
PaintStruct.rcPaint:=WndRect;
BitBlt(HDCClient, 0, 0, 315, 332, UsersBackground, 0, 0, SRCAND);
ReleaseDC(UsersWindow, HDCWindow);}
ShowBitMap(UsersWindow, UsersBackground, 0, 0);
EndPaint(UsersWindow, PaintStruct);
//Восстанавливаю элементы
GetWindowText(WindowCaptionStatic, TmpAChar, GetWindowTextLength(WindowCaptionStatic) + 1);
SetWindowText(WindowCaptionStatic, TmpAChar);
GetWindowText(AddUser, TmpAChar, GetWindowTextLength(AddUser) + 1);
SetWindowText(AddUser, TmpAChar);
GetWindowText(ChangeUser, TmpAChar, GetWindowTextLength(ChangeUser) + 1);
SetWindowText(ChangeUser, TmpAChar);
GetWindowText(DeleteUser, TmpAChar, GetWindowTextLength(DeleteUser) + 1);
SetWindowText(DeleteUser, TmpAChar);
GetWindowText(OK, TmpAChar, GetWindowTextLength(OK) + 1);
SetWindowText(OK, TmpAChar);
end;
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
|