본문 바로가기

소프트웨어/Win32

Win32] Button

https://github.com/ManSung-Kim/Win32Study/blob/master/StudyWin32/MyButton.cpp


Button의 생성

Android에서 xml말고 source상에서 Button(혹은 다른 component)을 추가할때 onCreate에서 component를 추가하는 코드를 넣는다.

마찬가지로 Win32에서는 WM_CREATE에서 Button을 추가하면 된다.



switch(iMessage) {
	case WM_CREATE: // 이곳에 BN_CLICKED 날라옴
		CreateWindow( 
			TEXT("button"), // class name
			TEXT("Hello"), // btn label
			WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, // pushbtn으로 사용함을 알림
			20,20,100,25, // x,y,w,h
			hWnd, // parent window
			(HMENU)BTN_1, // btn id
			g_hInst,
			NULL
			);


위의 소스와 같이 Button을 추가하면 된다.

style위치에서 BS_PUSHBUTTON이라는 옵션을 마스킹하는데 사용하고싶은 component 종류로 입력해주면 된다.

(HMENU)BTN_1은 Button이 눌렸을때 어떤 Button이 눌렸는지 확인을 하기위한 unique한 id이다.

소스상에서 #define 0x0e를 매핑해줬다.



Button Message 처리

case WM_COMMAND:
		switch(LOWORD(wParam)) { // wParam의 word low에 id날라옴
			//case menu1_id: /*do*/ break;
			//case menu2_id: /*do*/ break;
			//case accel_id: /*do*/ break;
			case BTN_1:
				switch(HIWORD(wParam)) {
				case BN_CLICKED: // push 
					MessageBox(hWnd,TEXT("Hello"),TEXT("Button"),MB_OK);
					break;
				}
				break;


위의 소스는 Button이 눌렸을때 Event를 처리하는 부분이다.(==Message를 처리하는)

Button이 눌렸을때 부모 Window와의 통신은 아래와 같은 Message로 이루어진다.



 

 설명

HIWORD(wParam) 

통지코드(Button Click시 BN_CLICKED)

LOWORD(wParam) 

Component ID 

lParam 

Msg를 보낸 child의 handle. 

Checkbox의 상태 확인들을 위해 사용됨. Button은 큰 고려를 안해도 됨 




자세한 소스는 git을 확인

https://github.com/ManSung-Kim/Win32Study/blob/master/StudyWin32/MyButton.cpp



실행 결과



'소프트웨어 > Win32' 카테고리의 다른 글

Win32] Edit  (0) 2016.01.17
Win32] CheckBox  (0) 2016.01.17
Win32] Bitmap Bitblt, StretchBlt  (0) 2016.01.17
Win32 공부를 시작하면서..  (0) 2016.01.06
Win32] Menu 만들기  (0) 2016.01.06
Win32 첫 소스(기본소스)  (0) 2016.01.06
VS2010] Resource .rc 다른편집기에서 열려있습니다.  (0) 2016.01.06