Поправлено форматирование текста. — SchweinDeBurg
Если в винде стоит настройка "Перетаскивать содержимое окна при перетаскивании", то при перетаскивании окна двигается только рамка, причем она становится серего цвета, с дырочками(этакая имитация полупрозрачности?), или когда перетаскиваешь сплиттеры в VisualStudio — такой же эффект.
Вопрос в следующем — я создал свой сплиттер на основе CStatic, переопределил его отрисовку вот так —
void CSizeSplitter::OnPaint()
{
CPaintDC dc(this);
if(GetCapture() == this)
{
dc.FillSolidRect(0, 0, GetControlRect().Width(), GetControlRect().Height(), ::GetSysColor(COLOR_3DDKSHADOW));
dc.Draw3dRect(0, 0, GetControlRect().Width(), GetControlRect().Height(), ::GetSysColor(COLOR_3DHILIGHT), ::GetSysColor(COLOR_3DDKSHADOW));
}
else
{
dc.FillSolidRect(0, 0, GetControlRect().Width(), GetControlRect().Height(), ::GetSysColor(COLOR_3DFACE));
dc.Draw3dRect(0, 0, GetControlRect().Width(), GetControlRect().Height(), ::GetSysColor(COLOR_3DHILIGHT), ::GetSysColor(COLOR_3DDKSHADOW));
}
}
все прекрасно, рисуется 3D-прямоугольник системными цветами если сплиттер просто висит на форме, и темный(тоже системный), если сплиттер перемещается допустим мышкой(тогда на нем установлен Capture).
Но! Хотелось бы при перетаскивании отображать его в таком же стиле, как описано в начале — как это реализовать?

— может есть способ отрисовки на CDC *dc, что нибудь типо DrawXXXRect, или наоборот, за такую отрисовку отвечает CBrush *br, а потом этот br использовать при отрисовке на dc?
Шарился на гугле — ничего полезного не нашел...может я неправильно вопрос задавал?...
11.03.08 17:48: Перенесено модератором из 'Пользовательский интерфейс: проектирование, usability' — Кодт