Например: я хотел бы точно знать, какие системные метрики использовать, чтобы знать, насколько широкими будут границы окна. При заданном наборе визуальных стилей, какие границы будут отображаться и насколько они будут широки (какие системные метрики могут быть запрошены, чтобы точно и правильно определить, насколько широкими они будут)?
Точно так же, для кнопки, насколько широки ее границы в различных состояниях? Используете разные темы? Какие системные метрики или функции темы могут дать мне абсолютно правильный ответ о том, насколько широко, какова высота, сколько и какие смещения?
Вообще говоря, мой код пользовательского интерфейса обычно содержит такие вещи, как:
myrect.Offset(4,4); // empirical evidence indicates it's actually 4 more pixels per side that Windows adds in but doesn't tell me about...
Я ненавижу такой код - заваленный магическими числами, которые могут меняться в зависимости от версии Windows, от того, включен Aero или нет, от того, использует ли клиент эту тему или эту тему, или использует режим большого шрифта / высокого разрешения, или нет и т. д.
Но я за 15 с лишним лет программирования Windows GUI никогда не видел действительно хороших технических документов, диаграмм или диаграмм, описывающих фактическую структуру всех стандартных устройств. элементы управления окнами и откуда берутся метрики их различных визуальных частей.
Кто-нибудь знает о ресурсе, даже подобном этому? Белая бумага? Диаграмма? Подробное обсуждение в блоге? Что-нибудь?
Спасибо за любую помощь, вы можете иметь!
РЕДАКТИРОВАТЬ: идея руководства GUI на самом деле не описывает внутреннюю композицию визуальных частей элементов управления - только их общий размер и расстояние между элементами управления.
Мне бы очень хотелось иметь что-то, что в мельчайших деталях описывает размеры границ, смещения и какие системные метрики контролируют каждую из этих вещей.