Visual c++ SetLimitText不适用于MFC应用程序中的多行
我有一个编辑文本控件,它在.rc中表示为:Visual c++ SetLimitText不适用于MFC应用程序中的多行,visual-c++,mfc,Visual C++,Mfc,我有一个编辑文本控件,它在.rc中表示为: EDITTEXT IDC_EDIT1, 26, 23, 60, 14, ES_RIGHT | ES_MULTILINE | ES_AUTOHSCROLL 我尝试使用m_editCtrl.SetLimitText0取消限制限制lext; 但它不起作用。如果我从rc文件中删除'ES_RIGHT',效果会很好 有没有办法取消对ES_RIGHT的文本限制 提前感谢。对于ES\u MULTILINE,该问题是可复制的。从rc中删除多行,这将解决问题。看来ES_
EDITTEXT IDC_EDIT1, 26, 23, 60, 14, ES_RIGHT | ES_MULTILINE | ES_AUTOHSCROLL
我尝试使用m_editCtrl.SetLimitText0取消限制限制lext;
但它不起作用。如果我从rc文件中删除'ES_RIGHT',效果会很好
有没有办法取消对ES_RIGHT的文本限制
提前感谢。对于ES\u MULTILINE,该问题是可复制的。从rc中删除多行,这将解决问题。看来ES_RIGHT样式与ES_AUTOHSCROLL不兼容 如果您创建的编辑控件没有正确的样式,并且以后对其进行如下修改,似乎可以使其正常工作:
GetDlgItem(IDC_EDIT1)->ModifyStyle(0, ES_RIGHT);
if(m_pEdit != NULL)
{
CString strVal;
//Get text value from the dit control
m_pEdit->GetWindowText(strVal);
//Get parent control
CWnd* pParentHwnd = m_pEdit->GetParent();
CRect ctrlRect;
m_pEdit->GetWindowRect(&ctrlRect);
pParentHwnd->ScreenToClient(&ctrlRect);
DWORD dwStyle = m_pEdit->GetStyle();
DWORD dwExstyle = m_pEdit->GetExStyle();
CFont* pFont = m_pEdit->GetFont();
int nCtrlID = m_pEdit->GetDlgCtrlID();
DWORD dwSelection = m_pEdit->GetSel();
CWnd* pWndPreviousCtrl = m_pEdit->GetNextWindow(GW_HWNDPREV);
m_pEdit->DestroyWindow();
if (dwStyle & ES_MULTILINE)
{
dwStyle &= ~ES_MULTILINE;
}
//Create edit control
BOOL bIsCreated = m_pEdit->CreateEx(dwExstyle, _T("EDIT"), strVal, dwStyle, ctrlRect, pParentHwnd, nCtrlID);
if (bIsCreated)
{
//Set window position to maintain z-order for tab navigation
m_pEdit->SetWindowPos(pWndPreviousCtrl, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_SHOWWINDOW);
//Restore font
m_pEdit->SetFont(pFont);
//Restore last selection
m_pEdit->SetSel(dwSelection);
if (bHasFocus)
{
m_pEdit->SetFocus();
}
}
}