2016-07-26 2 views
1

Я хотел бы предоставить стилизованные элементы формы для клиента в приложении MFC.С MFC, как стиль управления CEdit с закругленными углами и тенью?

Я прихожу к выводу, что виджеты типа «Web-2.0» просто невозможны во вселенной MFC без значительных пользовательских работ по рисованию/программированию.

включаю скриншоты для сравнения:

  • A желательно «Web 2.0' стиля редактирования виджета и
  • в 'лучшие' редактировать виджеты прямолинейно доступны в MFC вселенной.

Пример: Вот скриншот (случайно выбранный) красиво стиле редактирования виджета, который easily available and trivial to use в мире веб-программирования с HTML/CSS:

Web-2.0 style widgets are easy in HTML!

Пример B: Напротив, вот скриншот, взятый из одного из примеров приложений BCGSoft's MFC library's. Это очень пример приложения под названием «Edit Box Demo», и обеспечивает - это кажется - что лучшие редактирования виджетов доступны в MFC вселенной:

The best MFC edit widgets don't cut it

Вы можете видеть, что есть «поколение разницы 'между легкодоступными виджетами редактирования HTML и, по-видимому, наиболее доступными виджетами MFC/C++ для настольных приложений Windows.

Мой вопрос, поэтому прост: как можно настроить элемент CEdit с закругленными углами и тенью в MFC?

+1

http://stackoverflow.com/questions/1955538/win32-how-to-custom-draw-an-edit-control – Jonathan

+1

Вы должны создать свои собственные элементы управления ownerdraw, чтобы получить эти закругленные края. Или используйте 'CDHtmlDialog'. Это не обязательно будет хорошо выглядеть в Windows 8 и 10, которые являются большими по квадратным краям. –

ответ

1

Просто указывая вам пример B вы использовали

CBCGPEdit Используя это должно быть просто и прямо вперед, чтобы перезаписать OnNcPaint.

Но! Обычно вы можете поручить BCG использовать визуальный менеджер, и в этом случае визуальный менеджер будет нести ответственность за создание рамки управления. И визуальный менеджер будет использовать круглые углы, если он предназначен для этого ... Я знаю даже никакого визуального менеджера, который использует круглые углы;) (CBCGPVisualManager::OnDrawControlBorder)

Но не стесняйтесь писать самостоятельно.

+0

Спасибо! Любое быстрое предложение о том, как увеличить размер области ЧПУ ... что будет иметь эффект добавления прокладки, что важно, если это должно быть реалистичным решением. Конечно, я бы хотел, чтобы любое увеличение размера неклиентской области фактически отображалось на экране, не будучи обрезанным ни одной средой отсечения на любом уровне системы. –

+0

Еще раз спасибо - еще несколько вопросов. Как вы думаете, есть ли какие-либо преимущества в использовании 'CBCGPEdit', а не' CEdit' напрямую?'OnNcPaint' (обработчик' ON_WM_NCPAINT') напрямую соответствует 'CEdit', а не' CBCGPEdit'. Просто из API для 'CBCGPEdit' я не вижу преимуществ - возможно, имея возможность использовать пользовательский' CBCGPVisualManager'? Благодарю. –

+0

... И мой второй вопрос - я на самом деле просто протестировал его, и, похоже, область ЧПУ довольно маленькая. Вы знаете, как его расширить? –

Смежные вопросы