Главная страница
    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.45 MB
Время: 0.034 c
6-80072
Term!
2003-12-22 09:50
2004.02.25
Как узнать IP подключенных к IIS компов?


1-80020
Построение дерева
2004-02-11 10:48
2004.02.25
Построение дерева в TreeView


1-79913
Гость-342
2004-01-28 14:51
2004.02.25
Рисуем в Memo. Затруднительный вопрос.


1-79705
человек в сети
2004-02-12 00:50
2004.02.25
как разукрасить текст? - очень нужно ...


1-79942
Zemal
2004-02-09 16:35
2004.02.25
Как получить из консольного приложения путь к исполняемому файлу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский