![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение размера кнопки [D7, WinXP]
Kinder © (2003-11-04 14:51:00)
Есть кнопка в программе. Как через WinAPI поулчить и изменить её размеры так, чтобы ширина кнопки была равна помещенному на нее тексту. Т.е. чтобы текст не залазил за границу кнопки.
Nick Denry (2003-11-04 15:49:00) [21]
кажется можно через SendMessage WM_GETFONT
Kinder (2003-11-04 15:46:00) [22]
AFont : HFONT
А что это за переменная и как её получить? Я так понимаю это хэнд шрифта для данного окна. Как его получить можно?
Kinder (2003-11-04 15:37:00) [23]
Попробую. Спасибо всем :)
Rouse_ (2003-11-04 15:16:00) [24]
См. GetTextMetrics
Желаю успехов
Игорь Шевченко (2003-11-04 15:12:00) [25]
function GetTextWidth (const Str : String; AFont : HFONT) : Integer;
var
DC : HDC;
OldFont : HFONT;
TextSize : SIZE;
begin
DC := GetDC (HWND_DESKTOP);
try
OldFont := SelectObject(DC, AFont);
try
if not GetTextExtentPoint32(DC, PChar(Str), StrLen(PChar(AStr)), TextSize) then
RaiseLastWin32Error;
Result := TextSize.cx;
finally
SelectObject(DC, OldFont);
end;
finally
ReleaseDC (HWND_DESKTOP, DC);
end;
end;
Kinder (2003-11-04 15:08:00) [26]
Понятно :) Но как определить ширину текста в пикселях? Вот что главное. Т,е. как определить саму ширину текта. Ведь это зависит от шрифта, его размера, жирности.
Nick Denry (2003-11-04 14:54:00) [27]
Написать свой алгоритм....
Примерные функции
int GetWindowText(
HWND hWnd, // handle of window or control with text
LPTSTR lpString, // address of buffer for text
int nMaxCount // maximum number of characters to copy
);
и, наверно
BOOL SetWindowPos(
HWND hWnd, // handle of window
HWND hWndInsertAfter, // placement-order handle
int X, // horizontal position
int Y, // vertical position
int cx, // width
int cy, // height
UINT uFlags // window-positioning flags
);