디시인사이드 갤러리

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

갤러리 본문 영역

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

이힝(175.215) 2013.02.02 10:52:14
조회 142 추천 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 - -
344870 나도 소소한 꿈이 생겼다. 우주에 물건 보내기 ㅋㅋ ㅇㅇ(58.102) 13.02.04 38 0
344868 야 달맞이 쟤 살춤이잖아 [3] 루비•‿•갤로그로 이동합니다. 13.02.04 92 0
344867 영어 독해가안되는데 [2] ㅇㅇ(61.98) 13.02.04 76 0
344866 13살 소녀가 쏘아올린 우주로 간 헬로 키티 에어로홍갤로그로 이동합니다. 13.02.04 73 0
344865 winpcap은 자료가 많던데 sharppcap은 자료가 별로 없네요 고구리(121.1) 13.02.04 51 0
344864 미스터리 보랏빛 구슬, 사막서 포착…정체는? 에어로홍갤로그로 이동합니다. 13.02.04 46 0
344863 하루에 100문제 푸는거 쉬울 수 있습니다. [1] CPerl(116.41) 13.02.04 94 0
344862 [C]if( strcmp(str1, str2)==0 ) 하고 [11] ㅋㅌㅊㅍ(222.239) 13.02.04 99 0
344861 출근시간이 8시인 회사... [3] 장어구이(119.196) 13.02.04 130 0
344860 하루쟁일 문서작업한다고 짜증낼려고 왔더니 어그로에 낚였네 ㅇㅇ(58.102) 13.02.04 31 0
344859 그래마린아.... 50억메소부럽다 11컴공(61.79) 13.02.04 37 0
344857 8비트씩 0~8191번지까지 처리할수잇는 메모리면 플립플롭이 [5] 11컴공(61.79) 13.02.04 57 0
344852 여러분 뇌를 자극하는 하드웨어 입문 이라는 책읽어보셨습니까? 좋은듯ㅋ [2] 11컴공(61.79) 13.02.04 87 0
344851 영어못하면 프로그래밍 아예하지마세효 [1] ㅎㅎㅎ(203.226) 13.02.04 103 0
344850 뭐 게임핵??????????????????????????????????? [1] d(125.177) 13.02.04 77 0
344849 청마린 보니까그냥 중딩 프리메이플하는새낀데 너무진지하게답변ㄴㄴ [1] 11컴공(61.79) 13.02.04 56 0
344848 시스템엔지니어를 목표로하는 공대생인데여.. [4] 111(112.153) 13.02.04 125 0
344847 책사요 리얼타임렌더링 2판 사요 oo(14.32) 13.02.04 19 0
344845 프로그래밍은 고도의 지적노동입니다. [2] ㅎㅎㅎ(203.226) 13.02.04 106 0
344844 저기 형님들 와우컹컹갤로그로 이동합니다. 13.02.04 28 0
344842 그러면 우분투 입문서좀 추천해주세연 [3] 리플레이갤로그로 이동합니다. 13.02.04 61 0
344841 웹에이젼시 차리는게 난점은 무엇이 있을가요? [1] ㅋㅋㅋ(180.67) 13.02.04 62 0
344840 자바 물어볼게있는데... 중요함 꼭 제발 [1] 자바킹갤로그로 이동합니다. 13.02.04 57 0
344839 윈도 메모장은 뭘로 만들엇나요? [2] 이힝(175.215) 13.02.04 86 0
344838 아 형들 웹으로 돌아가는 마크서버 어드민 탈취 할수 없을까. 티모티모(211.112) 13.02.04 69 0
344836 우리이성적으로생각하자 [3] 할마마갤로그로 이동합니다. 13.02.04 95 0
344835 이어서 [1] 에어로홍갤로그로 이동합니다. 13.02.04 1152 0
344834 야 너네 여기서 뭐 가입하고 싶어? [4] 에어로홍갤로그로 이동합니다. 13.02.04 160 0
344833 데비안 서버 책은 어떤걸로 입문하면 되나연? [3] 리플레이갤로그로 이동합니다. 13.02.04 56 0
344832 왜 글이 안 올라가지? 에어로홍갤로그로 이동합니다. 13.02.04 19 0
344831 학교 커리큘럼에 데이터구조잇던데 이게 자료구조지? [1] 한그로가컴퓨(61.79) 13.02.04 78 0
344828 그치 명문대 아니라고 성공 못하는건 아님 [2] 루비•‿•갤로그로 이동합니다. 13.02.04 142 0
344827 메이플스토리 핵 일주일 만에만드는법좀 가르쳐주실분 [5] 카이니최고(61.79) 13.02.04 152 0
344826 내가 쓴글을 C언어 기준으로 답하지마라 [5] 얼룩돼지갤로그로 이동합니다. 13.02.04 104 0
344822 게임핵 이야기 나오니 프갤러들아 이민갈생각있으면 [5] ㅁㅁ(125.183) 13.02.04 635 1
344821 SSD 벤치마크 프로그램 관련해서 좀 아는 형들 있엉? MUFF갤로그로 이동합니다. 13.02.04 40 0
344820 궁금한게 있는데 알려주실분 ㅎㅎ [6] 자료구조(175.196) 13.02.04 93 0
344819 소셜네트워크에서 주커버그가 첨에쓰는컴터 OS 유닉스냐?? [3] 한글과컴퓨터(61.79) 13.02.04 104 0
344818 perl도 php처럼 웹 프로그래밍 언어인가여?? [3] 글쓴이(61.79) 13.02.04 88 0
344817 고삼 존뉴비들은 봄미다 (2) [5] 땡칠도사갤로그로 이동합니다. 13.02.04 145 0
344814 맥북이 아트네 [3] dd(121.163) 13.02.04 113 0
344812 PHP 공부할거면 javascript 꼭안해도되냐? [4] 엽산(61.79) 13.02.04 130 0
344810 중국어가 얼마나 메리트가있어? [7] kysersoze(211.234) 13.02.04 190 0
344809 디버깅할때 한줄씩 읽다 함수를 빠져나가면서 에러가 나는건 무슨경우져? [3] 웨펀마스터11갤로그로 이동합니다. 13.02.04 65 0
344808 스타트업 떡밥이 그립다 뉴비1(1.214) 13.02.04 51 0
344807 형들 if문 내에서........ [6] ㅇㅇ(203.253) 13.02.04 148 0
344805 포인터 모르고 프로그래밍 하면 안돼는거냐? [5] 얼룩돼지갤로그로 이동합니다. 13.02.04 179 0
344802 기절하듯이 잠들면 기분이 드럽다 [3] 루비•‿•갤로그로 이동합니다. 13.02.04 143 0
344801 중딩1 컨셉종자임 먹이ㄴㄴ [8] c(175.208) 13.02.04 155 0
344799 자바를 할줄 모른다..여기서 텍스트로 출력하는거 어떻게 하나요... [9] java(121.151) 13.02.04 127 0
뉴스 '신발 벗고 돌싱포맨' 김준호, “후배하고 뽀뽀하는 것 이상했다” 김지민과의 연애 회상 디시트렌드 14:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2