ПредишенСледващото

насилствено пречертаване форма

Уважаеми експерти.
Как ще принуди основната форма в MDI-прилагането # 032; напълно преначертани. (I променя тапета).
Опитах - Update, пребоядисване, Обновяване, Invalidat. Не - преобразена само "зает" зона на формуляра. И аз трябва да го всички преначертае.

И още един въпрос, как да го kleish тапети?
Не чрез TImage (Align = alClient), на MDIForm.

Ако не, аз се надявам, тогава: SendMessage (ClientHandle, WM_ERASEBKGND, 0, 0);

Не, аз правя така:

Наречен SendMessage (fmMain.ClientHandle, WM_ERASEBKGND, 0, 0);
Ruzultaty - едни и същи. Може би цялата Номерът е, че тази покана е направен от диалогов прозорец (не fmMain). и тя е в този момент модален.

Аз разбирам, че смятате, че кодът ще бъде по-лесно да го смените с:

процедура TfmMain.ClientWndProc (VAR Съобщение: TMessage);
Var
hdcClient: HDC;
hbrOld: HBRUSH;
започвам
При Message.Msg на
WM_ERASEBKGND: започнете
hdcClient: = GetDC (ClientHandle);
hbrOld: = SelectObject (hdcClient, CreatePatternBrush (imBackground.Picture.Bitmap.Handle));
FillRect (hdcClient, ClientRect, 0);
DeleteObject (SelectObject (hdcClient, hbrOld));
Резултати: = 1;
приключи;
още
Резултати: = CallWindowProc (FPrevClientProc, ClientHandle, Msg, wParam, lParam);
приключи;
приключи;

В действителност, ако се съди по всичко, вие "плочки" искат ClientHandle, Win да си позволи да се брои.
И след това, по време на разговор, за да SendMessage (fmMain.ClientHandle, WM_ERASEBKGND, 0, 0); - би било необходимо да се предаде wParam HDC (GetDC (ClientHandle)), така че да ти пиша:

> Dc: = TWMEraseBkGnd (ЛС) .Dc;

Опитах се по този начин, и че работи до и от диалоговия прозорец също.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!