A formázandó űrlap kényszerítése

erőteljesen átírja az űrlapot

Tisztelt szakértők.
Hogyan kényszerítsük a fő formát egy MDI alkalmazásban? # 032; teljesen átrajzol. (Megváltoztatom a háttérképét).
Megpróbáltam - Frissítés, újrafelvétel, frissítés, érvénytelenítés. nem ez - csak a "megszállt" övezeti régiót redukálják. És mindent meg kell csinálnom.

Egy ellentétes kérdés, hogyan ragasztod a háttérképére?
Nem a TImage (Align = alClient), a MDIFormon keresztül.

Ha nem, remélem, akkor: SendMessage (ClientHandle, WM_ERASEBKGND, 0, 0);

nem, én ezt teszem:

Hívott SendMessage (fmMain.ClientHandle, WM_ERASEBKGND, 0, 0);
Az eredmény ugyanaz. Talán az egész az, hogy a hívás erre a funkcióra egy párbeszédablakból (nem fmMain) származik. és ebben az időben modális.

Megértettem, hogy az Ön kódja szerint könnyebb lenne megváltoztatni ezt:

eljárás TfmMain.ClientWndProc (var Message: TMessage);
var
hdcClient: HDC;
hbrOld: HBRUSH;
kezdődik
eset Message.Msg of
WM_ERASEBKGND: kezdődik
hdcClient: = GetDC (ClientHandle);
hbrOld: = SelectObject (hdcClient, CreatePatternBrush (imBackground.Picture.Bitmap.Handle));
FillRect (hdcClient, ClientRect, 0);
DeleteObject (SelectObject (hdcClient, hbrOld));
Eredmény: = 1;
végén;
más
Eredmény: = CallWindowProc (FPrevClientProc, ClientHandle, Msg, wParam, lParam);
végén;
végén;

Végül is, mindent úgy ítél meg, hogy "nyers" szeretné a ClientHandle-t, hagyja Win számít.
És akkor, egy hívás, hogy SendMessage (fmMain.ClientHandle, WM_ERASEBKGND, 0, 0); - a wParamnak szüksége lenne a HDC (GetDC (ClientHandle)) átvitelére, ahogy írja:

> Dc: = TWMEraseBkGnd (Message) .Dc;

megpróbálta és így működik, és egy párbeszédablakból is.

Kapcsolódó cikkek