var MinMaxInfo : PMinMaxInfo;
...
WM_GETMINMAXINFO:
begin
//В этом сообщении через LParam передаться ссылку на структуру LPMINMAXINFO
MinMaxInfo := Pointer(LParam);
//значения которой мы изменяем
MinMaxInfo^.ptMinTrackSize.X := 300;
MinMaxInfo^.ptMinTrackSize.Y := 200;
//После чего измененная структура читается ядром
Exit(0);
end;
Как ограничить размер окна?
я регистрирую класс, создаю окно. необходимо сделать ограничение на минимальный размер окна (чтобы элементы внутри окна не искажались). как это можно сделать?
можно обрабатывать сообщение WM_SIZING
WM_GETMINMAXINFO =)
lifs,Onni а можно поподробнее представить код,я пробовал обработать и то и то,но получилось негусто((((
Код:
Можно еще обрабатывать WM_WINDOWPOSCHANGING, оно посылается до того как положения или размеры окна изменятся и содержит структуру с новым положением окна. В отличии от GETMINMAXINFO оно посылается многократно.
Код:
var WindowPos: PWindowPos;
...
WM_WINDOWPOSCHANGING:
begin
WindowPos:= Pointer(LParam);
if WindowPos^.cx < 320 then
WindowPos^.cx := 320;
if WindowPos^.cy < 200 then
WindowPos^.cy := 200;
Exit(0);
end;
...
WM_WINDOWPOSCHANGING:
begin
WindowPos:= Pointer(LParam);
if WindowPos^.cx < 320 then
WindowPos^.cx := 320;
if WindowPos^.cy < 200 then
WindowPos^.cy := 200;
Exit(0);
end;
Я сделал так:
Код:
case WM_SIZING:
{
RECT rc;
GetWindowRect(hWnd, &rc);
*((LPRECT)lParam) = rc;
}
return 0;
case WM_MOVING:
{
RECT rc;
GetWindowRect(hWnd, &rc);
*((LPRECT)lParam) = rc;
}
return 0;
{
RECT rc;
GetWindowRect(hWnd, &rc);
*((LPRECT)lParam) = rc;
}
return 0;
case WM_MOVING:
{
RECT rc;
GetWindowRect(hWnd, &rc);
*((LPRECT)lParam) = rc;
}
return 0;
сейчас попробую ваш вариант(правда на С++:))
Код:
case WM_WINDOWPOSCHANGING:
{
WINDOWPOS *WindowPos= (WINDOWPOS*)LParam;
if WindowPos->cx < 320 { WindowPos->cx = 320; }
if WindowPos->cy < 200 { WindowPos->cy = 200; }
}
{
WINDOWPOS *WindowPos= (WINDOWPOS*)LParam;
if WindowPos->cx < 320 { WindowPos->cx = 320; }
if WindowPos->cy < 200 { WindowPos->cy = 200; }
}
Спасибо,плюсанул в репу