-
Один человек задал мне вопрос, который хочу переадресовать знатокам WinAPI (сам смог ответить только предположительно).
Есть большое окно W1. Поверх него есть маленькое окошко W2. Это окошко W2 можно таскать мышкой в пределах окна W1. Требуется сделать так, чтобы W2 обрезалось, когда достигает границы W1 (аналогично тому, как обрезается обычное окно при выходе за десктоп).
Если окошку W2 установить стиль CHILD, то нужное поведение достигается автоматически. Но фокус в том и состоит, что окошко W2 - прозрачное и установить ему CHILD нельзя (пропадает прозрачность).
В связи с этим вопрос - как произвести обрезку окошка W2? Или как сделать его прозрачным при установленном стиле CHILD ?
-
а просто назначить парента обычному? procedure TForm1.FormCreate(Sender: TObject);
begin
Form2:= TForm2.Create(self);
Form2.Parent:= Form1;
Form2.Show;
end; не WinAPI, но прекрасно обрезается и таскается... ничего формам в свойствах не менять все по дефолту.
-
> sniknik © (22.01.16 01:21) [1]
Прозрачность пропадет
-
> Юрий Зотов © (21.01.16 23:32)
Ну не знаю насчет обрезалось, но можно сделать, чтоб таскалось только в пределах "родительского окна". WM_MOVING и WM_SIZING обрабатывая, это можно сделать.
-
-
-
По порядку давайте? Окошко своё или чужое? Если что - можно и просто рисовать окошко на форму.
> Или как сделать его прозрачным при установленном стиле CHILD?
Начиная с Win8 само работает. До неё - никак.
-
> Юрий Зотов © (21.01.16 23:32) > достигается автоматически. Но фокус в том и состоит, что > окошко W2 - прозрачное и установить ему CHILD нельзя (пропадает прозрачность).
А если просто фон не отрисовывать в чайлд-окошке? оно же станет как бы прозрачным. Или я что-то упускаю?
|