본문 바로가기
코스웨어/14년 스마트컨트롤러

20140918 일일보고서 출석번호8번 김진철

by 알 수 없는 사용자 2014. 9. 18.
728x90
반응형
체크박스

체크박스는 스타일에 따라 4가지 종류가 있다.


생성방법은 이전의 푸쉬버튼과 동일하다.

CreateWindow(TEXT( "button"),TEXT("Draw Ellipse?" ),WS_CHILD | WS_VISIBLE | BS_CHECKBOX,20,20,160,25,hWnd,(HMENU)0,g_hInst,NULL);


체크박스는 주로 참과 거짓을 선택할때 사용한다.


우선 기본적인 체크박스는 선택/비선택의 상태를 가지고  3가지 상태를 가지는 체크박스는 두경우를 제외하고도 Grayed라는 제3의 상태를 가진다.
또한 수동과 자동(윈도우즈가 자동 설정)으로 선택하는 체크박스로 나뉘어 총 4가지의 종류가 이루어져있다.


<소스코드 예제 : Check>



<결과>




라디오 버튼

라디오 버튼은 버튼의 한 종류로 여러개의 선택 사항중에서 한개의 선택사항을 고를 때 사용한다.

<소스코드 예제 : Radio>

  
<결과>



에디트

에디트는 문자열을 직접 입력받고자할때 사용하는 컨트롤이다.

CreateWindow(TEXT( "edit"),NULL,WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,10,10,200,25,hWnd,(HMENU)ID_EDIT,g_hInst,NULL);

CreateWindow함수의 3번째 인수를 이용해서 스타일을 변경할수가있다.


상태 변화에 따라 부모 윈도우에게 메시지를 전달한다.



<소스코드 예제 : Edit>

  


<결과>




리스트 박스

리스트 박스는 선택가능한 여러개의 항목(문자열)들을 나열해 놓고 그중 하나(또는 여러개)를 선택하는 컨트롤이다.


다음은 부모윈도우가 리스트 박스르 조작하고자할 때 사용하는 메시지이다.


리스트 박스의 상태가 변할 경우 부모윈도우로 다음의 메시지가 반환된다.




<소스코드 예제 : ListBox>

  
<결과>




콤보 박스

콤보 박스는 에디트와 리스트 박스를 결합한 컨트롤이다. 그래서 항목(문자열)을 선택할수도 또는 직접 입력할수도 있다.


<소스코드 예제 : ComboBox>

  
<결과>



스크롤 바

스크롤 바는 지금까지의 컨트롤에 비해서는 비교적 복잡한 컨트롤이다.
수치로 된 정확한 값보다는 정확하지 않은 값을 신속하게 요구할 경우 사용한다.


BOOL SetScrollRange( HWND hWnd, int nBar, int nMinPos, int nMaxPos, BOOL bRedraw );

SetScrollRange 함수로 최대값(nMaxPos), 최소값(nMinPos)을 지정하되 첫번째 인수가 스크롤 바의 윈도우 핸들이다. 두번째 인수 nBar는 메인 윈도우에 부착된 스크롤 바 또는 별도의 스크롤 바 컨트롤을 지정하는데 이 값이 SBS_CTL이면 별도의 컨트롤을 지정한다. 


int SetScrollPos( HWND hWnd, int nBar, int nPos, BOOL bRedraw ); 

SetScrollPos는 스크롤 바의 현재 위치를 세번째 인수 nPos로 지정한다.

또한 다른 컨트롤과는 달리 스크롤 바는 WM_HSCROLL(수평일 경우), WM_VSCROLL(수직일 경우)이라는 별도의 메시지를 부모 윈도우로 보낸 후 상태 변화 메시지를 보낸다.


LOWORD(wParam)으로 전달되는 값은 사용자의 스크롤 요구사항을 나타내며 가능한 값의 종류는 다음과 같다.


ex)


<소스코드 예제 : ScrollBar>

  
<결과>




스태틱

스태틱은 모든 컨트롤을 통틀어 제일 간단한 컨트롤이다. 이유는 문자열을 출력하기만하는 것이 기능의 전부이기 때문이다.
주로 다른 컨트롤을 설명하는 역할을 한다.
스태틱을 사용하는 주된 이유는 TEXTOUT와는 다르게 스스로 메시지를 처리 할 수있으므로 지워질 염려가 없다.

다음은 스태틱의 스타일이다.


<소스코드 예제 : Static>


<결과>






대화 상자

대화상자는 크게 모달형과 모델리스형으로 나뉘어진다. 모달(Modal)형은 대화상자를 닫기 전에 다른 윈도우로 전환할 수 없으며 반드시 OK버튼이나 Cancel 버튼을 눌러 대화상자를 닫아야 다른 윈도우로 전환할 수 있다. 

모달형 대화상자



모델리스형 대화상자



대화상자 생성방법
1. Dialog 리소스를 추가한후 편집한다.


2. 대화상자 프로시저를 작성(단 함수원형을 선언하지 않은경우 WinMain과 WndProc 사이에 선언)

BOOL CALLBACK AboutDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
                 switch (iMessage) {
                 case WM_INITDIALOG:
                                 return TRUE;
                 case WM_COMMAND:
                                 switch (LOWORD(wParam)) {
                                 case IDOK:
                                                EndDialog(hDlg,IDOK);
                                                 return TRUE;
                                 case IDCANCEL:
                                                EndDialog(hDlg,IDCANCEL);
                                                 return TRUE;
                                }
                                 break;
                }
                 return FALSE;
}

3. 마지막으로 WndProc에서 필요할 때에 대화상자를 호출

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
                 switch (iMessage) {
                 case WM_LBUTTONDOWN:
                                DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,AboutDlgProc);
                                 return 0;
                 case WM_DESTROY:
                                PostQuitMessage(0);
                                 return 0;
                }
                 return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
  

<소스코드 예제 : About>

  

<결과>






대화상자를 이용하여 계산기를 구현해 보도록 한다.





728x90