2010-07-21 1 views
0

У меня есть CFrameWnd с диалоговой панелью, и я бы хотел определить область рисования (исключая пространство, используемое диалоговой панелью), поэтому я могу рисовать его, не перекрываясь диалоговой панелью. Как я могу это сделать? GetClientRect(), похоже, также покрывает область с клиентом, и я не вижу никаких других явных свидетелей в ожидании.Как получить область рисования в CFrameWnd с помощью диалоговых окон?

ответ

1

Я уверен, что метод Cwnd::RepositionBars должен предоставить необходимую информацию. Использует ли следующий код для вас?

CRect rcClient; 
pFrameWnd->RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0, CWnd::reposQuery, &rcClient); 
+0

Это похоже на то, что мне может понадобиться - не может проверить до завтра. Есть ли оконное сообщение или обратный вызов, который я могу использовать, чтобы определить, когда панель инструментов перемещена, поэтому я могу повторно вычислить адрес клиента вместо того, чтобы называть его на каждом 'WM_PAINT'? – bdonlan

0

У меня была аналогичная проблема с CDockablePane, которые я решил с

CRect rc; 
GetDockingManager()->GetClientAreaBounds(rc); 

, но я также столкнулся с проблемой, не будучи в состоянии найти сообщение или обратного вызова, чтобы знать, когда, чтобы вызвать его.