Rich Edit 컨트롤
Rich Edit 컨트롤은 사용자가 포맷을 갖춘 텍스트를 타이프하고 편집할 수 있는 창입니다. 사용자가 Rich Edit 컨트롤 안을 클릭하면 컨트롤이 포커스 되었음을 알리는 I-빔 커서가 표시됩니다. Rich Edit 컨트롤이 키보드 포커스를 갖는 동안, 사용자는 키보드를 이용하여 텍스트를 입력하거나 기존 내용을 편집할 수 있습니다. 편집 키는 BACKSPACE, DELETE, TAB, 화살표 키를 포함합니다. 사용자는 또한 삭제할 문자들을 선택하거나 새로운 문자들을 삽입할 지점을 선택하기 위해 마우스를 사용할 수도 있습니다.
Rich Edit 컨트롤은 멀티-라인 Edit 컨트롤과 비슷하지만, 다음 추가 기능들을 갖고 있습니다:
- 내용의 크기는 실질적으로 무한합니다. 왜냐하면 이것은 텍스트를 LONG_MAX/2 바이트까지 포함할 수 있기 때문입니다. (멀티-라인 Edit 컨트롤의 내용 크기는 32K가 한계입니다)
- 글꼴은 다른 컨트롤과 달리 DG의 표준 다이얼로그 항목 글꼴로 한정되지 않습니다. Rich Edit 컨트롤에는 여러 가지 글꼴 종류와 크기가 할당될 수 있습니다.
- 사용자는 탭 (TAB) 문자들을 입력할 수 있습니다.
- 현재 선택을 프로그램 코드로 세트하거나 가져올 수 있습니다.
- 텍스트 검색 기능이 내장되어 있습니다.
위의 기능들은 다이얼로그에서 텍스트 편집기로 사용하기 위한 Rich Edit 컨트롤을 갖추어 줍니다.
항목 타입
- DG_ITM_EDITTEXT
서브 타입
- DG_ET_RICHEDITTEXT
스크롤 flag
-
값 의미 DG_ET_HSCROLL Rich Edit 컨트롤에 수평 스크롤 바가 있습니다. DG_ET_VSCROLL Rich Edit 컨트롤에 수직 스크롤 바가 있습니다. DG_ET_NOSCROLL Rich Edit 컨트롤에 스크롤 바가 없습니다. - DG_ET_HSCROLL과 DG_ET_VSCROLL flag를 조합하여 수평 및 수직 스크롤 바 모두 가질 수 있습니다.
GRC 사양
RichEdit x y dx dy fontSpec [readonlyFlag] scrollMode
x와 y는 Rich Edit 컨트롤의 좌상단 코너의 픽셀 좌표입니다. dx와 dy는 컨트롤의 너비와 높이의 픽셀 크기입니다. fontSpec은 컨트롤 글꼴의 크기와 스타일을 선언합니다. scrollMode는 컨트롤이 수평 그리고/또는 수직 스크롤 바를 갖고 있어야 하는지 여부를 정의합니다.
fontSpec의 가능한 값은 다음과 같습니다:
-
값 DGSetItemFont에서 DG 상수 조합이 사용됨 ExtraSmall DG_IS_EXTRASMALL SmallPlain DG_IS_SMALL | DG_IS_PLAIN SmallBold DG_IS_SMALL | DG_IS_BOLD SmallItalic DG_IS_SMALL | DG_IS_ITALIC SmallUnderline DG_IS_SMALL | DG_IS_UNDERLINE LargePlain DG_IS_LARGE | DG_IS_PLAIN LargeBold DG_IS_LARGE | DG_IS_BOLD LargeItalic DG_IS_LARGE | DG_IS_ITALIC LargeUnderline DG_IS_LARGE | DG_IS_UNDERLINE
readonlyFlag의 가능한 값은 다음과 같습니다:
-
값 의미 editable Rich Edit 컨트롤은 편집 가능합니다. readOnly Rich Edit 컨트롤은 읽기-전용입니다.
scrollMode의 가능한 값은 다음과 같습니다:
-
값 의미 HScroll Rich Edit 컨트롤에게 수평 스크롤 바가 있습니다. VScroll Rich Edit 컨트롤에게 수직 스크롤 바가 있습니다. HVScroll Rich Edit 컨트롤에게 수평 및 수직 스크롤 바가 있습니다. NoScroll Rich Edit 컨트롤에게 스크롤 바가 없습니다.
메시지
-
메시지 의미 DG_MSG_CHANGE 텍스트-타입 Edit 컨트롤의 텍스트 또는 숫자-타입 Edit 컨트롤의 값이 변경되었습니다. 텍스트-타입 Edit 컨트롤에 대하여 메시지 데이터 파라미터는 항상 0입니다. integer 또는 double-타입 Edit 컨트롤에 대하여 이 파라미터는 컨트롤의 예전 값 또는 예전 double 값을 갖고 있는 double 정밀도 변수에 대한 포인터입니다. DG_MSG_FILTERCHAR Edit 컨트롤이 키보드 포커스를 갖고 있는 동안 키를 하나 눌렀습니다. 메시지 데이터 파라미터는 누른 키의 문자 코드를 포함하고 있습니다. 만약 애플리케이션이 다이얼로그 콜백 함수에서 1을 리턴하면, 문자는 필터링됩니다. DG_MSG_FOCUS Edit 컨트롤이 키보드 포커스를 얻거나 잃었습니다. 메시지 데이터는 각각 1 또는 0입니다. DG_MSG_DRAGDROP 드래그 앤 드롭 관련 이벤트가 발생했습니다. Edit 컨트롤에 대하여 이 메시지는 기본적으로 활성화됩니다. Edit 컨트롤은 드래그 소스 또는 드래그 대상이 될 수 있습니다.
수정 Flag
DGRichEditSetText, DGRichEditCatText and DGRichEditSetTextRange 함수들은 다이얼로그 콜백 함수에서 DG_MSG_INIT 메시지를 처리할 때 호출되는 경우를 제외하고 Rich Edit 컨트롤의 수정 flag를 세트할 수 있습니다. 사용자가 Rich Edit 컨트롤의 텍스트를 입력하거나 편집할 때, 수정 flag도 세트되지만 컨트롤은 다이얼로그 콜백 함수에게 DG_MSG_CHANGE 메시지를 보내지 않습니다. 수정 flag의 상태를 가져오거나 리셋(지우기)하려면 DGModified 또는 DGResetModified를 사용하십시오.
설명
Rich Edit 컨트롤의 텍스트는 DGRichEditSetText, DGRichEditCatText and DGRichEditSetTextRange 함수들을 사용하여 세트하고 변경할 수 있습니다. 전체 내용 또는 특정 범위의 문자들을 가져오려면 DGRichEditGetText 또는 DGRichEditGetTextRange를 각각 사용하십시오. 만약 당신이 Rich Edit 컨트롤의 텍스트를 세트하고 end-of-line 마커가 해당 플랫폼 지정 문자(Macintosh의 경우 CR, Windows의 경우 CRLF)가 아니라면, DG는 자동으로 텍스트의 end-of-line 마커를 변환하고 컨트롤에 텍스트를 세트합니다. 당신이 DGRichEditGetText 또는 DGRichEditGetTextRange로 텍스트를 가져올 때, 함수들은 텍스트 안에 있는 end-of-line 마커들을 주어진 타입으로 변환합니다.
Rich Edit 컨트롤의 글꼴은 GRC에서, 그리고 프로그램 코드에서 DGSetItemFont 또는 DGRichEditSetFont로 지정할 수 있습니다. DGSetItemFont로는 DG의 표준 다이얼로그 항목 글꼴만 Rich Edit 컨트롤에 할당할 수 있습니다. 그러나 DGRichEditSetFont는 Rich Edit 컨트롤의 글꼴을 설정할 때 더 많은 제어권을 제공합니다: 이 함수로 아무 글꼴 서체, 크기, 스타일을 지정할 수 있습니다. DGRichEditGetFont는 현재 Rich Edit 컨트롤에 할당된 글꼴의 파라미터들을 DGFontData structure에 가져옵니다.
Rich Edit 컨트롤이 키보드 포커스를 가질 때, 사용자는 TAB 키를 눌러 컨트롤의 텍스트에 탭 문자를 입력할 수 있습니다. 이 기능은 Rich Edit 컨트롤에만 있습니다. 다른 타입의 Edit 컨트롤들은 동일한 상황에서 TAB 키를 누르면 다음 포커스 가능한 항목으로 키보드 포커스를 옮깁니다. 탭의 크기는 문자들로 측정되고 하나의 탭 크기는 Rich Edit 컨트롤의 전체 내용에 적용됩니다. 탭 크기는 DGRichEditSetTabSize와 DGRichEditGetTabSize로 각각 세트하고 가져올 수 있습니다. Rich Edit 컨트롤이 생성될 때, 탭 크기는 DG에 의해 4 문자 크기로 초기화됩니다..
Rich Edit 컨트롤의 선택 및 카렛(caret) 위치는 사용자 액션뿐만 아니라 프로그램 코드에 의해서도 변경될 수 있습니다. 범위를 선택하거나 현재 선택의 시작 및 끝 위치를 가져오려면 DGRichEditSetSelect 또는 DGRichEditGetSelect를 각각 사용하십시오. 이 함수들은 내용의 버퍼 안에 있는 바이트 오프셋 대신 문자 위치와 함께 작동한다는 것을 참고하십시오. 이것은 멀티-바이트 시스템에서 특히 중요할 수 있습니다.
텍스트 길이는 DGRichEditGetLength 함수를 통해 문자 길이만큼, 혹은 바이트 수만큼 가져올 수 있습니다. 만약 Rich Edit 컨트롤의 라인 수, 또는 한 라인의 문자 수를 알고 싶으면 a href="DGRichEditGetLineCount.html">DGRichEditGetLineCount 또는 DGRichEditGetLineLength를 각각 호출하십시오. 라인과 문자 위치는 DGRichEditGetLinePos와 DGRichEditGetLineFromPos로 동기화 할 수 있습니다.
당신은 DGRichEditFindText 함수를 이용하여 Rich Edit 컨트롤의 전체 내용 또는 주어진 범위의 내용 중에서 지정한 텍스트를 검색할 수 있습니다. 이 함수는 텍스트를 아래쪽 또는 위쪽으로 검색할 수 있습니다. 검색은 대소문자를 구별할 수도 있고 안할 수도 있으며 전체 단어 일치 검색을 할 수도 있습니다.
물론, 표준 클립보드 동작(자르기, 복사, 붙여넣기) 역시 Rich Edit 컨트롤에서 작동합니다. 사용자가 Rich Edit 컨트롤의 내용 중 일부를 선택한 뒤에, 선택된 데이터는 클립보드로 복사 혹은 자르기를 할 수 있으며, 클립보드로부터 붙여넣기도 가능합니다. 클립보다 동작은 사용자가 키보드 단축키를 누르거나 애플리케이션의 Edit 메뉴에서 해당 커맨드를 선택했을 때 시작됩니다. Windows의 경우, 사용자는 Rich Edit 컨트롤에서 오른쪽 마우스 버튼을 클릭하고 거기에서 나타나는 컨텍스트 메뉴에서 커맨드를 선택할 수도 있습니다. 애플리케이션은 DGEditTextCut, DGEditTextCopy, 또는 DGEditTextPaste 함수를 호출하여 선택한 클립보다 커맨드를 실행해야 합니다. 클립보드에 복사하지 않고도 DGEditTextClear로 선택을 취소할 수 있습니다. 포커스된 Rich Edit 컨트롤에 마지막 동작(지우기, 복사, 자르기, 붙여넣기, 또는 타이핑)을 undo 하기 위해 DGEditTextUndo를 사용하십시오.
Rich Edit 컨트롤은 DG의 포커스 가능한 컨트롤 중 하나입니다. Edit 컨트롤이 사용자 액션의 결과로 키보드 포커스를 얻거나 잃을 때, 다이얼로그 콜백 함수는 DG_MSG_FOCUS 메시지를 받습니다. 프로그램 코드에서 DGSetFocus로 Edit 컨트롤에 키보드 포커스를 세트할 수도 있습니다. 현재 키보드 포커스가 있는 컨트롤을 가져오려면 DGGetFocus를 사용하십시오.
DG의 키보드 포커스와 포커스 가능한 컨트롤 카테고리는 본질적으로 Macintosh 운영체제에서와 동일한 의미를 갖고 있습니다. (즉, DG와 Macintosh에서 포커스 가능한 컨트롤은 동일한 타입입니다) 그러나 Windows의 경우, 더 많은 컨트롤들이 키보드 포커스를 가질 수 있습니다. DG의 포커스 가능한 컨트롤들은 Windows의 포커스 가능한 컨트롤들의 부분집합입니다. DGSetFocus와 DGGetFocus 함수들은 DG의 포커스 가능한 컨트롤들에서만 작동합니다.
요구사항
- 버전: DG 2.2.0 또는 이후
- 헤더: DG.h
참고사항
다이얼로그 항목 타입, Edit 컨트롤
클립보드 지정 함수, DGGetFocus, DGModified, DGResetModified, DGSetFocus, DGSetItemFont, Rich Edit 컨트롤 지정 함수, 콜백 함수
DG_MSG_FOCUS, DG_MSG_INIT
DGFontData