편집 컨트롤 스타일

CreateWindow 또는 CreateWindowEx 함수를 사용하여 편집 컨트롤을 만들려면 EDIT 클래스, 적절한 창 스타일 상수 및 다음 편집 컨트롤 스타일의 조합을 지정합니다. 컨트롤을 만든 후에는 이러한 스타일을 수정할 수 없습니다.

LRESULT MsgCreate(HWND hwnd, UINT uMessage, WPARAM wparam, LPARAM lparam)
{
    lparam;
    wparam;
    uMessage;

    // Create Edit control for typing to be sent to server
    if (NULL == (hOutWnd = CreateWindow("EDIT",
                           NULL,
                           WS_BORDER | WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_LEFT | 
                           ES_MULTILINE | ES_AUTOVSCROLL,
                           0,0,0,0,
                           hwnd,
                           (HMENU) ID_OUTBOX,
                           (HINSTANCE) GetWindowLongPtr(hwnd, GWLP_HINSTANCE),
                           NULL)))
        return FALSE;
    return TRUE;
}

GitHub의 Windows 클래식 샘플 예제입니다.

상수

상수 설명
ES_AUTOHSCROLL
사용자가 줄의 끝에 문자를 입력하면 텍스트가 자동으로 오른쪽으로 10자씩 스크롤됩니다. 사용자가 Enter 키를 누르면 컨트롤이 모든 텍스트를 다시 스크롤하여 0에 배치합니다.
ES_AUTOVSCROLL
사용자가 마지막 줄의 Enter 키를 누르면 텍스트가 자동으로 한 페이지 위로 스크롤됩니다.
ES_CENTER
텍스트를 한 줄 또는 여러 줄 편집 컨트롤의 가운데에 맞춥니다.
ES_LEFT
텍스트를 왼쪽 여백에 맞춥니다.
ES_LOWERCASE
편집 컨트롤에 입력되는 모든 문자를 소문자로 변환합니다.
컨트롤을 만든 후 이 스타일을 변경하려면 SetWindowLong을 사용합니다.
ES_MULTILINE
여러 줄 편집 컨트롤을 지정합니다. 기본값은 한 줄 편집 컨트롤입니다.
여러 줄 편집 컨트롤이 대화 상자에 있는 경우 ENTER 키를 누르면 기본 응답은 기본 단추를 활성화하는 것입니다. ENTER 키를 캐리지 리턴으로 사용하려면 ES_WANTRETURN 스타일을 사용합니다.
여러 줄 편집 컨트롤이 대화 상자에 있지 않고 ES_AUTOVSCROLL 스타일을 지정하면 편집 컨트롤은 가능한 한 많은 줄을 표시하며 사용자가 ENTER 키를 누를 때 세로로 스크롤합니다. ES_AUTOVSCROLL을 지정하지 않은 경우 편집 컨트롤은 가능한 한 많은 줄을 표시하고 사용자가 더 이상 줄을 표시할 수 없을 때 ENTER 키를 누르면 경고음이 울립니다.
ES_AUTOHSCROLL 스타일을 지정하는 경우 컨트롤의 오른쪽 가장자리를 지나면 여러 줄 편집 컨트롤이 자동으로 가로로 스크롤됩니다. 새 줄을 시작하려면 사용자가 ENTER 키를 눌러야 합니다. ES_AUTOHSCROLL을 지정하지 않으면 필요한 경우 컨트롤이 자동으로 단어를 다음 줄의 시작 부분으로 줄 바꿈합니다. 사용자가 ENTER 키를 누르면 새 줄도 시작됩니다. 창 크기는 Wordwrap의 위치를 결정합니다. 창 크기가 변경되면 Wordwrapping 위치가 변경되고 텍스트가 다시 표시됩니다.
여러 줄 편집 컨트롤에는 스크롤 막대가 있을 수 있습니다. 스크롤 막대가 있는 편집 컨트롤은 자체 스크롤 막대 메시지를 처리합니다. 스크롤 막대가 없는 편집 컨트롤은 이전 단락에서 설명한 대로 스크롤하고 부모 창에서 보낸 스크롤 메시지를 처리합니다.
ES_NOHIDESEL
편집 컨트롤의 기본 동작을 부정합니다. 기본 동작은 컨트롤이 입력 포커스를 잃을 때 선택 영역을 숨기고, 컨트롤이 입력 포커스를 받을 때 선택 영역을 반전시킵니다. ES_NOHIDESEL을 지정하면 컨트롤에 포커스가 없더라도 선택한 텍스트가 반전됩니다.
ES_NUMBER
편집 컨트롤에 항상 숫자만 입력할 수 있습니다. 이 집합을 사용하더라도 비숫자를 편집 컨트롤에 붙여넣을 수 있습니다.
컨트롤을 만든 후 이 스타일을 변경하려면 SetWindowLong을 사용합니다.
편집 컨트롤에 입력된 텍스트를 정수 값으로 변환하려면 GetDlgItemInt 함수를 사용합니다. 편집 컨트롤의 텍스트를 지정된 정수의 문자열 표현으로 설정하려면 SetDlgItemInt 함수를 사용합니다.
ES_OEMCONVERT
편집 컨트롤에 입력된 텍스트를 변환합니다. 텍스트는 Windows 문자 집합에서 OEM 문자 집합으로 변환된 다음 Windows 문자 집합으로 다시 변환됩니다. 이는 애플리케이션이 편집 컨트롤의 Windows 문자열을 OEM 문자로 변환하기 위해 CharToOem 함수를 호출할 때 문자가 적절히 변환되도록 합니다. 이 스타일은 유니코드를 지원하지 않는 파일 시스템에서 사용할 파일 이름을 포함하는 편집 컨트롤에 가장 유용합니다.
컨트롤을 만든 후 이 스타일을 변경하려면 SetWindowLong을 사용합니다.
ES_PASSWORD
편집 컨트롤에 문자를 입력할 때 모든 문자를 별표(*)로 표시합니다. 이 스타일은 한 줄 편집 컨트롤에만 유효합니다.
표시되는 문자를 변경하거나 이 스타일을 설정하거나 지우려면 EM_SETPASSWORDCHAR 메시지를 사용합니다.
참고: Comctl32.dll 버전 6을 사용하려면 매니페스트에 지정합니다. 매니페스트에 대한 자세한 내용은 시각적 스타일 사용을 참조하세요.
ES_READONLY
편집 컨트롤에 텍스트를 입력하거나 편집할 수 없도록 합니다.
컨트롤을 만든 후 이 스타일을 변경하려면 EM_SETREADONLY 메시지를 사용합니다.
ES_RIGHT
텍스트를 한 줄 또는 여러 줄 편집 컨트롤의 오른쪽에 맞춥니다.
ES_UPPERCASE
편집 컨트롤에 입력되는 모든 문자를 대문자로 변환합니다.
컨트롤을 만든 후 이 스타일을 변경하려면 SetWindowLong을 사용합니다.
ES_WANTRETURN
사용자가 대화 상자에서 여러 줄 편집 컨트롤에 텍스트를 입력하는 동안 Enter 키를 누르면 캐리지 리턴을 삽입하도록 지정합니다. 이 스타일을 지정하지 않은 경우 Enter 키를 누르면 대화 상자의 기본 누름 단추를 누르는 것과 같은 효과가 있습니다. 이 스타일은 한 줄 편집 컨트롤에 영향을 미치지 않습니다.
컨트롤을 만든 후 이 스타일을 변경하려면 SetWindowLong을 사용합니다.

요구 사항

요구 사항
헤더
Winuser.h