我正在使用Visual Studio 2008中的MFC Feature Pack。我在功能區中有一個編輯框(CMFCRibbonEdit),我只想包含大寫字母。我知道我可以將ES_UPPERCASE傳遞給「Create」方法,但是從功能區本身調用「Create」,而不是由我的代碼明確地調用。如何使CMFCRibbonEdit自動將內容轉換爲大寫?
編輯框添加到我的絲帶,我稱之爲:
CMFCRibbonPanel* pPanel = pCategoryViewer->AddPanel("Panel Title");
CMFCRibbonEdit *cEdit = new CMFCRibbonPanel(ID_MYEDITBOX, 60, "Edit Title");
pPanel->Add(cEdit);
基於我在MSDN上閱讀我看見我可以重載CMFCRibbonEdit的「CreateEdit」功能。我嘗試過,但沒有奏效。
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);
有誰知道我該怎麼做到這一點?
您的解決方案無法正常工作的原因是因爲該控件實際上是一個豐富的編輯,它不支持'ES_UPPERCASE' - 請參閱http://msdn.microsoft.com/zh-cn/library/bb774367.aspx 。 – ChrisN 2010-09-16 21:06:55