디시인사이드 갤러리

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

갤러리 본문 영역

Win32api 자식윈도우 메시지 처리하기 설명좀 부탁드려요

이힝(175.215) 2013.02.01 14:42:53
조회 128 추천 0 댓글 7


#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 되면 윈도가 위에것인지 아랫것인지 어케아나요? 이해가 안되네요..

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이번주 설문은 탈모 걱정 없어 보이는 머리숱 금수저 스타는? 운영자 25/07/14 - -
AD 휴대폰 액세서리 SALE 운영자 25/07/15 - -
345519 횽들중에 해커도 많겟지? [1] ddd(180.228) 13.02.10 114 0
345518 C#이 미래다!!!!!! [4] 쥐맨(121.67) 13.02.10 437 0
345510 딴과는 몰라도 컴공은 기숙사 재밋ㄹ것다 7even갤로그로 이동합니다. 13.02.10 99 0
345509 삼촌이 자꾸 나보고 자바 하라던데 [2] 黑猫갤로그로 이동합니다. 13.02.10 231 0
345508 C언에서 입력받은 값만큼 배열을 선언하는 방법은 없나요? [5] ㅁㄴㅇㄹㄴㄹ(114.200) 13.02.10 121 0
345507 끝내주는 자바스크립트 개발자 vs 흔한 C+개발자 [1] ㄴㅇㄴㅇ(1.231) 13.02.10 183 0
345506 자기가 하고 싶은 일을 해야 인생이 행복한거지.. ㄴㅇㄴㅇ(1.231) 13.02.10 53 0
345505 Call by reference VS call by value 종결해준다 [7] sleep(175.223) 13.02.10 259 0
345504 음력 새해 첫 글!!!!!! 에어로홍갤로그로 이동합니다. 13.02.10 37 0
345503 컴퓨터공학은 전망이 어떤가요.. [10] ㅇㅋㅇㅋ(211.246) 13.02.09 395 0
345502 새해 코웅갤로그로 이동합니다. 13.02.09 42 0
345501 북극성 노래 두 편 [1] 에어로홍갤로그로 이동합니다. 13.02.09 37 0
345499 메써드랑 클래스가 머에여 ? [2] 리낭갤로그로 이동합니다. 13.02.09 95 0
345496 어휴 명절날에 프갤도 싸움질이라니 [3] 개떙보갤로그로 이동합니다. 13.02.09 83 0
345495 프갤러들 싸우니깐 죶내여 [2] 헤헤(221.160) 13.02.09 75 0
345493 횽들 이제 이학년되는데 어셈블리어 [1] ㅁㄴㅇㄹ(211.210) 13.02.09 123 0
345490 리눅스 공부 들어가기 전에 윈도우 서버 공부할려고 하는데 [2] 리플레이갤로그로 이동합니다. 13.02.09 74 0
345487 함수 포인터 질문좀.. [8] ㅇㅇ(121.163) 13.02.09 129 0
345486 형들 제발 하나만 갈켜주십쇼 [3] ㅁㄴㅇㄹ(119.56) 13.02.09 56 0
345485 자바원숭이의 유래 [1] c(175.208) 13.02.09 133 0
345484 아무래도 기분이 좋아진 것 같아요 [3] 때릴꺼야?(116.40) 13.02.09 120 0
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 118 0
345476 왜 구글은 안드로이드 어플을 달빅머신과 자바로 개발하게 만들었을까? [7] (1.246) 13.02.09 212 0
345475 윈API를 왜 공부해야되냐? [4] korsup갤로그로 이동합니다. 13.02.09 173 0
345474 프갤이 실시간 북적갤이 된 이유는 에어로홍갤로그로 이동합니다. 13.02.09 88 0
345473 C C++ 재귀호출 속도 비교 ㅇㅇ(121.163) 13.02.09 103 0
345472 헠프갤이 실북갤이라니 93년생미필(203.226) 13.02.09 55 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
뉴스 ‘옥탑방의 문제아들’ 김숙, “책 프로 MC 일주일에 4권 못 읽어서 하차” 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2