디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

매일매일 WIN32API 자식윈도우메시지처리 질문하기

이힝(175.215) 2013.02.02 10:52:14
조회 148 추천 0 댓글 4




#include <windows.h>
#include "..resource.h"
LRESULT CALLBACK FrameWndProc(HWND hwnd, UINT iMsg,
WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK ChildWndProc(HWND hDlg, UINT iMsg,
WPARAM wParam, LPARAM lParam);
HINSTANCE hInst;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS WndClass;
hInst = hInstance;
WndClass.style = CS_HREDRAW | CS_VREDRAW;
WndClass.lpfnWndProc = FrameWndProc;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hInstance = hInstance;
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClass.hbr = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU7_6);
WndClass.lpszClassName = "Window Class Name";
RegisterClass(&WndClass);
WndClass.lpfnWndProc = ChildWndProc;
WndClass.lpszMenuName = NULL;
WndClass.lpszClassName = "Child Window Class Name";
RegisterClass(&WndClass) ;
hwnd = CreateWindow("Window Class Name",
"Main Window Title",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}

HWND ChildHwnd[2];
LRESULT CALLBACK FrameWndProc(HWND hwnd, UINT iMsg,
WPARAM wParam, LPARAM lParam)
{
static BOOL split;
static HCURSOR hCursor;
static int boundary = -1;
RECT rectView;

switch (iMsg)
{
case WM_CREATE:
split = FALSE;
return 0;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_SPLIT_2_1:
if (split == TRUE) break;
split = TRUE;
GetClientRect(hwnd, &rectView);
ChildHwnd[0] = CreateWindowEx(
WS_EX_CLIENTEDGE,
"Child Window Class Name",
NULL,
WS_CHILD | WS_VISIBLE,
0,
0,
rectView.right,
rectView.bottom/2-1,
hwnd,
NULL,
hInst,
NULL
);
ChildHwnd[1] = CreateWindowEx(
WS_EX_CLIENTEDGE,
"Child Window Class Name",
NULL,
WS_CHILD | WS_VISIBLE,
0,
rectView.bottom/2+1,
rectView.right,
rectView.bottom/2-1,
hwnd,
NULL,
hInst,
NULL
);
boundary = rectView.bottom/2;
hCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENS));
return 0;
case ID_EXIT :
PostQuitMessage(0);
return 0 ;
}
return 0;
case WM_MOUSEMOVE:
if (HIWORD(lParam)>=boundary-2 && HIWORD(lParam)<=boundary+2) SetCursor(hCursor);
if (wParam == MK_LBUTTON && split == TRUE)
{
GetClientRect(hwnd, &rectView);
if (rectView.top+5 < HIWORD(lParam) && HIWORD(lParam) < rectView.bottom-5)
boundary = HIWORD(lParam);
MoveWindow(ChildHwnd[0], 0, 0, rectView.right, boundary - 1, TRUE);
MoveWindow(ChildHwnd[1], 0, boundary+1, rectView.right, rectView.bottom - boundary + 1, TRUE);
}
return 0;
case WM_LBUTTONDOWN:
if (split == TRUE)
{
SetCursor(hCursor);
SetCapture(hwnd);
}
return 0;
case WM_LBUTTONUP:
if (split == TRUE) ReleaseCapture();
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, iMsg, wParam, lParam);
}



LRESULT CALLBACK ChildWndProc(HWND hwnd, UINT iMsg,
WPARAM wParam, LPARAM lParam)
{
HDC hdc;
static int x[2] = {20, 20}, y[2]={20, 20}, flag[2];
int select;

switch (iMsg)
{
case WM_CREATE:
break;
case WM_TIMER:
x[wParam] = x[wParam] + 20;
hdc = GetDC(hwnd);
Ellipse(hdc, x[wParam] - 20, y[wParam] - 20,
x[wParam] + 20, y[wParam] + 20);
ReleaseDC(hwnd, hdc);
break;
case WM_LBUTTONDOWN:
if (hwnd == ChildHwnd[0])
select = 0;
else
select = 1;
flag[select] = 1 - flag[select];
if (flag[select])
SetTimer(hwnd, select, 100, NULL);
else
KillTimer(hwnd, select);
break;
case WM_DESTROY:
return 0;
}
return DefMDIChildProc(hwnd, iMsg, wParam, lParam);
}
자식윈도우 2개 중하나를 클릭하면 그 윈도내에서 원이 오른쪽으로 이동하는 예제인데요
WM_LBUTTONDOWN 되면 윈도가 위에것인지 아랫것인지 어케아나요? 이해가 안되네요..

이벤트가 발생하면 ChildWndProc에 hwnd에 자식윈도 핸들값이 전달되어서 메시지가 처리되는거 맞나요?
그럼 이벤트가 어디서 발생한지 어케알어시팔..
또 모든 자식 윈도우는 ChildWndProc에서 처리되나요? ChildWndProc1 ChildWndProc2 이렇게 여러개는 어케함

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이번주 설문은 탈모 걱정 없어 보이는 머리숱 금수저 스타는? 운영자 25/07/14 - -
AD 휴대폰 액세서리 SALE 운영자 25/07/15 - -
345483 고수님들 상담부탁이요 ㅠ 항공대 컴퓨터 정보공학 [1] ㅇㅋㅇㅋ(39.7) 13.02.09 167 0
345481 10년후엔 서버페이지 언어를 사용안하게 될지도 모르겠네 [8] 흠흠(1.231) 13.02.09 218 0
345480 php 페이징 왤캐어려움 ㅅㅂ [4] rthfg(175.215) 13.02.09 139 0
345479 2~4살짜리 애들 뭐 좋아하냐 [4] 루비•‿•갤로그로 이동합니다. 13.02.09 135 1
345478 나한테 죽이는 아이디어가 있어 [2] ㅎㅎㅎ(1.231) 13.02.09 117 0
345476 왜 구글은 안드로이드 어플을 달빅머신과 자바로 개발하게 만들었을까? [7] (1.246) 13.02.09 212 0
345475 윈API를 왜 공부해야되냐? [4] korsup갤로그로 이동합니다. 13.02.09 173 0
345474 프갤이 실시간 북적갤이 된 이유는 에어로홍갤로그로 이동합니다. 13.02.09 87 0
345473 C C++ 재귀호출 속도 비교 ㅇㅇ(121.163) 13.02.09 103 0
345472 헠프갤이 실북갤이라니 93년생미필(203.226) 13.02.09 54 0
345471 %uBCD1%uC2E0%uC0C8%uB07C%uB4E4+%u3149%u3 [1] Light_Year갤로그로 이동합니다. 13.02.09 139 0
345469 GUI 프로그래밍 공부 해보려는데 [2] 12(59.12) 13.02.09 175 0
345467 백왕 개부럽다.. [1] 코불(211.172) 13.02.09 179 0
345466 일단한번읽어봐 할마마갤로그로 이동합니다. 13.02.09 85 0
345464 node.js 완전 재밌네 zizi(1.231) 13.02.09 110 0
345462 visual studio도 프로젝트이름바꾸기좀 지원해줬으면 좋겟다 부스타(221.160) 13.02.09 139 0
345461 니들 시디아어플 flex 알어? 리낭갤로그로 이동합니다. 13.02.09 883 0
345460 안드로이드 프로그래밍 책 추천점여 [1] rthfg(175.215) 13.02.09 206 0
345458 설날 잘 보내셈 프갤횽들 [1] 바보아싸갤로그로 이동합니다. 13.02.09 75 0
345457 프갤에 전라도인 한명 뿐이지 않음? [6] 생물학(123.215) 13.02.09 152 0
345456 c++안하고 바로자바로가도대나여? [2] rthfg(175.215) 13.02.09 174 0
345455 딥 카피랑 쉐도우 카피를 간단히 설명해주자면 [1] 생물학(123.215) 13.02.09 149 1
345454 이것이바로 C++을 안하고 바로 자바를 배운 폐해랄까여 헤헤(221.160) 13.02.09 110 0
345453 애효, 프갤형들이 너무 테크니컬하게 태클을 거니까 백왕횽이 못알아먹잖아. 생물학(123.215) 13.02.09 51 0
345451 삼성 소매미 공채랑 차별심함? [2] 까치(211.172) 13.02.09 167 0
345450 백왕긔 딮카피랑 쉐도우카피 읽고 오셈. [3] 생물학(123.215) 13.02.09 111 0
345448 백왕님 왜이리 인기가 많죠? [1] 黑猫갤로그로 이동합니다. 13.02.09 83 0
345446 백왕이 제2의 곽가임? [2] 생물학(123.215) 13.02.09 102 0
345445 백왕의 call by reference 헤헤(221.160) 13.02.09 137 0
345444 자바는 거의 웹에만 사용돼? [1] 학ㅋ생ㅋ(180.68) 13.02.09 91 0
345442 자바하고 C++ 문자열 처리 차이점. 땡칠도사갤로그로 이동합니다. 13.02.09 125 0
345439 아 심심하다 땡칠도사갤로그로 이동합니다. 13.02.09 40 0
345438 여기왜실북갤2위임?님들조작함? [1] ㅇㅇ(175.223) 13.02.09 84 0
345437 영구친구님 [2] 헤헤(221.160) 13.02.09 46 0
345436 아아 조용하구나 = ω=) [1] 땡칠도사갤로그로 이동합니다. 13.02.09 69 0
345434 설마 오늘도 저격 당하진 않겠지? 생물학(123.215) 13.02.09 56 0
345432 설날 선물: 내향적 성격과 외향적 성격의 차이 [4] 에어로홍갤로그로 이동합니다. 13.02.09 667 0
345431 프로그래밍은말이지.. [5] 흑흑(1.231) 13.02.09 228 0
345430 백왕은 봄미 [4] 땡칠도사갤로그로 이동합니다. 13.02.09 129 0
345429 왜이렇게 자바 좋아하나요?? [11] ㅁㄴㅇ(78.108) 13.02.09 272 0
345426 내생각에 이제 it로 돈벌려면 모바일 게임밖에없다. [3] 흑흑(1.231) 13.02.09 266 1
345425 IT쪽에서 제일 알아주는 대학이 어디인가요? [5] ㅇㅇ(125.143) 13.02.09 279 1
345424 개발자들은 대리 짬빱 좀 되면 자기만의 세계에 빠지는 거 같다. 힝아(115.161) 13.02.09 158 1
345421 Call by value , Call by reference 속도차 2 [3] 헤헤(221.160) 13.02.08 179 0
345420 시밸 역시 컴터는 데스크탑이다 [1] 헤헤(221.160) 13.02.08 137 0
345419 오늘 학교가 휴강이다 땡칠도사갤로그로 이동합니다. 13.02.08 85 0
345418 커피스크립트 왜 유행 안타냐 시발 존나 빨고 싶은데 [1] 돌대갈(116.33) 13.02.08 90 0
345415 10년후엔 자바스크립트만 쓸듯.. [1] 흑흑(1.231) 13.02.08 131 0
345414 미국에서 일하다가 잠깐 한국온 놈이 그러던데 [4] 프갤럼(116.33) 13.02.08 231 0
345413 그래서 자바원숭이가 맥북을 샀다고? c(175.208) 13.02.08 91 0
뉴스 강철부대 멤버 ‘커밍아웃’… 동성연인과 럽스타그램 시작 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2