MFC

MFC Editbox 자동 스크롤(자동 줄넘김)

불량껌 2009. 12. 11. 15:08

void CEditScrollDlg::OnAddBtn()
   {
        CString name_string, chat_string;
        
        // 대화명에서 이름을 얻는다.
        GetDlgItemText(IDC_NAME_EDIT, name_string);
        // 채팅입력창에서 채팅정보를 얻는다.
        GetDlgItemText(IDC_CHAT_EDIT, chat_string);
       
        // 채팅목록을 관리할 에디트 컨트롤의 주소를 얻는다.
        CEdit *p_edit = (CEdit *)GetDlgItem(IDC_CHAT_LIST_EDIT);
       
        // 채팅 내용을 추가할때, CEdit 클래스의 ReplaceSel 이라는 함수를 사용하는데
        // 이 함수는 에디트 컨트롤의 현재 커서 위치를 기준으로 문자열을 추가하기
        // 때문에 사용자가 중간에 커서의 위치를 변경하고 채팅을 입력하면 잘못된
        // 위치에 채팅 내용이 추가될수 있다. 따라서 채팅 내용을 항상 마지막에
        // 추가하기 위해서 입력된 채팅 목록의 크기를 구하고 가장 마지막 위치에
        // 커서를 설정하는 기능을 추가한다.

        int string_length = p_edit->GetWindowTextLength();
        
        // 입력된 문자열이 있는 경우, 문자열의 마지막 위치에 커서를 설정한다.
        if(string_length > 0) p_edit->SetSel(string_length, string_length);
        
        // 채팅 내용을 목록 에디트 컨트롤에 추가한다.
        p_edit->ReplaceSel(name_string + " : " + chat_string);
        // 줄바꿈 문자열을 추가하여 줄을 바꾼다.
        p_edit->ReplaceSel("\r\n");
         
        // 채팅입력란을 초기화 한다.
        SetDlgItemText(IDC_CHAT_EDIT, "");
   }
 
========================================================================================
 빨간색 부분이 줄넘김 부분