Текущий архив: 2004.07.04;
Скачать: CL | DM;
Вниз
Не могу нормально изменить размеры окна Найти похожие ветки
← →
Aleksandr. (2004-05-27 13:39) [0]Функцией CreateWindowEx создаю окно, затем в него пишется текст. Процедура, записываюшая в него текст посылкой сообщения, сначала вычисляет ширину текста по DC этого окна:
procedure WriteWaiter(MsgText : string);
var
P : size;
DC : HDC;
R, T : TRect;
begin
if WaitFormHandle<>0 then begin //Нэндл апишного окна
DC:=GetDC(WaitFormHandle);
try
GetTextExtentPoint32(DC,PChar(MsgText),length(MsgText),P);
finally
ReleaseDC(WaitFormHandle,DC)
end;
GetWindowRect(WaitFormHandle,T); //предыдущий размер
if P.cx>T.Right-T.Left then begin //
GetWindowRect(GetDesktopWindow,R); //размер экрана
SetWindowPos(WaitformHandle,0,R.Left+((R.Right-P.cx) div 2),R.Top+((R.Bottom-P.cy) div 2),
P.cx,T.Bottom-T.Top,{SWP_NOACTIVATE OR} swp_DrawFrame);
UpdateWindow(WaitFormHandle)
end;
// посылаем текст надстройкой над PostMessage
PostStrMessage(WaitFormHandle,WM_SetUserText,MsgText);
end
end;
И что-то не так с этим кодом, потому что окно получается срезанное справа (нет рамки), а при посылке следующего текста оно смещается влево, и текст в нем, рисующийся
DrawText(DC,PChar(s),-1,R,dt_Center+dt_VCenter+DT_END_ELLIPSIS)
после смены размера теряет выключку по центру.
← →
Игорь Шевченко © (2004-05-27 13:59) [1]
> GetWindowRect(WaitFormHandle,T); //предыдущий размер
Может, GetClientRect ?
← →
Aleksandr. (2004-05-27 14:14) [2]А чем отличается?
← →
Shkut © (2004-05-27 17:41) [3]А чем отличается Дом от квартиры?
Ответ: доступными размерами.
WindowRect - размеры всего окна, с рамочками и т. д.
ClientRect - свободная для операций область. (грубо)
Страницы: 1 вся ветка
Текущий архив: 2004.07.04;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.024 c