WinAPI

[WINAPI]컨트롤3(콤보박스, 스크롤, 스태틱)

FORHAPPy 2021. 12. 30. 22:39

콤보박스는 리스트박스와 비슷하게 사용한다. 

접두어만 살짝 다르다.

접두어 CBS_ 또는 CB_  를 붙인다.

 


<스크롤바>

 

스크롤바는 좀더 복잡한 컨트롤 이다.

수치로 정확한 값보다는 대충의 값을 신속하게 선택해야할때 스크롤바가 적합하다.

윈도우의 스크롤 상태를 관리하기 위해 사용하기 도 한다.

 

스크롤바는 scrollbar윈도우 클래스로 생성하고 수평스크롤 바일 경우 SBS_HORZ 스타일을 수직스크롤바일 경우 SBS_VERT스타일을 지정한다.

 

스크롤바는 범위와 현재 위치값을 가지는데 다음 두 함수들로 이 값들을 지정한다.

 

SetScrollRange(hWnd, nBar, nMinPos, nMaxPos, bRedDraw);

SetScrollPos(hWnd, nBar, nPos, bRedraw);

 

스크롤바는 부모윈도우로 통지 메시지를 보낼때 WM_COMMAND로 보내지 않고,

WM_FSCROLL(수평일 경우), WM_VSCROLL(수직일 경우) 의 별도의 메시지를 보낸다.

사건의 발생 뿐만아니라스크롤 상태에 대한 추가 정보도 같이 보내야 하기 때문이다.

 

인수 설명
LOWORD(wParam) 스크롤바 내의 어디를 눌렀는가
HIWORD(wParam) 현재위치
lParam 스크롤바의 윈도우 핸들

 

 

LOWORD(wParam) 메시지 종류

설명
SB_LINELEFT(또는 SB_LINEUP) 사용자가 왼쪽누름, 왼쪽으로 한단위 스크롤 시킨다.
SB_LINERIGHT(또는 SB_LINEDOWN) 사용자가 오른쪾 화살표를 누름, 오른쪽으로 한단위 스크롤
SB_PAGELEFT(SB_PAGEUP) 사용자가 왼쪽 몸통 부분을 눌렀다, 한페이지 왼쪽으로
SB_PAGERIGHT(SB_PAGEDOWN) 사용자가 오른쪽 몸통 부분을 눌렀다. 한페이지 오른쪽스크롤
SB_THUMBPOSITION 스크롤박스를 드래그한 후 마우스 버튼을 놓았다.
SB_THUMBTRACK 스크롤박스를 드래그 하고 있는 중이다.

 

 

 

 

 


static

 

스태틱은 다른컨트롤에 비해 비교적 간단한 컨트롤이다. 

오로지 문자열만 보여주는 기능이다.

주로 컨트롤의 용도를 설명하는 용도로 쓰인다. 

 

스태틱의 경우 실행중에 부모윈도우로 통지 메시지를 보낼 필요가 없기 때문에 ID를 -1로 지정한다.

여러개의 스태틱이 있을 경우 모두 -1을 사용해도 상관없다. ID -1은 ID를 주지않는다는 뜻이다.

 

 

TextOut으로 출력한 문자열은 그냥 문자열 일 뿐이므로 언제든지 지워질 수 있고, WM_PAINT에서 계속 복구해야한다.