У меня есть CFrameWnd с диалоговой панелью, и я бы хотел определить область рисования (исключая пространство, используемое диалоговой панелью), поэтому я могу рисовать его, не перекрываясь диалоговой панелью. Как я могу это сделать? GetClientRect()
, похоже, также покрывает область с клиентом, и я не вижу никаких других явных свидетелей в ожидании.Как получить область рисования в CFrameWnd с помощью диалоговых окон?
0
A
ответ
1
Я уверен, что метод Cwnd::RepositionBars должен предоставить необходимую информацию. Использует ли следующий код для вас?
CRect rcClient;
pFrameWnd->RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0, CWnd::reposQuery, &rcClient);
0
У меня была аналогичная проблема с CDockablePane, которые я решил с
CRect rc;
GetDockingManager()->GetClientAreaBounds(rc);
, но я также столкнулся с проблемой, не будучи в состоянии найти сообщение или обратного вызова, чтобы знать, когда, чтобы вызвать его.
Это похоже на то, что мне может понадобиться - не может проверить до завтра. Есть ли оконное сообщение или обратный вызов, который я могу использовать, чтобы определить, когда панель инструментов перемещена, поэтому я могу повторно вычислить адрес клиента вместо того, чтобы называть его на каждом 'WM_PAINT'? – bdonlan