디시인사이드 갤러리

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

갤러리 본문 영역

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

이힝(175.215) 2013.02.02 10:52:14
조회 147 추천 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 - -
345184 어흥~ [1] 외계달팽갤로그로 이동합니다. 13.02.06 31 0
345180 진지하게 진로에 관해 조언좀 해줘.. [6] 진로상담(119.192) 13.02.06 187 0
345179 네이버지식인에 올렸는데 하도 답변이 않와서 물어볼게여 [7] 초보초초보(119.197) 13.02.06 141 0
345178 형들 나 우분투 깔았는데 뭐에 써야되? [3] 프밍갤짱갤로그로 이동합니다. 13.02.06 116 0
345177 현재 우리나라 프로그래머 인원이 어느정도 되나요? [1] 형님들아(175.115) 13.02.06 106 0
345176 형들 정보보호대학원 가는거 어떻게 생각함??? [6] ㅇㅇ(112.148) 13.02.06 328 0
345175 소맵 넥스트 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ [1] sad(59.11) 13.02.06 120 0
345173 심형래가 좀 더 센스가 있었으면 잘됬었을지도 모른다 [4] (168.126) 13.02.06 104 0
345172 [자바교육] 전액무료 국비지원 신입 웹프로그래밍 개발자 양성 자바교육특강 [9] 중앙일보HTA갤로그로 이동합니다. 13.02.06 222 0
345171 자바 학원 안 다녀도 가능해? 진짜로? [4] dd1(1.221) 13.02.06 197 0
345170 발전소 크래킹될 수도 있을까요? [11] 에어로홍갤로그로 이동합니다. 13.02.06 218 0
345169 전자파가 나와서 하는 말인데 [1] override(61.72) 13.02.06 62 0
345168 갑자기 질문생각남 [2] 형님들아(175.115) 13.02.06 59 0
345167 형님들 제가 고딩인데 어찌해야할까요... [8] Crisphin갤로그로 이동합니다. 13.02.06 152 0
345166 지금까지 갑했던 사이트 한번에 찾을 수 있는 사이트있나여? [1] 형님들아(175.115) 13.02.06 74 0
345165 요즘 내 데스크탑 모습. [2] 때릴꺼야?(221.151) 13.02.06 208 0
345164 자바의정석을 다 봤습니다. [7] 호옹이(223.62) 13.02.06 675 0
345163 프갤형들은 심형래 어떻게 생각해? [3] 코불(211.172) 13.02.06 155 0
345162 Code::Blocks에서 글꼴 설정하려면 어떻해야 함? 치카치카(211.216) 13.02.06 49 0
345161 고졸인데 어덯게 가야할까 ? [1] 천국거지갤로그로 이동합니다. 13.02.06 138 0
345160 지방 연봉6000 vs 수도권 연봉 3500 이면 어디감? [18] 장어구이(119.196) 13.02.06 578 0
345159 초딩때부터프로그래머하면 나중에 돈존나벌겠네 부럽다 [3] (211.237) 13.02.06 206 0
345158 Dixit 이라는 보드 게임 해본적 있는 사람? [3] 외계달팽갤로그로 이동합니다. 13.02.06 422 0
345157 세화님 [3] 품궈니갤로그로 이동합니다. 13.02.06 65 0
345156 토익 800이면 [2] 품궈니갤로그로 이동합니다. 13.02.06 197 0
345155 디아블로 3가.. ㅠ_ㅠ [1] 외계달팽갤로그로 이동합니다. 13.02.06 76 0
345153 야 삼성 exynos 브랜드 잘 살펴보면 재밌다 [2] 에어로홍갤로그로 이동합니다. 13.02.06 84 0
345152 갤럭시q 출시 루머 솔솔, ‘꿈의 접히는 화면’ 상용화 시작?.news [4] ?(123.142) 13.02.06 114 0
345151 SQLite3 C언어 고수분 없음? [3] 나리링갤로그로 이동합니다. 13.02.06 122 0
345149 영어 해라 [1] 물속의다이아갤로그로 이동합니다. 13.02.06 129 0
345148 직원 5명인 벤처들어가면 ㅈ되나요?? [4] topandbottom갤로그로 이동합니다. 13.02.06 253 0
345147 연봉은 짬푸가 진리다 허허벌판갤로그로 이동합니다. 13.02.06 81 0
345146 자바 문제 하나 도와주실분 [8] 자바크리(71.225) 13.02.06 141 0
345145 저기요 야간대학중에 정보보안학과 있는곳 아시는분 ㅠㅠ?? 씨앗(210.216) 13.02.06 100 0
345141 병특에 관한 질문 [1] 질문(123.228) 13.02.06 104 0
345138 백왕 연봉 세전 4천이 사실이냐? 얼룩돼지갤로그로 이동합니다. 13.02.06 135 0
345137 안랩 연수생 해본형 있어? [5] 폰노만(118.217) 13.02.06 5142 0
345136 아이디어 제공자 + 기획자 +ceo + 영업능력을 갖추었다면 개발자를 [1] ㅎㅎㅎ(203.226) 13.02.06 117 0
345135 여기 가산에 직장다니는 사람 얼마나 있나보자 [5] S-GUN갤로그로 이동합니다. 13.02.06 130 0
345134 창업에 있어서 아이디어 비중은 10%정도 ㅇㅇ(112.152) 13.02.06 131 0
345133 웹 퍼블리셔는 모야? [8] ㅁㄴㅇㄹ(124.146) 13.02.06 223 0
345131 컴공 편입 했다 [6] ㄱㄴㄷㅂ(210.217) 13.02.06 279 0
345129 존나 쩌는 사업 아이템 아이디어 알려준다. [9] (168.126) 13.02.06 227 0
345127 횽들 대체 머가잘못된거야 [4] 대한민국갤로그로 이동합니다. 13.02.06 116 0
345126 프로그래머 순화어는 풀그림사 [11] 에어로홍갤로그로 이동합니다. 13.02.06 220 0
345125 오유 사용자 "국정원 직원, 1분간 친여 글 14개 올려 [10] 에어로홍갤로그로 이동합니다. 13.02.06 204 0
345124 "40만 원 내라" 인터넷에 사진 1장 올렸다 곤욕 에어로홍갤로그로 이동합니다. 13.02.06 133 0
345122 남자들의 묘한 경쟁 심리, 선택 못 받은 자의 '분노' [2] 에어로홍갤로그로 이동합니다. 13.02.06 240 0
345120 ★★★이효리와 캬리이파뮤파뮤 뮤비를 보다보면★★★ 에어로홍갤로그로 이동합니다. 13.02.06 63 0
345119 노트북 뭐쓰냐?? [3] ㅁㄴㅇㄹ(121.134) 13.02.06 169 0
뉴스 "빚만 190억원, 하루 매출 16만원 나올 때도"…'두리랜드' 임채무 근황 디시트렌드 07.15
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2