Плавающий контроль над CView - PullRequest
2 голосов
/ 25 марта 2010

У меня есть приложение, которое использует несколько классов CView (на самом деле CScrollView) для отображения данных документа. Для одного конкретного вида я хочу добавить всплывающее окно редактирования для добавления заметок. То есть в нижней части окна вы увидите вкладку с надписью «Примечания к странице», и при нажатии на нее откроется окно редактирования. Если щелкнуть вкладку, когда поле редактирования видно, она вернется к вкладке.

Я подумал, что мог бы использовать одну вкладку CTabCtrl, удерживающую поле редактирования, и просто расположить его так, чтобы изначально была видна только вкладка. Захватите уведомление о щелчке вкладки и переместите весь элемент управления с полем редактирования в поле зрения. Повторное нажатие на вкладку переместит ее обратно вниз, так что будет видна только вкладка.

Хостинг CTabCtrl на CView - это нормально, и я могу правильно расположить его. Проблема заключается в том, что если прокручивается представление, элемент управления вкладками прокручивается вместе с ним, тогда как мне нужно, чтобы он «плавал» над представлением и не подвергался никакой прокрутке. Я могу вернуть его на место после прокрутки, но мерцание неприглядно.

Есть ли простой способ достичь "плавающего" эффекта? В основном я хочу, чтобы вкладка была встроена в представление для обслуживания, поскольку это единственный класс представления из нескольких используемых, для которого требуется функция «Примечания страницы».

Должен ли я просто пристегнуться и поместить вместо этого вкладку в родительское окно представления? Я знаю, что прокрутка там не повлияет, но мне нравится идея сохранить вкладку как часть представления, если это возможно.

1 Ответ

1 голос
/ 03 марта 2012

Звучит так, будто вкладка работает как кнопка. Вы нажимаете на вкладку, и появляется поле редактирования. Вы можете использовать немодальный диалог. Выберите «Примечание к странице», и появится немодальное диалоговое окно для редактирования заметок, позволяющее прокрутить представление в этом диалоговом окне.

...