편집 컨트롤 정보

편집 컨트롤은 사용자가 텍스트를 입력하고 편집할 수 있도록 대화 상자에서 일반적으로 사용되는 사각형 컨트롤 창입니다.

편집 컨트롤은 문자가 2바이트인 유니코드 문자 집합과 문자가 1바이트인 ANSI 문자 집합을 모두 지원합니다. 유니코드 및 ANSI 문자 집합에 대한 자세한 내용은 유니코드 및 문자 집합을 참조하세요.

Rich Edit 컨트롤은 시스템 편집 컨트롤에서 사용할 수 없는 많은 기능을 지원합니다. 자세한 내용은 Rich Edit 컨트롤을 참조하세요.

이 개요에서 설명하는 항목은 다음과 같습니다.

편집 컨트롤 기능

이 옵션을 선택하면 편집 컨트롤에 삽입 지점을 나타내는 깜박이는 캐럿이 표시됩니다. 그러면 사용자는 키보드 또는 마우스를 사용하여 텍스트를 입력하거나 삽입 지점을 이동하거나 편집할 텍스트를 선택할 수 있습니다. 편집 컨트롤은 WM_COMMAND 메시지 형식으로 부모 창에 알림 코드를 보냅니다. 편집 컨트롤의 메시지에 대한 자세한 내용은 편집 컨트롤 알림 메시지를 참조하세요. 부모 창은 SendDlgItemMessage 함수를 호출하여 대화 상자의 편집 컨트롤에 메시지를 보낼 수 있습니다. 미리 정의된 매크로를 사용하여 일부 메시지를 보낼 수도 있습니다.

시스템은 한 줄 편집 컨트롤과 여러 줄 편집 컨트롤을 모두 제공합니다. 편집 컨트롤은 EDIT 창 클래스에 속합니다.

콤보 상자는 편집 컨트롤과 목록 상자의 많은 기능을 결합하는 컨트롤입니다. 콤보 상자에서 편집 컨트롤은 현재 선택 항목을 표시하고 목록 상자에는 사용자가 선택할 수 있는 옵션이 표시됩니다. 콤보 상자에 대한 자세한 내용은 콤보 상자를 참조하세요.

많은 개발자가 일반 대화 상자 라이브러리(Comdlg32.dll)에 제공된 대화 상자를 사용하여 사용자 지정된 편집 컨트롤이 필요할 수 있는 작업을 수행합니다. 일반적인 대화 상자에 대한 자세한 내용은 일반 대화 상자 라이브러리를 참조하세요.

편집 컨트롤 형식 및 스타일

개별 편집 컨트롤에 여러 스타일이 동시에 있을 수 있습니다. 대부분의 개발자는 도구를 사용하여 대화 상자를 개발하므로 편집 컨트롤 스타일을 명시적으로 지정하지 않아도 될 수 있습니다. 그러나 애플리케이션이 CreateWindow 또는 CreateWindowEx 함수를 사용하는 편집 컨트롤을 만드는 경우 이러한 편집 컨트롤 스타일을 지정해야 합니다. 편집 컨트롤 스타일의 표는 편집 컨트롤 스타일을 참조하세요.

모든 편집 컨트롤은 편집 컨트롤의 모양과 기능을 정의하는 스타일 값의 조합을 지정합니다. 스타일 값은 한 줄 또는 여러 줄 편집 컨트롤의 모양을 설정할 수 있습니다. 컨트롤의 텍스트를 정렬하고 편집 컨트롤에 텍스트가 표시되는 방법도 결정합니다.

여러 줄 스타일

편집 컨트롤에는 두 가지 줄 스타일이 있습니다. 기본값은 한 줄 편집 컨트롤입니다. 애플리케이션은 ES_MULTILINE 스타일을 사용하여 여러 줄 편집 컨트롤을 만들 수도 있습니다.

스크롤 스타일

ES_AUTOHSCROLL 스타일은 사용자가 텍스트를 입력할 때 필요한 경우 편집 컨트롤에 텍스트를 가로로 스크롤하도록 지시합니다. 이 스타일을 지정하지 않으면 편집 컨트롤이 가로로 스크롤할 수 없습니다. ES_AUTOHSCROLL 없는 한 줄 편집 컨트롤의 경우 컨트롤의 표시 영역을 채우는 문자만 허용됩니다. ES_AUTOHSCROLL이 없는 여러 줄 편집 컨트롤의 경우 사용자가 한 줄에 표시할 수 있는 것보다 많은 텍스트를 입력하면 텍스트가 다음 줄로 줄 바꿈됩니다. 여러 줄 편집 컨트롤에 대해 ES_AUTOHSCROLL이 지정된 경우 사용자가 한 줄에 표시할 수 있는 것보다 많은 텍스트를 입력하면 컨트롤이 가로로 스크롤됩니다. 텍스트가 줄 바꿈되지 않습니다.

ES_AUTOHSCROLLWS_HSCROLL 스타일이 있는 왼쪽 맞춤 여러 줄 편집 컨트롤에 자동으로 적용됩니다. 즉, 가로 스크롤 막대가 있는 왼쪽 맞춤 여러 줄 편집 컨트롤은 자동으로 가로로 스크롤됩니다.

ES_AUTOHSCROLL은 왼쪽 맞춤되지 않은 여러 줄 편집 컨트롤에서 무시됩니다. 가운데 맞춤 및 오른쪽 맞춤 여러 줄 편집 컨트롤은 가로로 스크롤할 수 없습니다.

ES_AUTOVSCROLL 스타일은 사용자가 편집 컨트롤에 표시할 수 있는 것보다 많은 텍스트를 입력할 때 텍스트를 세로로 스크롤하도록 편집 컨트롤에 지시합니다. 이 스타일은 여러 줄 편집 컨트롤에만 적용됩니다. 이 스타일이 여러 줄 편집 컨트롤에 대해 지정되지 않은 경우 편집 컨트롤은 표시할 수 있는 것보다 많은 텍스트가 입력되었을 때 입력을 허용하지 않습니다.

맞춤 스타일

시스템에서 편집 컨트롤의 텍스트를 맞추는 세 가지 스타일이 있습니다. ES_LEFT, ES_CENTERES_RIGHT 스타일은 텍스트가 각각 왼쪽, 가운데 또는 오른쪽에 맞춰지는지 여부를 결정합니다. 오른쪽 맞춤 및 가운데 맞춤 여러 줄 편집 컨트롤은 ES_AUTOHSCROLL 스타일을 가질 수 없습니다. 즉, 가로로 스크롤할 수 없습니다.

편집 컨트롤의 맞춤 스타일을 동적으로 변경할 수는 없지만 다음 기술을 사용하여 이 제한을 해결할 수 있습니다.

  • 애플리케이션에 필요한 각 스타일에 대해 하나씩 여러 편집 컨트롤을 만들고 필요에 따라 컨트롤 간에 전환합니다.
  • 필요에 따라 원하는 스타일로 새 편집 컨트롤을 만들고 새 컨트롤로 전환합니다.

텍스트 및 입력 스타일

애플리케이션은 스타일을 사용하여 편집 컨트롤에서 텍스트를 표시하는 방법을 지정할 수 있습니다. ES_LOWERCASE 스타일을 사용하면 편집 컨트롤에 입력된 모든 대문자가 소문자로 변환됩니다. 마찬가지로 ES_UPPERCASE 스타일은 모든 소문자를 대문자로 변환합니다.

문자 집합에 대한 자세한 내용은 유니코드 및 문자 집합을 참조하세요.

ES_NUMBER 스타일은 편집 컨트롤에서만 입력을 숫자로 제한합니다.

ES_READONLY 스타일은 편집 컨트롤을 읽기 전용 상태로 변경합니다.

ES_PASSWORD 스타일은 한 줄 편집 컨트롤의 모든 문자를 별표로 표시합니다. 애플리케이션은 이 항목의 뒷부분에 설명된 대로 EM_SETPASSWORDCHAR 메시지를 사용하여 표시할 다른 문자를 정의할 수 있습니다.

Comctl32.dll 버전 6의 편집 컨트롤인 경우 검은색 원은 ES_PASSWORD 스타일의 기본 문자입니다. 이전 버전 공용 컨트롤의 편집 컨트롤에서 기본 문자는 별표입니다.

ES_OEMCONVERT 스타일을 사용하면 편집 컨트롤에 입력한 텍스트가 Windows 문자 집합에서 OEM 문자 집합으로 변환된 다음 Windows 문자 집합으로 다시 변환됩니다. 이는 애플리케이션이 편집 컨트롤의 Windows 문자열을 OEM 문자로 변환하기 위해 CharToOem 함수를 호출할 때 문자가 적절히 변환되도록 합니다. ES_OEMCONVERT는 유니코드를 지원하지 않는 파일 시스템에서 사용할 파일 이름을 포함하는 편집 컨트롤에 가장 유용합니다.

대화 상자에서 여러 줄 편집 컨트롤의 경우 ES_WANTRETURN 스타일을 사용하면 사용자가 텍스트를 입력하는 동안 ENTER 키를 누를 때 컨트롤이 캐리지 리턴을 삽입합니다. 이 스타일을 지정하지 않으면 ENTER 키를 눌렀을 때 대화 상자에서 기본 푸시 단추를 누르는 것과 같은 효과가 있습니다. ES_WANTRETURN이 없으면 CTRL+ENTER를 눌러 캐리지 리턴을 삽입해야 합니다. Wordwrap 및 줄 바꿈에 대한 자세한 내용은 Wordwrap 및 줄 바꿈 처리를 참조하세요.

비주얼 스타일

ES_NOHIDESEL 스타일을 사용하면 편집 컨트롤에 포커스가 없을 때 선택한 텍스트가 강조 표시된 상태로 유지됩니다. 이 스타일이 없으면 선택한 텍스트는 컨트롤이 포커스를 잃을 때 강조 표시가 사라집니다.

기본적으로 편집 컨트롤에는 테두리가 없습니다. 이를 제공하기 위해 애플리케이션은 WS_BORDER 창 스타일을 사용할 수 있습니다.

편집 컨트롤과 함께 비주얼 스타일을 사용하려면 애플리케이션에 매니페스트가 포함되어야 하며 프로그램 시작 시 InitCommonControls를 호출해야 합니다. 비주얼 스타일에 대한 자세한 내용은 비주얼 스타일을 참조하세요. 매니페스트에 대한 자세한 내용은 비주얼 스타일 사용을 참조하세요.

텍스트 버퍼

시스템은 편집 컨트롤 텍스트를 버퍼에 저장하고 필요에 따라 컨트롤에 복사합니다.

다음 항목에서는 시스템이 버퍼를 할당하고 초기화하고 버퍼의 특성을 변경하는 방법에 대해 설명합니다.

텍스트 버퍼 할당

시스템에서 편집 컨트롤을 만들 때 자동으로 텍스트 버퍼를 만들고 초기 크기를 설정하며 필요에 따라 크기를 늘립니다. 크기는 한 줄 편집 컨트롤에 대해 약 32KB(킬로바이트)의 미리 정의된 제한까지 가능합니다. 이 제한을 변경할 수 있으므로 소프트 제한이라고 합니다. 애플리케이션은 편집 컨트롤에 EM_SETLIMITTEXT 메시지를 전송하여 버퍼 크기에 대한 하드 제한을 설정할 수 있습니다. 버퍼가 이 두 제한 중 하나라도 초과하면 시스템은 애플리케이션에 EN_ERRSPACE 알림 코드를 보냅니다. 애플리케이션은 EM_GETLIMITTEXT 메시지를 전송해 현재 텍스트 제한을 검색할 수 있습니다.

시스템은 일반적으로 애플리케이션의 데이터 세그먼트 외부에 있는 메모리를 사용하여 대화 상자에 편집 컨트롤 버퍼를 만듭니다. 애플리케이션은 편집 컨트롤을 만들 때 DS_LOCALEDIT 스타일(대화 상자 정보의 "대화 상자 템플릿 스타일" 참조)을 사용하여 이 기본 할당 동작을 표시하지 않으며 로컬 힙에서 버퍼를 만들 수 있습니다. DS_LOCALEDIT 스타일을 사용하는 애플리케이션은 모든 버퍼 할당을 담당합니다. 초기 할당을 위해 애플리케이션은 LocalAlloc 함수를 호출하고 EM_SETHANDLE 메시지를 전송하여 반환된 버퍼 핸들을 편집 컨트롤에 전달할 수 있습니다. 예를 들어 EN_ERRSPACE 알림 코드에 대한 응답으로 후속 할당을 수행하려면 애플리케이션이 현재 버퍼 콘텐츠를 저장하고(필요한 경우) 다음과 같이 새 버퍼를 가져와야 합니다.

현재 버퍼를 저장하고 새 버퍼를 가져오려면 다음 절차를 따릅니다.

  1. 컨트롤에 EM_GETHANDLE 메시지를 전송하여 여러 줄 편집 컨트롤의 텍스트에 현재 할당된 메모리의 핸들을 검색합니다.
  2. LocalFree 함수를 호출하여 버퍼를 비웁니다.
  3. LocalAlloc을 호출하여 새 버퍼(및 버퍼 핸들)를 가져옵니다.
  4. 컨트롤에 EM_SETHANDLE 메시지를 전송하여 버퍼 핸들을 시스템에 제공합니다.

EM_SETHANDLEEM_GETHANDLE 메시지는 여러 줄 편집 컨트롤에만 적용됩니다.

기본 할당 동작을 사용하는 애플리케이션(즉, DS_LOCALEDIT 스타일을 사용하지 않음(대화 상자 정보에서 "대화 상자 템플릿 스타일" 참조))은 편집 컨트롤에 EM_SETHANDLEEM_GETHANDLE 메시지를 보내지 않아야 합니다.

EM_SETHANDLE 메시지 전송에는 여러 가지 부작용이 있습니다. 실행 취소 플래그를 지우고(EM_CANUNDO 메시지가 0을 반환), 수정 플래그를 지우고(EM_GETMODIFY 메시지가 0을 반환) 편집 컨트롤 창을 다시 그립니다.

텍스트 버퍼 초기화

애플리케이션은 SetDlgItemText 함수를 호출하여 편집 컨트롤의 텍스트 버퍼를 초기화하거나 다시 초기화할 수 있습니다. 애플리케이션은 GetDlgItemText 함수를 호출하여 텍스트 버퍼의 내용을 검색할 수 있습니다.

텍스트 버퍼 읽기 전용 만들기

각 편집 컨트롤에 대해 시스템은 컨트롤의 텍스트가 읽기/쓰기 가능(기본값)인지 또는 읽기 전용인지 여부를 나타내는 읽기 전용 플래그를 유지 관리합니다. 애플리케이션은 컨트롤에 EM_SETREADONLY 메시지를 전송하여 텍스트에 읽기/쓰기 플래그 또는 읽기 전용 플래그를 설정할 수 있습니다. 편집 컨트롤이 읽기 전용인지 여부를 확인하기 위해 애플리케이션은 GWL_STYLE 상수를 사용하여 GetWindowLong 함수를 호출할 수 있습니다. EM_SETREADONLY 메시지는 한 줄 및 여러 줄 편집 컨트롤 모두에 적용됩니다.

서식 사각형 변경

편집 컨트롤의 텍스트 표시 유형은 창 사각형의 차원 및 서식 사각형에 의해 제어됩니다. 창 사각형은 편집 컨트롤을 포함하는 창의 클라이언트 영역입니다. 서식 사각형은 창 사각형에 표시되는 텍스트의 서식을 지정하기 위해 시스템에서 유지 관리하는 구문입니다. 편집 컨트롤이 처음 표시되었을 때는 화면에서 두 사각형이 동일합니다. 애플리케이션은 서식 사각형을 창 사각형보다 크게 만들거나(따라서 편집 컨트롤의 텍스트 표시 여부를 제한함) 창 사각형보다 작게 만들 수 있습니다(따라서 텍스트 주위에 공백이 추가로 생성됨).

애플리케이션은 EM_SETRECT 메시지를 전송해 편집 컨트롤의 서식 사각형의 좌표를 설정할 수 있습니다. 또한 EM_SETRECT 메시지는 편집 컨트롤의 텍스트를 자동으로 다시 그립니다. 컨트롤의 텍스트를 다시 그리지 않고 서식 사각형의 좌표를 설정하려면 애플리케이션에서 컨트롤에 EM_SETRECTNP 메시지를 전송할 수 있습니다. 애플리케이션은 서식 사각형의 좌표를 검색하기 위해 컨트롤에 EM_GETRECT 메시지를 보낼 수 있습니다. 이러한 메시지는 여러 줄 편집 컨트롤에만 적용됩니다.

편집 컨트롤 알림 메시지

사용자가 키보드와 마우스를 사용하여 편집 요청을 합니다. 시스템은 각 요청을 편집 컨트롤의 부모 창에 WM_COMMAND 메시지 형식으로 보냅니다. 메시지에는 wParam 매개 변수의 하위 단어에 있는 편집 컨트롤 식별자, lParam 매개 변수의 편집 컨트롤 핸들 및 wParam 매개 변수의 상위 단어에 있는 사용자의 작업에 해당하는 편집 컨트롤 알림 코드가 포함됩니다.

애플리케이션은 각 알림 메시지와 함께 제공되는 알림 코드를 검사하고 적절하게 응답해야 합니다. 다음 표에는 각 편집 컨트롤 알림 코드와 이를 생성하는 작업이 나열되어 있습니다.

알림 코드 사용자 조치
EN_CHANGE 사용자가 편집 컨트롤에서 텍스트를 수정했습니다. 시스템은 (EN_UPDATE와 달리) 이 알림 코드를 전송하기 전에 디스플레이를 업데이트합니다.
EN_ERRSPACE 편집 컨트롤은 특정 요청을 충족하기에 충분한 메모리를 할당할 수 없습니다.
EN_HSCROLL 사용자가 편집 컨트롤의 가로 스크롤 막대를 클릭했습니다. 시스템은 화면을 업데이트하기 전에 이 알림 코드를 전송합니다.
EN_KILLFOCUS 사용자가 다른 컨트롤을 선택했습니다.
EN_MAXTEXT 텍스트를 삽입하는 동안 사용자가 편집 컨트롤에 대해 지정한 문자 수를 초과했습니다. 삽입이 잘렸습니다. 이 알림 코드는 편집 컨트롤에 ES_AUTOHSCROLL 스타일이 없으며 삽입할 문자 수가 편집 컨트롤의 너비를 초과하거나, 편집 컨트롤에 ES_AUTOVSCROLL 스타일이 없으며 삽입할 줄의 총 수가 편집 컨트롤의 높이를 초과하는 경우에도 전송됩니다.
EN_SETFOCUS 사용자가 이 편집 컨트롤을 선택했습니다.
EN_UPDATE 사용자가 편집 컨트롤의 텍스트를 변경했으며 시스템에서 새 텍스트를 표시하려고 합니다. 시스템은 텍스트 서식을 지정한 후에 이 알림 코드를 전송하지만, 표시하기 전에 애플리케이션이 편집 컨트롤 창의 크기를 조정할 수 있도록 합니다.
EN_VSCROLL 사용자가 편집 컨트롤의 세로 스크롤 막대를 클릭했거나 편집 컨트롤 위로 마우스 휠을 스크롤했습니다. 시스템은 화면을 업데이트하기 전에 이 알림 코드를 전송합니다.
EN_SEARCHWEB 사용자가 '웹 검색' 컨텍스트 메뉴 항목을 클릭했습니다. 시스템은 브라우저를 시작한 후 이 알림을 보냅니다.

또한 시스템은 편집 컨트롤을 그리기 전에 편집 컨트롤의 부모 창에 WM_CTLCOLOREDIT 메시지를 보냅니다. 이 메시지에는 편집 컨트롤의 표시 컨텍스트(DC) 핸들과 자식 창의 핸들이 포함됩니다. 부모 창은 이러한 핸들을 사용하여 편집 컨트롤의 텍스트 및 배경의 색을 변경할 수 있습니다.

편집 컨트롤 기본 메시지 처리

미리 정의된 편집 컨트롤 창 클래스에 대한 창 프로시저는 편집 컨트롤 프로시저가 처리하지 않는 모든 메시지에 대해 기본 처리를 수행합니다. 편집 컨트롤 프로시저가 메시지에 대해 FALSE를 반환하면 미리 정의된 창 프로시저가 메시지를 확인하고 다음 기본 작업을 수행합니다.

메시지 기본 작업
EM_CANUNDO 편집 컨트롤 작업을 실행 취소할 수 있으면 TRUE를 반환합니다.
EM_CHARFROMPOS 지정된 지점에 가장 가까운 문자의 문자 인덱스 및 줄 인덱스를 반환합니다.
EM_EMPTYUNDOBUFFER 실행 취소 버퍼를 비우고 EM_CANUNDO 메시지에 의해 검색된 실행 취소 플래그를 FALSE로 설정합니다. 편집 컨트롤이 WM_SETTEXT 또는 EM_SETHANDLE 메시지를 받을 때마다 시스템에서 자동으로 실행 취소 플래그를 지웁니다.
EM_FMTLINES 여러 줄 편집 컨트롤의 줄 바꿈된 줄 끝에 소프트 줄 바꿈 문자(캐리지 리턴 2개와 줄 바꿈 1개)를 추가하거나 제거합니다. 한 줄 편집 컨트롤에 의해 처리되지 않습니다.
EM_GETFIRSTVISIBLELINE 한 줄 편집 컨트롤에서 처음 표시되는 문자의 인덱스(0부터 시작)를 반환하거나, 여러 줄 편집 컨트롤에서 맨 위에 표시되는 줄의 인덱스(0부터 시작)를 반환합니다.
EM_GETHANDLE 여러 줄 편집 컨트롤의 텍스트를 포함하는 버퍼를 식별하는 핸들을 반환합니다. 한 줄 편집 컨트롤에 의해 처리되지 않습니다.
EM_GETLIMITTEXT 현재 텍스트 제한을 문자 단위로 반환합니다.
EM_GETLINE 한 줄 편집 컨트롤의 문자들을 버퍼에 복사하고 복사된 문자 수를 반환합니다. 여러 줄 편집 컨트롤에서는 컨트롤에서 텍스트 줄을 검색하고 복사된 문자 수를 반환합니다.
EM_GETLINECOUNT 편집 컨트롤의 줄 수를 반환합니다.
EM_GETMARGINS 왼쪽 및 오른쪽 여백의 너비를 반환합니다.
EM_GETMODIFY 편집 컨트롤의 내용이 수정되었는지 여부를 나타내는 플래그를 반환합니다.
EM_GETPASSWORDCHAR 편집 컨트롤이 ES_PASSWORD 스타일과 함께 사용하는 문자를 반환합니다.
EM_GETRECT 편집 컨트롤에서 서식 사각형의 좌표를 반환합니다.
EM_GETSEL 편집 컨트롤에서 현재 선택 영역의 시작 및 끝 문자 위치를 반환합니다.
EM_GETTHUMB 여러 줄 편집 컨트롤의 세로 스크롤 막대에 있는 스크롤 상자의 위치를 반환합니다.
EM_GETWORDBREAKPROC 편집 컨트롤에서 현재 Wordwrap 함수의 주소를 반환합니다.
EM_LINEFROMCHAR 지정된 문자 인덱스를 포함하는 여러 줄 편집 컨트롤에 있는 줄의 0부터 시작하는 수를 반환합니다. 이 메시지는 EM_LINEINDEX 메시지의 반대입니다. 한 줄 편집 컨트롤에 의해 처리되지 않습니다.
EM_LINEINDEX 여러 줄 편집 컨트롤에서 한 줄의 문자를 반환합니다. 이 메시지는 EM_LINEFROMCHAR 메시지의 반대입니다. 한 줄 편집 컨트롤에 의해 처리되지 않습니다.
EM_LINELENGTH 한 줄 편집 컨트롤의 길이를 문자 단위로 반환합니다. 여러 줄 편집 컨트롤에서 지정된 줄의 길이를 문자 단위로 반환합니다.
EM_LINESCROLL 텍스트를 한 줄 편집 컨트롤에서 세로로 스크롤하거나 여러 줄 편집 컨트롤에서 가로로 스크롤합니다(컨트롤에 ES_LEFT 스타일이 있는 경우). lParam 매개 변수는 현재 줄에서 시작하여 세로로 스크롤할 줄 수를 지정합니다. wParam 매개 변수는 현재 문자부터 시작하여 가로로 스크롤할 문자 수를 지정합니다.
EM_POSFROMCHAR 지정된 문자의 클라이언트 좌표를 반환합니다.
EM_REPLACESEL 현재 선택 영역을 애플리케이션 제공 버퍼의 텍스트로 대체하고, 부모 창 EN_UPDATEEN_CHANGE 알림 코드를 전송하고, 실행 취소 버퍼를 업데이트합니다.
EM_SCROLL 여러 줄 편집 컨트롤에서 텍스트를 세로로 스크롤합니다. 이 메시지는 편집 컨트롤에 WM_VSCROLL 메시지를 보내는 것과 같습니다. 한 줄 편집 컨트롤에 의해 처리되지 않습니다.
EM_SCROLLCARET 편집 컨트롤에서 캐럿을 뷰로 스크롤합니다.
EM_SETFONT 지원되지 않음
EM_SETHANDLE 텍스트 버퍼로 사용되는 메모리에 대한 핸들을 설정하고, 실행 취소 버퍼를 비우고, 스크롤 위치를 0으로 재설정하고, 창을 다시 그립니다.
EM_SETLIMITTEXT 사용자가 편집 컨트롤에 입력할 수 있는 최대 문자 수를 설정합니다. 한 줄 편집 컨트롤의 경우 이 값은 0x7FFFFFFE 또는 wParam 매개 변수 값 중 더 작은 값입니다. 여러 줄 편집 컨트롤의 경우 이 값은 1이거나 wParam 매개 변수 값 중 더 작은 값입니다.
EM_SETMARGINS 왼쪽 및 오른쪽 여백의 너비를 설정하고 편집 컨트롤을 다시 그려 새 여백을 반영합니다.
EM_SETMODIFY 수정 플래그를 설정하거나 지워 편집 컨트롤이 수정되었는지 여부를 나타냅니다.
EM_SETPASSWORDCHAR 편집 컨트롤이 ES_PASSWORD 스타일과 함께 사용하는 문자를 정의합니다.
EM_SETREADONLY 편집 컨트롤에서 읽기 전용 스타일(ES_READONLY)을 설정하거나 제거합니다.
EM_SETRECT 여러 줄 편집 컨트롤의 서식 사각형을 설정하고 창을 다시 그립니다. 한 줄 편집 컨트롤에 의해 처리되지 않습니다.
EM_SETRECTNP 여러 줄 편집 컨트롤의 서식 사각형을 설정하지만 창을 다시 그리지는 않습니다. 한 줄 편집 컨트롤에 의해 처리되지 않습니다.
EM_SETSEL 선택할 시작 및 끝 위치를 설정하여 편집 컨트롤에서 문자 범위를 선택합니다.
EM_SETTABSTOPS 여러 줄 편집 컨트롤에서 탭 중지 위치를 설정합니다. 한 줄 편집 컨트롤에 의해 처리되지 않습니다.
EM_SETWORDBREAKPROC 기본 Wordwrap 함수를 애플리케이션 정의 Wordwrap 함수로 바꿉니다.
EM_UNDO 방금 삽입된 텍스트를 제거하거나 삭제된 문자를 삽입하고 선택 영역을 삽입된 텍스트로 설정합니다. 필요한 경우 EN_UPDATEEN_CHANGE 알림 코드를 부모 창으로 보냅니다.
WM_CHAR 한 줄 편집 컨트롤에 문자를 쓰고 EN_UPDATEEN_CHANGE 알림 코드를 부모 창으로 보냅니다. 문자를 여러 줄 편집 컨트롤에 씁니다. 복사를 위한 Ctrl+C 및 붙여넣기를 위한 Ctrl+V와 같은 표준 함수를 위한 액셀러레이터 키를 처리합니다. 또한 여러 줄 편집 컨트롤에서 TAB 및 CTRL+TAB 키 입력을 처리하여 대화 상자의 컨트롤 간에 이동하고 탭을 여러 줄 편집 컨트롤에 삽입합니다. 잘못된 문자에 MessageBeep 함수를 사용합니다.
WM_CLEAR 편집 컨트롤에서 현재 선택 영역(있는 경우)을 지웁니다. 현재 선택 항목이 없으면 캐럿 오른쪽에 있는 문자를 삭제합니다. 사용자가 SHIFT 키를 누르면 선택 영역을 클립보드로 잘라내거나 선택 영역이 없을 때 해당 문자를 캐럿 왼쪽에 삭제합니다. 사용자가 Ctrl 키를 누르면 선택 영역이 삭제되고, 선택 영역이 없는 경우 줄 끝으로 삭제됩니다.
WM_COPY 스타일이 ES_PASSWORD인 경우 메시지가 0을 반환하며, 아닌 경우 텍스트가 클립보드에 복사됩니다.
WM_CREATE 편집 컨트롤을 만들고 성공한 경우 부모 창에 TRUE를 알리고 실패 시 1을 알립니다.
WM_CUT 선택 영역을 클립보드로 잘라내거나 선택 영역이 없는 경우 커서 왼쪽의 문자를 삭제합니다.
WM_ENABLE 한 줄 편집 컨트롤에 대해 사각형을 회색으로 다시 그립니다. 한 줄 및 여러 줄 편집 컨트롤에 대해 활성화된 상태를 반환합니다.
WM_ERASEBKGND 여러 줄 편집 컨트롤 창을 편집 컨트롤의 현재 색으로 채웁니다.
WM_GETDLGCODE DLGC_WANTCHARS, DLGC_HASSETSEL 및 DLGC_WANTARROWS 값을 반환합니다. 여러 줄 편집 컨트롤에서는 DLGC_WANTALLKEYS도 반환합니다. 사용자가 ALT+BACKSPACE를 누르면 DLGC_WANTMESSAGE도 반환합니다.
WM_GETFONT 컨트롤에서 사용하는 글꼴의 핸들을 반환하거나 컨트롤이 시스템 글꼴을 사용하는 경우 NULL을 반환합니다.
WM_GETTEXT 지정된 수의 문자를 버퍼에 복사하고 복사된 문자 수를 반환합니다.
WM_GETTEXTLENGTH 편집 컨트롤에 있는 텍스트의 길이를 문자 단위로 반환합니다. null 종료 문자는 길이에 포함되지 않습니다.
WM_HSCROLL 여러 줄 편집 컨트롤의 텍스트를 가로로 스크롤하고 스크롤 상자 이동을 처리합니다.
WM_KEYDOWN 가상 키 코드의 표준 처리를 수행합니다.
WM_KILLFOCUS 편집 컨트롤 창의 키보드 포커스를 제거하고, 캐럿을 삭제하고, 현재 선택 영역을 숨기고, 편집 컨트롤이 포커스를 잃었다는 것을 부모 창에 알립니다.
WM_LBUTTONDBLCLK 현재 선택 영역을 지우고 커서 아래의 단어를 선택합니다. SHIFT 키를 누른 상태에서 커서 아래의 단어로 선택 영역을 확장합니다.
WM_LBUTTONDOWN 현재 삽입 지점을 변경합니다. SHIFT 키를 누른 경우 선택 영역을 커서의 위치로 확장합니다. 또한 여러 줄 편집 컨트롤에서 사용자가 여러 줄 편집 컨트롤 창 밖에서 마우스 단추를 누르고 있을 때 타이머가 자동으로 스크롤되도록 설정합니다.
WM_LBUTTONUP 마우스 캡처를 해제하고 한 줄 편집 컨트롤의 텍스트 삽입 지점을 설정합니다. 여러 줄 편집 컨트롤에서는 WM_LBUTTONDOWN 메시지의 타이머 집합도 종료합니다.
WM_MOUSEMOVE 마우스 단추가 눌려진 경우 한 줄 편집 컨트롤에서 현재 선택 영역을 변경합니다. 또한 여러 줄 편집 컨트롤에서 사용자가 여러 줄 편집 컨트롤 창 밖에서 마우스 단추를 누르고 있는 경우 타이머가 자동으로 스크롤되도록 설정합니다.
WM_NCCREATE 창의 CREATESTRUCT 구조체에 대한 포인터입니다. 이 메시지는 창을 처음 만들 때 WM_CREATE 메시지로 전송됩니다.
WM_NCDESTROY 텍스트 버퍼, 실행 취소 버퍼, 탭 중지 버퍼 및 강조 브러시를 포함하여 편집 컨트롤 창과 연결된 모든 메모리를 해제합니다.
WM_PAINT 배경을 지우고, 편집 컨트롤 창의 현재 색으로 창을 채우고, 테두리를 그리고(있는 경우), 글꼴을 설정하고, 텍스트를 그리고, 텍스트 삽입 캐럿을 표시합니다.
WM_PASTE 클립보드의 텍스트를 캐럿 위치의 편집 컨트롤 창에 붙여넣습니다.
WM_SETFOCUS 편집 컨트롤 창의 키보드 포커스를 설정합니다(현재 선택 영역이 숨겨져 있는 경우 보여주고 캐럿을 만듭니다).
WM_SETFONT 글꼴을 설정하고 필요에 따라 편집 컨트롤을 다시 그립니다.
WM_SETTEXT 텍스트를 한 줄 편집 컨트롤에 복사하고, 메모리가 부족하면 부모 창에 알리고, 실행 취소 버퍼를 비우고, EN_UPDATEEN_CHANGE 알림 코드를 부모 창으로 보냅니다. 여러 줄 편집 컨트롤에서 줄(필요한 경우)을 다시 래핑하고 스크롤 위치를 설정합니다.
WM_SIZE 편집 컨트롤 창의 크기를 설정하여 크기가 문자의 높이와 너비를 수용할 수 있도록 합니다.
WM_SYSCHAR 사용자가 ALT+BACKSPACE를 누르면 TRUE를 반환합니다. 그렇지 않으면 아무 작업도 수행하지 않습니다.
WM_SYSKEYDOWN 사용자가 ALT+BACKSPACE를 누르면 마지막 작업을 실행 취소합니다. 그렇지 않으면 아무 작업도 수행하지 않습니다.
WM_TIMER 사용자가 여러 줄 편집 컨트롤 창 외부의 마우스 단추를 누르고 있는 경우 편집 컨트롤 창의 텍스트를 스크롤합니다.
WM_UNDO 방금 삽입된 텍스트를 제거하거나 삭제된 문자를 삽입하고 선택 영역을 삽입된 텍스트로 설정합니다. 필요한 경우 EN_UPDATEEN_CHANGE 알림 코드를 부모 창으로 보냅니다.
WM_VSCROLL 여러 줄 편집 컨트롤을 세로로 스크롤하고 스크롤 상자 이동을 처리합니다. 한 줄 편집 컨트롤에 의해 처리되지 않습니다.

미리 정의된 편집 컨트롤 창 프로시저는 기본 처리를 위해 다른 모든 메시지를 DefWindowProc 함수에 전달합니다.