디시인사이드 갤러리

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

갤러리 본문 영역

WIN32API 자식 윈도우 메시지 처리하기 도아주세여(2)

이힝(112.163) 2013.01.31 20:42:56
조회 89 추천 0 댓글 1


#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.hbrBackground = (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);
}

예제 그대로 긁어옵니다
어떻게 위에 자식윈도우를 누르면 위에건줄알고 동그라미가 쭉생기나여?
스샷은 위에자식윈도우에 클릭하고 그담에 아래자식윈도우 클릭한거임

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 끝까지 다 본 걸 후회하게 만든 용두사미 드라마는? 운영자 25/07/07 - -
AD 디지털 액세서리 기간한정 세일! 운영자 25/07/11 - -
345679 ㅉㅉ 패배주의자 놈들 wet(175.215) 13.02.12 56 0
345677 늦었다 [1] 진격의거인(59.14) 13.02.12 80 0
345675 하 공부먼저하라는 이유가있었구만유 작은배때지(220.125) 13.02.12 69 0
345674 지금 여기 임베디드쪽 하는 게이 있냐 [2] ㅁㄴㅇㄹ(121.134) 13.02.12 156 0
345672 확밀아하다 [3] 질문할놈(218.39) 13.02.12 61 0
345671 프로그래밍을 시작할 시점을 알려준다 [2] ㅂㅈㄷㄱ(121.134) 13.02.12 231 2
345669 야근을 어떻게 증명할 것인가? [4] 진통제(112.171) 13.02.12 186 0
345667 나 해커라서 프로필 사진 만들어봄 [1] 네로시엔갤로그로 이동합니다. 13.02.12 162 0
345666 고삐리들아 뭐가 그래 급해서 그리 보안좆문가 글을 싸질러대 [4] ㅇㅇ(125.134) 13.02.11 192 0
345665 제발 assets파일에 대해 알려주세요........... [1] assets(125.128) 13.02.11 126 0
345663 보안전문가 되고싶은데.. 도움좀요..ㅠㅠ [5] 오오(59.16) 13.02.11 164 0
345662 보안좆문가 이야기 많이나오는게 이거 아님? [5] (168.126) 13.02.11 234 1
345661 SI업체가 그렇게 구리냐?? 웹개발 [2] ㄴㄴ(125.178) 13.02.11 276 0
345660 [C++] tr1 에 shared_ptr 궁금증 [13] ssonacy갤로그로 이동합니다. 13.02.11 277 0
345659 함수 feof랑 fscanf 반환값 상황별 차이에 대해서... [4] 네로시엔갤로그로 이동합니다. 13.02.11 351 0
345658 보안전문가되고 싶은데 어떡게 하죠?? 이런글 보면 빡치지 않냐 [2] ㅁㄴㅇㄹ(121.134) 13.02.11 173 0
345656 너넨 노트북 뭐쓰냐 [7] ㅁㄴㅇㄹ(121.134) 13.02.11 208 0
345655 형들 궁금한게있는데여 [3] ㅋㅇㅋ(61.97) 13.02.11 89 0
345654 네트워크 엔지니어.. 정보보안가.. 형들 꼭봐줘 나 너무 급해 [4] sa123(125.128) 13.02.11 634 0
345653 프로그래밍 고딩때 3년동안배운걸 대학때 6개월만에 습득할수 있음 [1] 해즈웰갤로그로 이동합니다. 13.02.11 176 0
345652 맥주소 바꿔도 되는거임? [2] 맥스(14.36) 13.02.11 125 0
345650 성우형 C++책이 죠킨 죠은듯 [6] (14.36) 13.02.11 161 0
345648 님들 타블렛 안씀? [2] DART(1.248) 13.02.11 94 0
345647 학창시절에 대학좀 잘 갈껄 [4] DART(1.248) 13.02.11 208 0
345644 노가다 = 프로그래밍 [2] 하하하(1.231) 13.02.11 147 0
345641 컴퓨터 공학과 학생입니다 노트북 성능 좋아야되나요? [11] 항공대컴공(180.69) 13.02.11 398 2
345640 프갤님들 프로시저 문제 해결하는 법좀 알려주세요. [2] ㅁㄴㅇ(175.117) 13.02.11 131 0
345638 자바 개쩔더라 [1] 우왕국(203.226) 13.02.11 259 0
345637 근데 도데체 플밍갤 사람들 어디가 진짜임? [2] 궁금(175.115) 13.02.11 203 1
345635 못쓰는 단어 왜케 많음 ㅠ 바보아싸갤로그로 이동합니다. 13.02.11 107 0
345633 스마트폰 게임 매크로 어떻게 만듬? [12] 12(59.12) 13.02.11 2350 5
345631 세상엔 컴맹이 많아서 프로그래머들이 아직 살만한거 같다. ㅇㅇㅇ [2] ㅇㅇㅇ(121.144) 13.02.11 259 0
345630 웹사이트 하나 만들어보고 싶은데 멀 만들어볼까? [2] 통맥갤로그로 이동합니다. 13.02.11 155 0
345629 한국 결제시스템 좆병신이네 씹라 [2] 땡칠도사갤로그로 이동합니다. 13.02.11 241 0
345627 복학이 얼마 안남았다... 黑猫갤로그로 이동합니다. 13.02.11 104 0
345626 여자친구 사귀고 싶다 에어로홍갤로그로 이동합니다. 13.02.11 117 0
345625 그냥 vi에서 자주 쓰는건 [2] 黑猫갤로그로 이동합니다. 13.02.11 181 0
345623 특별한 개발도구 없이 가능한 코딩있음? [15] 군인^^(175.122) 13.02.11 288 0
345622 프로그래밍이 이렇게 신나는 것일줄이야 [2] 상상(110.70) 13.02.11 230 0
345621 IT계열은 병력특례나 특기병중 뭐가 나을까요? [9] Tyrael(61.255) 13.02.11 308 0
345620 봇 어떻게 만듬 ㅇㅅㅇ? [8] ㄹㅇㄴㅁ(175.205) 13.02.11 219 0
345618 지잡대 학부 나와서 잡부 VS 지잡대 대학원 나와서 잡부 [1] dlbo갤로그로 이동합니다. 13.02.11 203 0
345617 횽들 드림스파크 접속되? [3] 드파(221.142) 13.02.11 128 0
345616 형들 진로 결정? 좀해주세영 ㅜㅜ [23] Melf갤로그로 이동합니다. 13.02.11 310 0
345615 땡칠형 있네 ㅋㅅㅋ [2] 黑猫갤로그로 이동합니다. 13.02.11 95 0
345614 형들 진로 결정? 좀해주세영 ㅜㅜ Melf갤로그로 이동합니다. 13.02.11 65 0
345613 vi가 왜 불편하다는거지; [6] 黑猫갤로그로 이동합니다. 13.02.11 189 0
345612 먹어라 c(175.208) 13.02.11 79 0
345611 백왕 [1] c(175.208) 13.02.11 153 0
345610 이정도 게임 스크립트 수준을 현금20만원 받고파는데 만들기 어려워? [3] ㅂㄷㅆㅂ(125.185) 13.02.11 264 0
뉴스 손담비♥이규혁, 딩크족 계획했지만 남편의 아기 욕심에 출산 결심...딩크보다 행복한 일상 디시트렌드 07.10
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2