5,232,959 th visitor since 2017.2.1 ( Today : 369 )
Programming
No. 299
Name. coolx
Subject. [API] Child Window
Main Cate. Win32
Sub Cate.
Date. 2006-07-20 09:45
Hit. 4446 (220.76.115.27)
File.
<Child Window Control>

Child Window Proc에서는 GerParent를 호출하여 Paretn
Window Handle을 얻을 수 있다.

hwndParent=GetParent(hwndChild);
SendMessage(hwndParent,iMsg,wParam,lParam);


<Child Window 만들기>
hwndButton[i]=CreateWindow{
"button",
button[i].text,
WS_CHILD | WS_VISIBLE | button[i].style,
// 10개가 존재
// BS_PUSHBUTTON,
// BS_DEFPUSHBUTTON,
// BS_CHECKBOX,
// BS_AUTOCHECKBOX,
// BS_RADIOBUTTON,
// BS_3STATE,
// BS_AUTO3STATE,
// BS_GROUPBOX,
// BS_AUTORADIOBUTTON,
// BS_OWNERDRAW

cxChar,
cyChar*(1+2*i),
20*cxChar,
7*cyChar/4,
hwnd,
(HMENU) i,
((LPCREATESTRUCT) lParam)->hInstance,
//WM_CREATE 메시지 동안에 lParam이 사실상
// hInstance요소를 가지는 CREATESTRUCT
// (creation structure)형식의 구조체에 대한
// 포인터이다.
NULL
);


<Child는 자신의 Parent와 대화한다.>
버튼을 클릭하면 WM_COMMAND메시지가 Child Window Control
에서 Parent Window에 전해진다.

LOWORD(wParam) : 차일드 윈도우 ID
HIWORD(wParam) : 인식 코드
lParam : 차일드 윈도우 핸들

인식코드는
BN_CLICKED 0
BN_PAINT 1
BN_HILITE 2
BN_UNHILITE 3
BN_DISABLE 4
BN_DOUBLECLICKED 5
1-5까지의 인식코드는 BS_USERBUTTON이라는 단추 스타일에
대한 것이므로, 오로지 BN_CLICKED 코드만을 보게 된다.

<Parent는 자신의 Child와 대화한다.>
윈도우 프로시저도 차일드 윈도우 컨트롤에 메시지를 보낼수 있다.

BM_GETCHECK
BM_SETCHECK
BM_GETSTATE
BM_SETSTATE
BM_SETSTYLE

BM_GETCHECK, BM_SETCHECK는 체크 상자와, 라디오 단추의 체크 표시
상태를 얻고 설정하기 위한 메시지이다.

BM_GETSTATE, BM_SETSTATE는 마우스로 누르거나 스페이스를 눌렀을
때, 그 상태가 정상인지 눌렸는지를 뜻한다.

BM_SETSTYLE은 단추가 만들어진 후에 스타일을 변경할 수
있도록 한다.

단추의 번쩍임을 흉내낼 수 있다.

SendMessage(hwndButton,BM_SETSTAE,1,0);
SendMessage(hwndButton,BM_SETSTAE,0,0);

BM_GETSTATE를 보내면, 단추가 눌려졌으면 TRUE를
정상 상태이면 FALSE(0)를 반환한다.
그러나, 누르기 단추는 on/off정보를 기억하지 않기 때문에,
BM_SETCHECK, BM_GETCHECK메시지는 사용되지 않는다.

차일드의 윈도우 핸들을 알면

id=GetWindowLong(hwndChild,GWL_ID);

를 이용하여, 차일드 윈도우의 아이디를 알 수 있다.

id=GetDlgCtrlID(hwndChild);

hwndChild=GetDlgItem(hwndParent,id);



[바로가기 링크] : http://coolx.net/cboard/develop/299



Name
Password
Comment
Copyright © 1999-2017, swindler. All rights reserved. 367,611 visitor ( 1999.1.8-2004.5.26 ), 2,405,771 ( -2017.01.31)

  2HLAB   2HLAB_Blog   RedToolBox   Omil   Omil_Blog