Форум: "Начинающим";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];
ВнизКак установить размеры клиентской части окна? Найти похожие ветки
← →
Б (2009-12-17 19:52) [0]Здрасти!
Имеется окно. (не VCL)
Как установить размеры его клиентской части?
Т.е. без заголовка и бордера.
Функции SetClientRect нету.
← →
Eraser © (2009-12-17 20:23) [1]> [0] Б (17.12.09 19:52)
можно глянуть как сделано в VCL и реализовать так же.
← →
DVM © (2009-12-17 20:37) [2]
> Б (17.12.09 19:52)
WM_NCCalcRect
← →
Б (2009-12-17 21:12) [3]
> WM_NCCalcRect
Delphi говорит неизвезвестный индификатор.
← →
Б (2009-12-17 21:18) [4]Может Вы перепутали с WM_NCCALCSIZE?
← →
DVM © (2009-12-17 21:46) [5]
> Может Вы перепутали с WM_NCCALCSIZE?
Да, перепутал. Вот видишь сам нашел.
← →
Б (2009-12-17 21:47) [6]Вроде бы нашёл эту функцию - AdjustWindowRect.
← →
Б (2009-12-17 21:49) [7]Решил протестить на VCL окне.
Нажимаю кнопку и ничего не менятся. Что не так?
procedure TForm1.Button1Click(Sender: TObject);
Var
R: TRect;
begin
SetRect(R, 0, 0, 300, 250);
AdjustWindowRect(R, GetWindowLong(Handle, GWL_STYLE), False);
// False говорит, что окно без меню.
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Caption:= IntToStr(ClientWidth) + " : " + IntToStr(ClientHeight);
end;
← →
DVM © (2009-12-17 21:56) [8]
> Нажимаю кнопку и ничего не менятся. Что не так?
Эта функция вычисляет требуемые размеры прямоугольника, но не меняет окно.
← →
Б (2009-12-17 22:15) [9]Усё работает. ;)
Теперь окно создаётся во весь экран.
procedure TForm1.Button1Click(Sender: TObject);
Var
R: TRect;
begin
SetRect(R, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
AdjustWindowRect(R, GetWindowLong(Handle, GWL_STYLE), False);
MoveWindow(Handle, R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top , True);
end;
← →
Б (2009-12-17 22:18) [10]А что лучше использовать AdjustWindowRect или AdjustWindowRectEx?
В последнем ещё передается eX-стиль окна.
У моего окна расширенный стиль меняется. И поэтому думаю надо применять последнюю функцию? Да?
← →
DVM © (2009-12-17 22:19) [11]
> Б (17.12.09 22:15) [9]
> Теперь окно создаётся во весь экран.
Цель всех этих манипуляций - создать окно на весь экран? Если да, то выбран явно не лучший способ.
← →
Б (2009-12-17 22:21) [12]
> Цель всех этих манипуляций - создать окно на весь экран?
> Если да, то выбран явно не лучший способ.
Да, цель именно такая.
Подробнее здесь: http://delphimaster.net/view/2-1260506010/
А как тогда сделать? Максимизировать что ли?
← →
DVM © (2009-12-17 22:21) [13]
> Да?
чего ты хочешь добиться в результате? И что ты имеешь в начале?
← →
DVM © (2009-12-17 22:24) [14]
> А как тогда сделать? Максимизировать что ли?
Менять стили окна попутно с размерами и положением. Можно и максимизировать. Не вижу причин мучать клиентскую область.
← →
Б (2009-12-17 22:33) [15]> Можно и максимизировать
Попробуем.
ShowWindow(Handle, SW_SHOWMAXIMIZED);
Только шапка остаётся, но т.к. стили окна меняются не страшно.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c