디시인사이드 갤러리

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

갤러리 본문 영역

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

이힝(175.215) 2013.02.02 10:52:14
조회 141 추천 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/07 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45301 65
2870673 [대한민국] 모스탄 대사 그라운드 씨에 출현 예정- 프갤러(121.172) 12:37 3 0
2870672 코드 가장 잘 짜는 AI 뭐냐? [6] 아스카영원히사랑해갤로그로 이동합니다. 12:18 35 0
2870671 종종 끌올되는 픎 자컨팀 빼앗겼다는 날조선동 [1] ㅇㅇ(110.70) 12:01 22 0
2870670 지피티 씨발 존나 답답하네 [1] 아스카영원히사랑해갤로그로 이동합니다. 11:38 37 0
2870669 한국에 과학수사 포렌식 이런직업이 많은이유는 뒷통수한방(1.213) 11:14 23 0
2870668 저커버거 빌게이츠 머스크 이런애들 좇센에서태어났으면 뒷통수한방(1.213) 11:02 17 0
2870667 헬마님 질문이 있습니다 [6] 아스카영원히사랑해갤로그로 이동합니다. 09:59 49 0
2870666 짱깨폭염 짱깨들 전부 좇센으로 물들었네 뒷통수한방(1.213) 09:55 16 0
2870664 자러 간다~ ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:29 10 0
2870662 흑흑.. 내컴이 내 선풍기 가져갔다.. ㅇㅅㅇ [4] 헤르 미온느갤로그로 이동합니다. 09:21 33 0
2870660 냥덩 세마리가 한 집에 있어~♬ [1] ♥냥덩이♥갤로그로 이동합니다. 08:54 26 0
2870659 나님은 천재전략가임 ㅇㅅㅇ [1] ♥냥덩이♥갤로그로 이동합니다. 08:14 36 0
2870658 게임엔진개발자 맥북 [6] 미니애폴리스갤로그로 이동합니다. 07:30 57 0
2870656 ❤✨☀⭐나님 시작합니당⭐☀✨❤ [1] ♥냥덩이♥갤로그로 이동합니다. 06:47 28 0
2870655 완결) 러스트 담론을 해체하다 루비갤로그로 이동합니다. 06:36 36 0
2870653 나팔 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 04:24 23 0
2870652 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 03:44 25 0
2870651 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 03:41 27 0
2870649 백신맞고 몸 망가진 2찍들은 국짐당 원망해야지 [7] 야옹아저씨갤로그로 이동합니다. 02:42 116 5
2870648 1일 1딸 멈추라고 하시면 멈추겠습니다. [3] 도리스아(121.139) 02:32 39 0
2870647 나는 기후위기를 걱정한 적이 없었는데 [9] 아스카영원히사랑해갤로그로 이동합니다. 01:34 71 0
2870646 MCP 에이전트로 코딩하면서 나는 프로그래밍 책 읽고 있는데 ㅆㅇㅆ(124.216) 01:24 36 0
2870644 그러고보니 예전 프갤러들 싹 사라졌네 [4] 박민준갤로그로 이동합니다. 00:48 114 1
2870643 울산에서 일하는 31살 공장충인데 지금 입문 어떻게 생각해 [6] ㅇㅇ(118.235) 00:25 103 0
2870642 바탕화면에 공룡 키워 보세요.... 프갤러(118.41) 07.08 84 1
2870641 프갤하는거 들켰다 프갤러(220.65) 07.08 37 0
2870639 성추행해서 미안해 너무 아파서 그랬어... 넥도리아(223.38) 07.08 36 0
2870638 고1 프로그래밍에 손을 대보려합니다 [9] 프갤러(218.239) 07.08 107 0
2870636 가끔 나 따라 다니는 유동 저거 냥덩이 아닐까 한다 [1] ㅆㅇㅆ(124.216) 07.08 52 0
2870635 조루디 ㅆㅇㅆ 잘어울려 ㅇㅇ(211.235) 07.08 42 3
2870634 블리치 정주행 예정 [1] ♥냥덩이♥갤로그로 이동합니다. 07.08 31 0
2870633 R 뭐 배우는데 OLD R베이스 문법? [2] ㅆㅇㅆ(124.216) 07.08 52 0
2870632 결혼하면 프갤러들 축의금 줘 [4] 조루디(110.35) 07.08 61 0
2870631 R은 대학원 갈 거 아니면 뭐 쓸 일 거의 없을텐데 ㅆㅇㅆ(124.216) 07.08 31 0
2870630 제발 한숨쉬지마세요 노처녀드라 [1] 조루디(110.35) 07.08 59 0
2870629 문관데 제발 도와주세요 제발 제발제발 [15] 프갤러(118.47) 07.08 96 0
2870627 주식대박났다 [2] 조루디(110.35) 07.08 91 0
2870625 인공지능 슬기❤ [1] ♥냥덩이♥갤로그로 이동합니다. 07.08 87 0
2870624 면접보면서 당황했던 경험 ㅇㅇ(112.169) 07.08 32 0
2870622 17일 도쿄 여행인데 아스카영원히사랑해갤로그로 이동합니다. 07.08 56 0
2870620 PC-6001 페이지용 Contiki 발명도둑잡기(118.216) 07.08 24 0
2870618 국비들으면 쉽게 취업하는시대일때 국비 짤린거면 얼마나 병신새끼인거임?? 뒷.통수한방(1.213) 07.08 83 1
2870617 좆같은 기술스택을 쓰고있다 <- 탈출해야함 프갤러(59.14) 07.08 47 0
2870615 어우 일나가기 실타..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 07.08 20 0
2870613 러스트 비판서 거의 다 썼다. 루비갤로그로 이동합니다. 07.08 33 0
2870610 냥덩이는 그냥 귀척하는 윤서인이라봐야 [2] 류류(115.136) 07.08 48 0
2870609 윤석열 무능한건 맞지않나 ㅇㅅㅇ 류류(115.136) 07.08 27 0
2870607 멍퀴님 제발 부탁드립니다 그만해주세요 [1] ♥냥덩이♥갤로그로 이동합니다. 07.08 62 0
2870605 실력상승은 인정에서 나온당⭐+ By 나님 [1] ♥냥덩이♥갤로그로 이동합니다. 07.08 54 0
뉴스 최고의 성형은 다이어트? 박수홍 아내 30kg 감량으로 예전 모습 되찾아...같은 옷 다른 느낌 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2