Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.25;
Скачать: CL | DM;

Вниз

Как определить ширину текста в пункте меню?   Найти похожие ветки 

 
deema   (2003-12-14 19:20) [0]

Здравствуйте! При ручной прорисовке пункта меню хочу знать ширину текста в нем. Как это сделать?


 
Dimaxx ©   (2003-12-15 01:41) [1]

Удалено модератором


 
MBo ©   (2003-12-15 06:58) [2]

TCanvas.TextWidth


 
deema   (2003-12-15 23:31) [3]

> TCanvas.TextWidth

Во-первых, я использую только API и никакой канвы, а во-вторях, я рылся в исходниках Delphi 6, там создается окно класса TUtilWindow (или типа того) с шрифтом по умолчанию, а не с менюшным. В Delphi ширина определяется используя этот стандартный шрифт, а он может от менюшного отличаться очень даже сильно.
Может быть, переформулировать вопрос - Где взять шрифт, определенный для пунктов меню (может функция какая есть, или даже в реестре прочитать)?


 
ka3ax   (2003-12-16 10:01) [4]

BOOL GetTextExtentPoint(
HDC hdc, // handle to DC
LPCTSTR lpString, // text string
int cbString, // number of characters in string
LPSIZE lpSize // string size
);
определяет высоту и ширину текста на контексте hdc, при текущем выбранном в нем шрифте,
можно же и свой шрифт выбрать наверное...


 
deema   (2003-12-17 23:15) [5]

Спасибо, но чтобы взять hdc нужно сначала где-то раскопать окно с этим dc. Или где еще этот DC взять????????????????????


 
Игорь Шевченко ©   (2003-12-18 00:17) [6]


function GetMenuFont : HFONT;
var
NonClientMetrics: TNonClientMetrics;
begin
Result := 0;
if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then
Result := CreateFontIndirect(NonClientMetrics.lfMenuFont);
end;

function GetMenuTextWidth (const Str : String);
var
DC : HDC;
OldFont, MenuFont : HFONT;
TextSize : SIZE;
begin
DC := GetDC (HWND_DESKTOP);
MenuFont := GetMenuFont();
try
OldFont := SelectObject(DC, MenuFont);
try
if not GetTextExtentPoint32(DC, PChar(Str), Length(Str), TextSize)) then
RaiseLastWin32Error;
Result := TextSize.cx;
finally
SelectObject(DC, OldFont);
end;
finally
ReleaseDC (HWND_DESKTOP, DC);
DeleteObject(MenuFont);
end;
end;


LMD


 
deema   (2003-12-19 23:01) [7]

Спасибо, попробую...



Страницы: 1 вся ветка

Текущий архив: 2004.02.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
1-79869
WG
2004-02-10 14:50
2004.02.25
Как спрятать приложение в трэй (к часам ?)


1-80000
Checist [root]
2004-02-06 17:22
2004.02.25
Обращение к сылке


1-79798
Aks
2004-02-11 14:26
2004.02.25
trouble with Excel


14-80129
Ditrix
2004-02-02 16:36
2004.02.25
узнать каталог откуда запущена программа


3-79608
Ultra389
2004-02-02 10:31
2004.02.25
Экспорт в EXCEL