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 |
|
|
|
[Modify] [Delete] | [Reply] [List] |