Вы можете переопределить виртуальную функцию CControlBar::OnBarStyleChange
, чтобы обнаружить изменения в стиле панели управления (значения CBRS_XXX
- подробности см. В заголовочном файле <afxres.h>
).
Чтобы определить, является ли панель управления плавающей / закрепленной, проверьте стиль CBRS_FLOATING
. Для проверки горизонтальной / вертикальной ориентации используйте стили CBRS_ORIENT_HORZ
и CBRS_ORIENT_VERT
.
Итак, используя CToolBar
(который получен из CControlBar
) в качестве примера:
class CMyToolBar : public CToolBar {
public:
virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
};
void CMyToolBar::OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle)
{
// Call base class implementation.
CToolBar::OnBarStyleChange(dwOldStyle, dwNewStyle);
// Use exclusive-or to detect changes in style bits.
DWORD changed = dwOldStyle ^ dwNewStyle;
if (changed & CBRS_FLOATING) {
if (dwNewStyle & CBRS_FLOATING) {
// ToolBar now floating
}
else {
// ToolBar now docked
}
}
if (changed & CBRS_ORIENT_ANY) {
if (dwNewStyle & CBRS_ORIENT_HORZ) {
// ToolBar now horizontal
}
else if (dwNewStyle & CBRS_ORIENT_VERT) {
// ToolBar now vertical
}
}
}
Надеюсь, это поможет!