Re[3]: Глюк VScroll в CEdit
От: visual_wind  
Дата: 18.11.04 12:58
Оценка:
Здравствуйте, AlexLux, Вы писали:

AL>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>Здравствуйте, AlexLux, Вы писали:


AL>>>У меня в EditBoxe`е не работает вертикальный скролл! При прокрутке текста вновь появляемые строки накладываются на строки в окне, в результате текст смазывается. Как это можно исправить?


SDB>>А на код можно взглянуть?


AL>Вот текст функции, добавляющей строки в EditBox:


AL>
AL>//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AL>LRESULT CReNamerDlg::OnDsplReslt(WPARAM wParam, LPARAM lParam)
AL>{

AL>    CString sNCount = "";
    
AL>    sNCount.Format("%u", m_FileProc.m_uReplCntr);
AL>    m_sInfoBox = m_FileProc.m_sCrntFilePath + 
AL>                    " - " + sNCount + " replaces;\r\n";
    
AL>    int selFirst = 0, selLast = 0;
    
AL>    m_InfoBox1.SendMessage(EM_GETSEL, (WPARAM)&selFirst, (LPARAM)&selLast);
    
AL>    if (selFirst == selLast)
AL>    {
AL>        selFirst = selLast = m_InfoBox1.GetWindowTextLength();
AL>    }        
AL>    m_InfoBox1.SendMessage(EM_SETSEL, selFirst, selLast);
AL>    m_InfoBox1.SendMessage(EM_REPLACESEL, TRUE, (LONG)(LPCSTR)m_sInfoBox);
    
AL>    return 1;
AL>}

AL>


Вот такой код у меня работает:


    CString m_sInfoBox = "12345\r\n";
    
    int selFirst = 0, selLast = 0;
    
    m_InfoBox1.SendMessage(EM_GETSEL, (WPARAM)&selFirst, (LPARAM)&selLast);
    
    if (selFirst == selLast)
    {
        selFirst = selLast = m_InfoBox1.GetWindowTextLength();
    }        
    m_InfoBox1.SendMessage(EM_SETSEL, selFirst, selLast);
    m_InfoBox1.SendMessage(EM_REPLACESEL, TRUE, (LONG)(LPCSTR)m_sInfoBox);


m_InfoBox1 я объявил как CEdit в хэдере и в OnInitDialog вызвал CEdit.Attach к окну на форме, у которого выставлены свойства Visible, TabStop, Multiline, VerticalScroll.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.