Я использую пакет компонентов MFC в Visual Studio 2008. У меня есть поле для редактирования (CMFCRibbonEdit) на ленте, которое я хотел бы содержать только заглавными буквами.Я знаю, что могу передать ES_UPPERCASE в метод «Create», однако «Create» вызывается из самой ленты, а не явно из моего кода.
Чтобы добавить поле редактирования на мою ленту, я вызываю:
CMFCRibbonPanel* pPanel = pCategoryViewer->AddPanel("Panel Title");
CMFCRibbonEdit *cEdit = new CMFCRibbonPanel( ID_MYEDITBOX, 60, "Edit Title" );
pPanel->Add( cEdit );
Исходя из того, что я прочитал в MSDN, я увидел, что могу перегрузить функцию «CreateEdit» CMFCRibbonEdit.Я попробовал это, но это не сработало.
class UpperCaseRibbonEdit : public CMFCRibbonEdit
{
public:
UpperCaseRibbonEdit( UINT nID, int nWidth, LPCTSTR lpszLabel )
:CMFCRibbonEdit( nID, nWidth, lpszLabel )
{}
CMFCRibbonRichEditCtrl* CreateEdit( CWnd* pWndParent, DWORD dwEditStyle )
{
return CMFCRibbonEdit::CreateEdit( pWndParent, dwEditStyle | ES_UPPERCASE );
}
};
Я также попытался сделать этот вызов после инициализации моей ленты и ее элементов управления.Это тоже не сработало.
HWND editHwnd = GetDlgItem( ID_MYEDITBOX )->GetSafeHwnd();
SetWindowLong(editHwnd, GWL_STYLE, (LONG)GetWindowLong(editHwnd, GWL_STYLE) | ES_UPPERCASE);
Кто-нибудь знает, как мне это сделать?