디시인사이드 갤러리

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

갤러리 본문 영역

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

이힝(175.215) 2013.02.01 14:42:53
조회 130 추천 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/21 - -
AD 곧 휴가!! 홈캉스, 바캉스 SALE 운영자 25/07/21 - -
345570 초보 질문 ,,, 형님들은 손코딩 많이 해보셨습니까? [8] 이런씨쁠쁠갤로그로 이동합니다. 13.02.10 359 0
345568 visual studio는 왜 파워포인트같은 그래픽도구 제공 안해주냐 [1] 부스타(221.160) 13.02.10 102 0
345567 나 지금 SI하거든? 게임쪽 취업 하고 싶은데 신입으로 들어가야되나?? [7] 겜쪽(221.142) 13.02.10 246 0
345565 해킹이라는건 전산계의 중2병과 같다. [2] 黑猫갤로그로 이동합니다. 13.02.10 316 0
345564 c, c++ 에 막 감 잡은 좆대딩 색히들이 자바,C#보고 졸라 쉽다고 [6] ㅇㅇ(182.218) 13.02.10 292 0
345561 새해에도 프갤은 평화롭습니다. d(1.210) 13.02.10 62 0
345560 요즘 Coffee script 하고 있는데 깔쌈하네 ㅋ [2] 돌대갈(116.33) 13.02.10 131 0
345559 네트워크 입문서 추천점ㅋ [1] 염산(220.79) 13.02.10 107 0
345558 펄이 서버측 스크립트언어냐? [2] 염산(220.79) 13.02.10 117 0
345557 설날에 이런거 올리면 프갤 어그로 끌리나요? [10] ㅇㅇ(222.237) 13.02.10 213 0
345556 GAS문법이랑 NASM문법 [9] 黑猫갤로그로 이동합니다. 13.02.10 161 1
345555 해킹툴로해킹하는스크립트 키디(script kiddy)주제에나대는애들이넘많 [17] 염산(220.79) 13.02.10 256 0
345554 형들 이거 어려울까?? [3] 티버애니갤로그로 이동합니다. 13.02.10 158 0
345553 요즘 파이썬 파고 있는데 너무 좋네. [2] 통맥갤로그로 이동합니다. 13.02.10 188 0
345552 아빠의 특수 효과~ '미션 임파서블 아기' 인기 에어로홍갤로그로 이동합니다. 13.02.10 76 0
345551 프로그래밍 왜함? [4] 티버애니갤로그로 이동합니다. 13.02.10 902 0
345550 해킹보안 공부하려면선행으로 컴터구조 시스템 운영체제 네트워크는 기본이지? [1] 염산(175.223) 13.02.10 148 0
345548 명절동안 친척 컴퓨터 많이 고쳐주고 계십니까? [1] 에어로홍갤로그로 이동합니다. 13.02.10 101 0
345546 형들 만약에 1gbps 만들려면 어떻게해야해? 이런거에 관심이많아서 [1] 우르곳큐짤(211.112) 13.02.10 88 0
345545 사람들 자바로 프로그램 많이만듬?? 자바주로 어따가씀? [3] 3473(175.215) 13.02.10 121 0
345544 구인구직에서 '칼퇴근'글자 있으면 이거 레알임? [3] 리캉(175.115) 13.02.10 212 0
345543 새해 복들 많이받아...^ㅅ^ 黑猫갤로그로 이동합니다. 13.02.10 45 0
345542 싸우자ㅡㅡ [1] 할마마갤로그로 이동합니다. 13.02.10 71 0
345539 표준은 죶발랏다고 const string& 으로 받겟니? 헤헤(221.160) 13.02.10 92 0
345538 백왕 웰케 난폭해졌냐? 코불(211.172) 13.02.10 97 0
345536 벨류랑 레퍼런스 관계는 성능문제가 아니잔아 븅신들아 [2] 맙이(203.226) 13.02.10 103 1
345535 프갤 횽들 질문이있어요.초보임.진로에대해 [3] 럼블좆도안귀여움갤로그로 이동합니다. 13.02.10 176 0
345529 value reference 차이 헤헤(221.160) 13.02.10 90 0
345526 세뱃돈 안보고 찍어올린다 10만빵임??? .jpg [2] ㅇㅇ(175.112) 13.02.10 181 0
345524 새해복많이받으세여 dcin_bot(1.234) 13.02.10 30 0
345523 디씨인~ 디씨인~ [3] 땡칠도사갤로그로 이동합니다. 13.02.10 123 0
345522 언어좀 그만 빨아라 [2] de(183.103) 13.02.10 176 0
345520 자바원숭이의 생식기는 뭐다? c(175.208) 13.02.10 89 0
345519 횽들중에 해커도 많겟지? [1] ddd(180.228) 13.02.10 115 0
345518 C#이 미래다!!!!!! [4] 쥐맨(121.67) 13.02.10 439 0
345510 딴과는 몰라도 컴공은 기숙사 재밋ㄹ것다 7even갤로그로 이동합니다. 13.02.10 99 0
345509 삼촌이 자꾸 나보고 자바 하라던데 [2] 黑猫갤로그로 이동합니다. 13.02.10 232 0
345508 C언에서 입력받은 값만큼 배열을 선언하는 방법은 없나요? [5] ㅁㄴㅇㄹㄴㄹ(114.200) 13.02.10 121 0
345507 끝내주는 자바스크립트 개발자 vs 흔한 C+개발자 [1] ㄴㅇㄴㅇ(1.231) 13.02.10 185 0
345506 자기가 하고 싶은 일을 해야 인생이 행복한거지.. ㄴㅇㄴㅇ(1.231) 13.02.10 54 0
345505 Call by reference VS call by value 종결해준다 [7] sleep(175.223) 13.02.10 261 0
345504 음력 새해 첫 글!!!!!! 에어로홍갤로그로 이동합니다. 13.02.10 38 0
345503 컴퓨터공학은 전망이 어떤가요.. [10] ㅇㅋㅇㅋ(211.246) 13.02.09 396 0
345502 새해 코웅갤로그로 이동합니다. 13.02.09 42 0
345501 북극성 노래 두 편 [1] 에어로홍갤로그로 이동합니다. 13.02.09 37 0
345499 메써드랑 클래스가 머에여 ? [2] 리낭갤로그로 이동합니다. 13.02.09 97 0
345496 어휴 명절날에 프갤도 싸움질이라니 [3] 개떙보갤로그로 이동합니다. 13.02.09 84 0
345495 프갤러들 싸우니깐 죶내여 [2] 헤헤(221.160) 13.02.09 75 0
345493 횽들 이제 이학년되는데 어셈블리어 [1] ㅁㄴㅇㄹ(211.210) 13.02.09 123 0
345490 리눅스 공부 들어가기 전에 윈도우 서버 공부할려고 하는데 [2] 리플레이갤로그로 이동합니다. 13.02.09 75 0
뉴스 블랙핑크, 빌보드 글로벌 두 차트 정상…K팝 걸그룹 최초 디시트렌드 07.22
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2