Показать сообщение отдельно
Старый 14.05.2008, 15:22   #5  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Узнать ширину символа можно винАпи ф-цией GetCharABCWidths
Это в in logical units. Это не пиксели будут. Потом я например не совсем понимаю как массив ABC структур заполнить.

Цитата:
Есть \System Documentation\Classes\FormControl\calcControlSize
Насколько я понимаю, этот метод перегружается в наследниках и уже там выполняет свою непосредственную роль. А роль у него посчитать размер контрола, т.е. (наверное) с отступами на прорисовку границ кнопки (например).

Я вычисляю размер ширины строки так (не в Аксапте, но в принципе разницы не должно быть):
Посылаю в ListControl сообщение LVM_GETSTRINGWIDTH. Оно возвращает длину строки:
Цитата:
The LVM_GETSTRINGWIDTH message returns the exact width, in pixels, of the specified string.
Цитата:
lResult = SendMessage( // returns LRESULT in lResult
(HWND) hWndControl, // handle to destination control
(UINT) LVM_GETSTRINGWIDTH, // message ID
(WPARAM) wParam, // = 0; not used, must be zero
(LPARAM) lParam // = (LPARAM) (LPCSTR) psz;
);
ЗЫ Попробую на Аксапте сделать...мне стало интересно
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
За это сообщение автора поблагодарили: HorrR (1).