본문 바로가기

공부/컴퓨터

EDIT 컨트롤

반응형
#1. EDIT 에 대한 설명
일반적으로는 텍스트를 입력할수 있는 컨트롤이라고 생각하면 된다.

#2. 일반적인 생성법
CreateWindow("edit", NULL, 생성스타일, x, y, width, height, 부모윈도우, 메뉴, 핸들인스턴스, NULL )



#3. 생성스타일
ES_AUTOHSCROLL : 수평 스크롤 지원
ES_AUTOVSCROLL : 수직 스크롤 지원

ES_LEFT : 왼쪽 정렬
ES_CENTER : 중앙 정렬
ES_RIGHT : 오른쪽 정렬

ES_LOWERCASE : 소문자로 변환출력
ES_UPPERCASE : 대문자로 변환출력

ES_MULTILINE : 여러줄 편집 가능

ES_NOHIDESEL : 포커스 잃어도 선택영역표시

ES_READIONLY : 읽기 전용

ES_PASSWORD : 패스워드 입력 에디트생성 ( 기본 * )

ES_NUMBER : 숫자만 입력받음

ES_WANTRETURN : 대화상자에서 Enter 키로 개행 가능 ( 대화상자에서 엔터는 보통 확인으로 사용 )

ES_OEMCONVERT : 입력된 문자를 OEM 문자셋으로 변경.



#4. 생성예

멀티라인)
CreateWindow("edit",NULL,
                      WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|WS_BORDER|
                      ES_MULTILINE,
                      10,10,200,200,
                      hWnd,(HMENU)ID_EDIT,g_hInst,NULL);



에디터박스 변경되었는지 확인하는 법)
if ( SendMessage(hEdit, EM_GETMODIFY, 0, 0 ) == TRUE ) {
    return MessageBox(g_hWnd, "저장확인","확인",MB_YESNOCANCEL);
} else return IDNO;



패스워드 문자 변경)
SendMessage( hEdit, EM_SETPASSWORDCHAR, (WPARAM) '#', 0 );

에디터 편집용량제한변경 )
SendMessage( hEdit, EM_LIMITTEXT , (WPARAM)1048576 , 0 );



폰트변경 1)
HFONT hFont;
hFont = CreateFont( 30,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,
                             VARIABLE_PITCH, | FF_ROMAN , "궁서");
SendMessage( hEdit , WM_SETFONT , (WPARAM)hFont , MAKELPARAM(FALSE,0) );

폰트변경 2)
HFONT hFont;
hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
SendMessage(g_hEdit, WM_SETFONT, (WPARAM) hFont,MAKELPARAM(FALSE,0));
윈도우는 여섯개의 스톡 폰트를 지원하며 이것들은 GetStockFont 를 이용하여 바로 이용할수 있다.
메세지는 다음과 같다.




문자갯수 리턴받기)

length = SendMessage(g_hEdit,WM_GETTEXTLENGTH,0,0);

length는 \0을 포함하지 않은 실제 문자수를 리턴시켜 준다.
( The length does not include the terminating null character. )




에디트박스안의 문자리턴 받기)

length2= GetWindowText(g_hEdit,buffer,length+1);

buffer은 저장되어질 char* 버퍼.

length2는 리턴 되어진 문자의 갯수.

length+1 은 Edit 박스에서 리턴되어  buffer로 들어갈 문자수.
length+1을 하는 이유는 리턴 되는 문자열이 \0을 포함하고 있기 때문이다.
즉 문자열로 받기 위해서는 원래의 문자수 + 1 (\0) 을 해서 리턴을 받아야
문자열에 대응이 되게 되어 있다.
( copy to the buffer, including the NULL character.  )

참고 사항.
#1. WS_HSCROLL 을 쓴다면 자동개행(워드랩)은 되지 않음.
#2. EM_SETFONT는 사용되지 않음. 폰트 변경을 위해서 WM_SETFONT 메세지 사용할것
반응형