Visual c++ SetLimitText不适用于MFC应用程序中的多行

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_

我有一个编辑文本控件,它在.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_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();
        }
    }
}