디시인사이드 갤러리

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

갤러리 본문 영역

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

이힝(175.215) 2013.02.01 14:42:53
조회 122 추천 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/07 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45236 65
2870290 이해가 존나 안되는게 이준석은 그냥 프로그래밍 신비주의로 갔으면 ㅆㅇㅆ(124.216) 02:27 1 0
2870289 권은비 좆되더라 [1] hrin(220.120) 02:25 6 0
2870288 준석이햄 코드 플로우 보니까 GPT가 짜준게 백프로임 그냥ㅋㅋ ㅆㅇㅆ(124.216) 02:22 5 0
2870287 이준석 보좌진은 그냥 코딩 관련 글 못올리게해라 ㅆㅇㅆ(124.216) 02:16 9 2
2870286 필리핀 공부방 사건 혹시 종교인이었나? 발명도둑잡기(118.216) 02:11 4 0
2870284 님들 저 졸업작품 추천좀 [2] 공기역학갤로그로 이동합니다. 02:07 8 0
2870283 미셸푸코- 감시와 처벌-감옥의 역사 발명도둑잡기(118.216) 02:02 6 0
2870281 류류가 욕을 먹어도 발명도둑잡기(118.216) 01:46 8 0
2870280 인공지능이 전염병 퍼뜨려서 인간 멸종이키는게 가장 위험하다 발명도둑잡기(118.216) 01:42 8 0
2870278 준석이가 만든 프로그램인데 어캐생각함? [6] ㅇㅇ(211.241) 01:36 38 0
2870277 민생 사는거 겁나 좋아하는 인간들 특징민 그냥 특징이 있어 특이 [1] 넥도리아(112.170) 01:19 26 0
2870275 겁나 성심 쓰는듯 휴대폰 사준다는 엄마. 그러나 아들은 반대 넥도리아(112.170) 01:15 12 0
2870273 zenfone 4 데이터 복구할까 민생지원쿠폰으로 가능할까 넥도리아(112.170) 01:11 9 0
2870271 블록퍼즐 알고리즘 배틀 만들었는데 시간 되는 사람 구경 한 번 해봐라 ㅋ [1] 프갤러(118.235) 00:56 16 0
2870269 가난한 남자도 미소녀랑 성관계 할수 있어야됨 ㅇㅅㅇ [2] 류류(210.217) 00:54 24 0
2870268 내란수괴는 감옥에 가야 이 땅이 평화로워진다 발명도둑잡기(118.216) 00:50 10 0
2870266 시사힙합 내란의 힘 발명도둑잡기(118.216) 00:44 11 0
2870263 에바게리온 애니메이터가 지지한 혐중 파시스트 정치인 발명도둑잡기(118.216) 00:19 12 0
2870261 일본이 한국보다 살기 ㅈ같은점 프로외노자갤로그로 이동합니다. 00:14 26 0
2870259 나 보험든게 있는데, 20년전에.... 2007년인가 [1] 넥도리아(112.170) 00:08 15 0
2870258 몇시간 전부터.노트북 인터넷이 안되고 있다 발명도둑잡기(118.216) 00:07 9 0
2870256 나의 경우인 가난한 남자의 성욕 해소법 [1] 발명도둑잡기(118.216) 00:01 30 0
2870254 사디스트, 마조히스트의 성욕 해소법 [1] 발명도둑잡기(118.216) 07.06 25 0
2870253 류류같은 소아성애자의 성욕 해소법 [1] 발명도둑잡기(118.216) 07.06 39 0
2870252 사람이 섹스를 하고 싶지만 사정상 오랫동안 못하면 어떻게 되나 발명도둑잡기(118.216) 07.06 19 0
2870251 14~15살 여자 잠지 찢어보고 싶음 [1] 류류(210.217) 07.06 32 0
2870250 오늘의 발명 실마리: 영상 캐릭터를 마음대로 바꾸는 기술 발명도둑잡기(118.216) 07.06 13 0
2870248 류류 등 소아성애자 유전자가 있는 건 아니구나 발명도둑잡기(118.216) 07.06 28 0
2870247 시노자키 아이 근황 발명도둑잡기(118.216) 07.06 28 0
2870244 ‘극과극’ 수지의 ‘공항→파리’ 온도차 패션 발명도둑잡기(118.216) 07.06 17 0
2870243 윈도우 블로스크린 블랙스크린으로 바꾸는거 인종차별 아닌가 [1] 발명도둑잡기(118.216) 07.06 29 0
2870242 똥양인70억인구가 그나마 잘하는거 뒷통수한방(1.213) 07.06 14 0
2870240 솔직히 좇센만큼 살기좋은 나라 어딨냐??ㅋㅋ 뒷통수한방(1.213) 07.06 14 0
2870239 (멍유사절)나님 소통 문질받음⭐ [2] ♥냥덩이♥갤로그로 이동합니다. 07.06 28 0
2870235 러스트해봤자 좇센 닭장 바퀴벌레만한곳도 못들어갈텐데 뒷통수한방(1.213) 07.06 21 0
2870234 아 진짜 힘들다 [1] 아스카영원히사랑해갤로그로 이동합니다. 07.06 48 1
2870232 이준석 의원 님 생각하고 위성항법장치GPS 관성항법장치INS Think 넥도리아(112.170) 07.06 23 0
2870230 인터넷 개돼지 소굴 프갤러(112.171) 07.06 13 1
2870229 이상State로 프갤 해봤어 넥도리아(112.170) 07.06 18 0
2870226 욕심많은 늙은년 하나 때문에 ㅈ망했네시발련 프갤러(218.232) 07.06 35 1
2870225 나 프로그램 있다니까요. 복구프로그램 윈도우가 세션이 없네용 [3] 넥도리아(112.170) 07.06 26 0
2870224 아 짜증나 액정플라스틱하고 액정을 붙여주는 기계가 6만원 이상 넥도리아(112.170) 07.06 18 0
2870223 재명에 못 산다. 휴대폰을 하루에 1번 고쳐서 나간다. 충전이 안될때면, 넥도리아(112.170) 07.06 21 0
2870222 디시를 4번째로 나를 억까하구나 넥도리아(112.170) 07.06 12 0
2870220 공예 마트가서 열풍기 사는게 우선과제 넥도리아(112.170) 07.06 14 0
2870219 바이오스 롬이 두 개인가 어느순간 영문 어느순간 한글 넥도리아(112.170) 07.06 13 0
2870216 민생소비 쿠폰 다들 정하심? 넥도리아(112.170) 07.06 25 0
2870212 일본 게임의 거장 KOEI에 대하여 발명도둑잡기(118.216) 07.06 21 0
2870210 바둑과 교도소 발명도둑잡기(118.216) 07.06 18 0
뉴스 에픽하이 타블로, “내가 뭘 잘못했길래”…드디어 밝혀진 상상 초월 전생 디시트렌드 07.05
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2