디시인사이드 갤러리

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

갤러리 본문 영역

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

이힝(175.215) 2013.02.02 10:52:14
조회 145 추천 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 디지털 액세서리 기간한정 세일! 운영자 25/07/11 - -
346420 프갤 게이들아 그래픽 라이브러리 질문 좀 할게 [9] 핥라산갤로그로 이동합니다. 13.02.19 121 0
346419 여기가 컴갤인가요? [2] ㅋㄱ(183.96) 13.02.19 70 0
346417 try catch를 좁게 감싸는게 더 좋은거 아님? [1] 오라오라(175.197) 13.02.19 94 0
346416 형들 대학교 상담점 [6] 소크라테스(58.227) 13.02.19 165 0
346415 게시판 리스트랑 디비안에서 [2] 개구리래머갤로그로 이동합니다. 13.02.19 57 0
346414 안드로이드 잘하는 형 있어? 어플 말고 시스템 [3] 박느낌갤로그로 이동합니다. 13.02.19 97 0
346412 붕어싸만코 광고 재밌다 이모군(175.114) 13.02.19 53 0
346411 오라클 같은거 돈내고 설치해야함? 오라오라(175.197) 13.02.19 36 0
346410 형들 고려대 정보보호대학원에서 김앤장 가는 사람들은 뭐임? [2] ㅁㄴㅇㄹ(124.51) 13.02.19 400 0
346409 [자바] 트리 노드를 삭제하면 자동으로 그 형제 노드가 선택되게 하려는데 [3] Prographer갤로그로 이동합니다. 13.02.19 100 0
346408 리눅스 배우러 IT 뱅크 다닌 소감 [2] adsf(121.66) 13.02.19 248 0
346407 여기 아직 살아있나요? [1] McHello갤로그로 이동합니다. 13.02.19 66 0
346405 [c]내가만든 팩토리얼임 [4] 똥쟁이(114.204) 13.02.19 157 0
346404 님들아 이거 같이 쓰려면 어떻게 해야함 [3] ㅁㄴㅇㅁㄴㅇ(211.189) 13.02.19 81 0
346403 님들아 이게 뭐임 [4] ㅁㄴㅇㅁㄴㅇ(211.189) 13.02.19 73 0
346402 영어 자바 문제 해석좀 해주실분... [2] 자바크리(71.225) 13.02.19 83 0
346400 엄청 유치한 질문인데 페이스북 정도 웹커뮤니티 짤려면.. [13] ㅇㅁㄴ(58.126) 13.02.19 277 0
346399 IT특기병/전공대비/고졸,미취업자 중소기업친화과정취업반국비지원전액지원안내 김민섭팀장(211.48) 13.02.19 55 0
346397 python [6] 군대python(220.94) 13.02.19 182 0
346396 원래 포인터가 알듯하면서 모를꺼같은 느낌드는건가여? ㅁㄴㅇㄹ(76.94) 13.02.19 49 0
346394 설계단에서 계속 빡친다... [1] 1234(121.126) 13.02.19 66 0
346393 c# 하는 횽들 질문이 있어. [17] 힝아(1.212) 13.02.19 160 0
346392 형들 질문 좀 받아줘 [1] ㅋㅌㅊ(218.54) 13.02.19 47 0
346390 프갤 왜 실북갤 2위임 -ㅅ- 님들 조작같은것좀 하지마시죠 [6] lol백과사전(112.220) 13.02.19 180 0
346388 오라클 설치오류 질문. [4] 오라클(222.114) 13.02.19 146 0
346387 private 상속이니 protected 상속이니 하는건 C++ 만? [4] 통맥갤로그로 이동합니다. 13.02.19 108 0
346385 LDAP서버가 검색이 빠른 이유가 뭐야? [1] 133(115.144) 13.02.19 231 0
346384 형드라 졸작 주제좀 정해조 [2] ?(123.142) 13.02.19 191 0
346383 null을 아스키코드로 나타낼려면 ''로 해야되나여? [11] ㅁㄴㅇㄹ(76.94) 13.02.19 123 0
346382 야 님들아 [7] 무술소년고망갤로그로 이동합니다. 13.02.19 135 0
346381 형들 자바 책좀 소개해줘 [5] 15534(108.198) 13.02.19 155 0
346380 야 근데 Dev C++ 써야하냐 vs 써야하냐 vs 존나 편해보이는데 [6] ㅁㄴㅇㅁㄴㅇ(211.189) 13.02.19 147 0
346379 프로그래밍 존나 어려운데 막 만드는 재미는 있네 [2] ㅁㄴㅇㅁㄴㅇ(211.189) 13.02.19 134 0
346378 야 C 언어 배워서 뭐하냐 그냥 기초임? [4] ㅁㄴㅇㅁㄴㅇ(211.189) 13.02.19 191 0
346377 윈도우7 쓰고있는데 윈도우 xp에서 하는 카드놀이 어떻게함? [2] ㄴ아ㅓㄹ(121.152) 13.02.19 145 0
346376 컴공쪽도 취업할라면 기자단 이딴거 해야되냐 [2] ㅍㅇ(125.176) 13.02.19 105 0
346374 malloc/free 동적메모리할당을 배열에 어떻게 적용 시키죠? [1] ㅁㅇㄹㄴㄴㅇ(114.200) 13.02.19 97 0
346372 메일함 같은데서 검색으로 압축프로그램내용도 확인하는법 -_-(125.128) 13.02.19 39 0
346371 안드로이드 DB 쓸때 ArrayList 로 다 긁어오는게 좋음? [5] qwrqwr(194.214) 13.02.19 119 0
346370 횽들 이 사이트. 제로보드만으로 만들 수 있지? [3] 멍멍(218.232) 13.02.19 141 0
346369 C++ 동적 메모리 할당에 관해 질문 하나만 할게~^^ [5] 횽들(115.136) 13.02.19 124 0
346368 형들 언어공부하면서 궁금한건데 [1] ㅓㅏㅓㅏㅓㅏㅓ갤로그로 이동합니다. 13.02.19 74 0
346367 와 진짜 미치겠다 포폴만드려는데 [6] 도레기(221.138) 13.02.19 192 0
346364 얼마전에 가산쪽을 가봤는데... [1] ㅋㄱ(183.96) 13.02.18 142 0
346363 형들 error LNK2019 이 에러 해결법 아는 형 있어..? [7] 도레기(221.138) 13.02.18 138 0
346361 자바 GUI는 이거 쓰면 개편하지않냐ㅐ??? [3] 럼블좆도안귀여움갤로그로 이동합니다. 13.02.18 190 0
346359 대학생 선발 프로그램 지원서 같은 거 쓸때 [4] 네로시엔갤로그로 이동합니다. 13.02.18 99 0
346358 자바게이형들 형들 레이아웃 어캐짬? 크리스핀(124.195) 13.02.18 41 0
346356 형들 보통 GUI 짤때 뭘로짜? [2] 크리스핀(124.195) 13.02.18 119 0
346355 win32api) 다른 자식윈도를 선택할때 무슨 메시지가 발생하나요? [1] 이힝(118.39) 13.02.18 51 0
뉴스 보이그룹 에픽트레버스, 오늘(14일) 드라마 ‘풋풋한 로맨스’ OST ‘I fall in love’ 발매!  디시트렌드 07.14
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2