|
#1
|
||||
|
||||
Вывод 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. Если вы программист - делать вид, что так было задумано. |