티스토리 뷰

목차

    반응형

    MFC Edit Control 문자열 추가 (에디트 박스 텍스트, 에디트 컨트롤)


    MFC 에디트 컨트롤(Edit Control)에 텍스트를 추가하는 방법으로는 GetWindowText()를 호출한 다음에, 텍스트 정보를 불러들여 새로운 내용을 추가한 다음 SetWindowText()로 다시 설정하는 것이죠.


    GetWindowText() -> 텍스트 정보에 내용 추가 -> SetWindowText()


    그렇지만, 이미 창의 텍스트에 길이가(GetLength()) 너무 길면, 매우 비효율적인 방법이 됩니다.


    새로 설정한 텍스트에 맞춰 길이까지 매번 조절해야 하고, 그 때문에 발생할 UI의 전체 문제까지 생각해 보면 머리가 아픕니다. 그래서 위의 방법은 전반적인 방향 정도로만 생각하고 조금 다른 방법을 찾아서 구현해야 합니다.


    바로 이 포스트에서 다룰 내용입니다. 아래와 같은 두 가지 예가 좀 더 효율적이니 참조하세요.


    MFC Edit Control 문자열 추가[MFC 에디트 박스 텍스트]


    MFC Edit Control Code: 1


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void CFoo::AppendTextToEditCtrl(CEdit& edit, LPCTSTR pszText)
    {
       // 문자열의 길이를 알아냄
       int nLength = edit.GetWindowTextLength();
     
       // 마지막 줄을 선택함
       edit.SetSel(nLength, nLength);
     
       // 선택된 행의 텍스트를 교체
       edit.ReplaceSel(pszText);
    }
    cs


    MFC Edit Control Code: 2


    1
    2
    3
    4
    5
    6
    7
    void CFoo::AppendLineToMultilineEditCtrl(CEdit& edit, LPCTSTR pszText)
    {
       CString strLine;
     
       strLine.Format(_T("\r\n%s"), pszText);
       AppendTextToEditCtrl(edit, strLine);
    }
    cs


    첫 번째 예제에선 에디트 컨트롤 텍스트 자체를 선택해 텍스트를 교체합니다.

    두 번째 예제에선 에디트 컨트롤 텍스트의 str 변수를 그대로 교체합니다.


    그리고, 마지막으로 추가된 텍스트에 커서를 놓고 싶다면 pEdit->SetFocus();를 추가하면 됩니다.


    MFC Edit Control 문자열 추가 (에디트 박스 텍스트, 에디트 컨트롤)

    반응형