首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让CMFCRibbonEdit自动将内容转换为大写?

如何让CMFCRibbonEdit自动将内容转换为大写?
EN

Stack Overflow用户
提问于 2010-09-16 23:18:29
回答 1查看 1.5K关注 0票数 1

我正在使用Visual Studio2008中的MFC功能包。我知道我可以将ES_UPPERCASE传递给"Create“方法,但是"Create”是从功能区本身调用的,而不是由我的代码显式调用的。

要将编辑框添加到我的ribbon,我将其调用为:

代码语言:javascript
复制
CMFCRibbonPanel* pPanel = pCategoryViewer->AddPanel("Panel Title");
CMFCRibbonEdit *cEdit = new CMFCRibbonPanel( ID_MYEDITBOX, 60, "Edit Title" );
pPanel->Add( cEdit );

根据我在MSDN上看到的,我可以重载CMFCRibbonEdit的"CreateEdit“函数。我试过了,但没用。

代码语言:javascript
复制
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 );
  }
};

在初始化ribbon及其控件后,我也尝试进行此调用。这也不管用。

代码语言:javascript
复制
HWND editHwnd = GetDlgItem( ID_MYEDITBOX )->GetSafeHwnd();
SetWindowLong(editHwnd, GWL_STYLE, (LONG)GetWindowLong(editHwnd, GWL_STYLE) | ES_UPPERCASE);

有人知道我是怎么做到这一点的吗?

EN

回答 1

Stack Overflow用户

发布于 2014-04-08 22:18:48

我想你已经知道了,CMFCRibbonEdit内部有一个成员变量CMFCRibbonRichEditCtrl* m_pWndEdit;,它的类型是CRichEditCtrl的后代。

我想您最好的选择是:在派生类中,不要忘记将ON_CONTROL_REFLECT(EN_CHANGE, OnChange)放在消息映射中;并查找基类的原始代码:

代码语言:javascript
复制
void CMFCRibbonRichEditCtrl::OnChange()
{
    CString strText;
    GetWindowText(strText);

    m_edit.m_strEdit = strText;
    m_edit.SetEditText(strText);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3728107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档