이전 까지 해서 그래픽을 마쳤다..
등이 있다.
참고로 컨트롤도 하나의 윈도우이다. 화면상의 일장한 영역을 차지하며 자신의 고유 메시지를 처리할 수 있는 능력을 
가지고있다. 그렇다고 독립적으로 만들수있는건 아니다 무조건 부모 윈도우가 있어야 사용이 가능하며 부모윈도우가 만들어
질때 (WM_CREATE) 메세지가 발생했을때 만든다. 위에서 설명하였듯 컨트롤도 하나의 윈도임으로.
CreateWindow함수를 사용한다.
접기 BS_PUSHBUTTON  CreateWindow(TEXT("button"),TEXT("GFP Button 0"),WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,20,20,500,25,hWnd,(HMENU)GFPBUTTON,wndnsakura,NULL);   return 0;
 WS_CHILD | WS_VISIBLE  은 거의 고정이긴 하지만 의미는 자식윈도 WS_VISIBLE은 ShowWindow함수 대신 사용
 BS_PUSHBUTTON 
 푸쉬 버튼  
 BS_DEFPUSHBUTTON 
 디폴트 푸시 버튼  
 BS_CHECKBOX 
 체크 박스  
 BS_3STATE 
 3가지 상태를 가지는 체크 박스  
 BS_AUTOCHECKBOX 
 자동 체크 박스  
 BS_AUTO3STATE 
 3가지 상태를 가지는 자동 체크 박스  
 BS_RADIOBUTTON 
 라디오 버튼  
 BS_AUTORADIOBUTTON 
 자동 라이오 버튼  
 BS_GROUPBOX 
 그룹박스   
등 이 있다.
버튼을 누르면 WM_COMMAND 메세지를 부모 윈도우에게 보내며 이때 전달되는 정보는 다음과 같다.
 HIWORD(wParam) 
 통지 코드  
 LOWORD(wParam) 
 컨트롤의 ID  
 lParam 
 메세지를 보낸 차일드 윈도우의 윈도우 핸들   
통지 코드는 자식이 어떤 통지를 보냈냐는 것인데 버튼같은 경우 BN_CLICKED이므로 이 값을 특별히 검출할 필요없다.
하지만 에디트나 리스트 박스같은경우는 통지코드도 봐야한다.
컨트롤의 아이디는  CreateWindow의 함수 id지정 인수로 받아온다.
부모 윈도우의 WM_COMMAND에서 LOWORD(wParam)값을 조사하여 이벤트를 발생시킨다.
BS_CHECKBOX 
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage,WPARAM wParam, LPARAM lParam){
 static BOOL drawflag=false;
 static HWND check,check1; 
 switch(iMessage){
  check=CreateWindow(TEXT("button"),TEXT("Draw Ellipse"),WS_CHILD | WS_VISIBLE | BS_CHECKBOX,20,80,500,25,hWnd,(HMENU)GFPCHECK,wndnsakura,NULL); 
  check1=CreateWindow(TEXT("button"),TEXT("Good bye Message"),WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX,20,110,500,25,hWnd,(HMENU)GFPCHECK1,wndnsakura,NULL); 
  return 0; case GFPCHECK:    }if(SendMessage(check1,BM_GETCHECK,0,0)){ 
}
 
컨트롤은 자신에게 어떤 변화가 있을때 마다 부모 윈도우로 메세지를 보낸다.
이 메세지를 통지 메세지라고 한다.
부모 윈도우가 체크 박스로 보낼수 있는 메세지는
BM_GETCHECK 체크 박스가 현재 체크되어있는 상태인지 조사 한다. 체크박스가가지는 상태는 다음 세가지가 있다.
 BST_UNCHECKED 
 0 
 노 체크  
 BST_CHECKED 
 1 
 체크  
 BST_INDETERMINATE 
 2 
 체크도 아니고 노 체크도 아닌   
접기 역시 꾸역꾸역 넣는건 잘 안되는군요.