정적 컨트롤 정보

응용 프로그램은 종종 정적 컨트롤을 사용 하 여 다른 컨트롤에 레이블을 만들거나 컨트롤 그룹을 구분 합니다. 정적 컨트롤은 자식 창 이지만 선택할 수는 없습니다. 따라서 키보드 포커스를 받을 수 없고 키보드 인터페이스를 사용할 수 없습니다. SS NOTIFY 스타일이 있는 정적 컨트롤은 _ 마우스 입력을 받고 사용자가 컨트롤을 클릭 하거나 두 번 클릭 하면 부모 창에 알립니다. 정적 컨트롤은 정적 창 클래스에 속합니다.

정적 컨트롤은 겹쳐진, 팝업 및 자식 창에서 사용할 수 있지만 시스템에서 동작을 표준화 하는 대화 상자에서 사용 하도록 디자인 되었습니다. 개발자는 대화 상자 외부에서 정적 컨트롤을 사용 하 여 응용 프로그램이 비표준 방식으로 동작할 수 있는 위험을 늘립니다. 일반적으로 개발자는 대화 상자에서 정적 컨트롤을 사용 하거나 SS _ OWNERDRAW 스타일을 사용 하 여 사용자 지정 된 정적 컨트롤을 만듭니다.

이 섹션에서는 다음 항목에 대해 설명 합니다.

정적 컨트롤 형식

정적 컨트롤에는 네 가지 형식이 있습니다. 각 형식에는 하나 이상의 정적 컨트롤 스타일이있습니다.

Simple Graphics 정적 컨트롤

간단한 그래픽 정적 컨트롤은 프레임이 나 채워진 사각형을 표시 합니다. 프레임은 검정, 회색, 흰색 등의 여러 스타일로 그릴 수 있습니다. 또한 프레임을 새김 형 스타일로 그려 3 차원 모양으로 지정할 수 있습니다. 프레임 스타일에는 SS _ 블랙 프레임, ss _ GRAYFRAME, ss _ WHITEFRAME, SS _ ETCHEDHORZ, ss _ ETCHEDVERT 및 ss _ ETCHEDFRAME가 포함 됩니다.

사각형에는 검정, 회색, 흰색의 세 가지 스타일 중 하나로 색을 채울 수 있습니다. 이러한 스타일은 상수 SS _ 블랙 rect, ss _ GRAYRECT 및 ss WHITERECT에 의해 정의 됩니다 _ .

그래픽 스타일을 결합할 수 없습니다.

텍스트 정적 컨트롤

텍스트 정적 컨트롤은 다음 다섯 가지 스타일 중 하나로 사각형의 텍스트를 표시 합니다.

  • 자동 줄 바꿈 없이 왼쪽 맞춤
  • 자동 줄 바꿈와 왼쪽 맞춤
  • 가운데 맞춤
  • 오른쪽 맞춤
  • simple

이러한 스타일은 상수 SS _ LEFTNOWORDWRAP, ss _ LEFT, ss _ CENTER, SS _ RIGHT 및 SS _ SIMPLE에 의해 각각 정의 됩니다. 시스템은 다시 정렬 되지 않는 "단순" 텍스트를 제외 하 고 미리 정의 된 방식으로 이러한 컨트롤의 텍스트를 다시 정렬 합니다.

응용 프로그램은 Setwindowtext 함수 또는 WM _ SETTEXT 메시지를 사용 하 여 언제 든 지 텍스트 정적 컨트롤의 텍스트를 변경할 수 있습니다.

시스템은 정적 컨트롤에서 사용할 수 있는 것과 일치 하지 않는 항목을 모두 표시 합니다. 컨트롤에 적절 한 크기를 계산 하려면 텍스트의 글꼴 메트릭을 검색 합니다. 글꼴 및 글꼴 메트릭에 대 한 자세한 내용은 글꼴 및 텍스트를 참조 하세요.

기본적으로 다른 컨트롤의 경우와 마찬가지로 정적 컨트롤의 창 텍스트는 컨트롤의 바로 가기 키로 다음 문자를 정의 하는 앰퍼샌드를 포함할 수 있습니다 (또는 대부분의 정적 컨트롤의 경우 탭 순서의 다음 컨트롤인 경우 해당 컨트롤에 대 한 컨트롤의 경우). 앰퍼샌드를 사용 하 여 바로 가기를 정의 하는 대신 텍스트에 앰퍼샌드를 표시 하려는 경우 SS _ noprefix 스타일을 포함 합니다.

Image 정적 컨트롤

이미지 정적 컨트롤은 비트맵, 아이콘 (애니메이션 아이콘 포함) 또는 향상 된 메타 파일을 표시할 수 있습니다. 특정 정적 컨트롤이 표시 하는 그래픽 형식은 SS _ BITMAP, ss _ ICON 또는 ss ENHMETAFILE 컨트롤의 스타일에 따라 달라 집니다 _ . 응용 프로그램은 컨트롤을 만들 때 스타일을 지정 하 고 컨트롤에서 표시할 비트맵, 아이콘 또는 메타 파일에 대 한 핸들도 지정 합니다. 컨트롤이 생성 된 후에는 응용 프로그램에서 새 그래픽 개체에 대 한 핸들을 지정 하 여 STM _ SETIMAGE 메시지를 전송 하 여 컨트롤에 다른 그래픽을 연결할 수 있습니다. 응용 프로그램은 현재 정적 컨트롤과 연결 된 그래픽 개체에 대 한 핸들을 STM _ GETIMAGE 메시지를 전송 하 여 검색할 수 있습니다. 응용 프로그램은 SendDlgItemMessage 함수를 사용 하 여 정적 컨트롤에 메시지를 보냅니다.

정적 컨트롤 Owner-Drawn

응용 프로그램은 SS _ OWNERDRAW 스타일을 사용 하 여 정적 컨트롤을 그리는 데 책임이 있습니다. 소유자가 그린 정적 컨트롤의 부모 창 (소유자)은 정적 컨트롤을 그려야 할 때마다 WM _ DRAWITEM 메시지를 수신 합니다. 메시지에는 컨트롤을 그릴 때 소유자 창에서 사용 하는 정보가 포함 된 Drawitemstruct 구조체에 대 한 포인터가 포함 되어 있습니다.

정적 제어 기본 메시지 처리

미리 정의 된 정적 컨트롤 창 클래스에 대 한 창 프로시저는 정적 제어 프로시저에서 처리 하지 않는 모든 메시지에 대 한 기본 처리를 수행 합니다. 정적 컨트롤이 모든 메시지에 대해 FALSE 를 반환 하는 경우 미리 정의 된 창 프로시저는 메시지를 확인 하 고 다음 표에 설명 된 기본 동작을 수행 합니다. 표에서 텍스트 정적 컨트롤은 SS _ LEFTNOWORDWRAP, ss _ LEFT, ss _ CENTER, SS _ RIGHT 또는 ss _ SIMPLE 스타일을 사용 하는 정적 컨트롤입니다.

메시지 기본 작업
WM _ 만들기 그래픽 개체를 로드 하 고 그래픽 정적 컨트롤의 개체 크기에 맞게 창의 크기를 조정 합니다. 다른 정적 컨트롤에 대 한 작업을 수행 하지 않습니다.
WM _ 제거 그래픽 정적 컨트롤에 대 한 모든 그래픽 개체를 해제 하 고 삭제 합니다. 다른 정적 컨트롤에 대 한 작업을 수행 하지 않습니다.
WM _ 사용 표시 되는 정적 컨트롤을 다시 그립니다.
WM _ ERASEBKGND 컨트롤에서 배경을 지우는 것을 나타내는 TRUE 를 반환 합니다.
WM _ GETDLGCODE DLGC _ 정적을 반환 합니다.
WM _ GETFONT 텍스트 정적 컨트롤의 글꼴에 대 한 핸들을 반환 합니다.
WM _ GETTEXT 복사 된 문자 수를 반환 합니다.
WM _ GETTEXTLENGTH 텍스트 정적 컨트롤에 대 한 텍스트의 길이 (문자)를 반환 합니다.
WM _ LBUTTONDBLCLK 컨트롤 스타일이 SS NOTIFY 인 경우 부모 창을 Stn _ DBLCLK 알림 코드로 보냅니다 _ .
WM _ LBUTTONDOWN 컨트롤 스타일이 SS NOTIFY 인 경우 부모 창에서 Stn _ 클릭 알림 코드를 보냅니다 _ .
WM _ NCLBUTTONDBLCLK 컨트롤 스타일이 SS NOTIFY 인 경우 부모 창을 Stn _ DBLCLK 알림 코드로 보냅니다 _ .
WM _ NCLBUTTONDOWN 컨트롤 스타일이 SS NOTIFY 인 경우 부모 창에서 Stn _ 클릭 알림 코드를 보냅니다 _ .
WM _ NCHITTEST 컨트롤 스타일이 SS HTCLIENT _ 이 고, 그렇지 않으면 HTTRANSPARENT를 반환 합니다.
WM _ 페인트 컨트롤을 다시 그립니다.
WM _ SETFONT 텍스트 정적 컨트롤의 글꼴을 설정 하 고 다시 그립니다.
WM _ SETTEXT 텍스트 정적 컨트롤의 텍스트를 설정 하 고 다시 그립니다.

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