블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday
    //main.cpp
    #include<windows.h>
    #include "MsgProc.h" // add
    #include "resource.h"

    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    //HINSTANCE g_hInst;
    HINSTANCE g_hInst;
    LPCTSTR lpszClass = TEXT("Menu");

    // add
    typedef struct MESSAGEMAP
    {
      UINT iMessage;
      LRESULT (*lpfnMsgProc)(HWND, WPARAM, LPARAM);
    }MESSAGEMAP;
    ////////////////////////////

    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
    {
      HWND hWnd;
      MSG Message;
      WNDCLASS WndClass;
      g_hInst = hInstance;

      WndClass.cbClsExtra = 0;
      WndClass.cbWndExtra = 0;
      WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
      WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
      WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
      WndClass.hInstance = hInstance;
      WndClass.lpfnWndProc = WndProc;
      WndClass.lpszClassName = lpszClass;
      //WndClass.lpszMenuName = NULL;
      WndClass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
      WndClass.style = CS_HREDRAW | CS_VREDRAW;
      RegisterClass(&WndClass);

      hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, (HMENU)NULL, hInstance, NULL);;
      ShowWindow(hWnd, nCmdShow);

      while(GetMessage(&Message, NULL, 00))
      {
        TranslateMessage(&Message);
        DispatchMessage(&Message);
      }
      return (int)Message.wParam;

    }
    LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
    {
      //add

      int i;
      static MESSAGEMAP MessageMaps[] = {
        {WM_CREATE, OnCreate},
        {WM_COMMAND, OnCommand},
        {WM_LBUTTONDOWN, OnLButtonDown},
        {WM_DESTROY, OnDestroy}
        
      };

      for(i=0; i<sizeof(MessageMaps)/sizeof(MessageMaps[0]);++i)
      {
        if(MessageMaps[i].iMessage == iMessage)
        {
          return (*MessageMaps[i].lpfnMsgProc)(hWnd, wParam, lParam);
        }    
      }

      ///////////////////////////
      return(DefWindowProc(hWnd, iMessage, wParam, lParam)); 
    }



    //MsgProc.cpp
    #include
     "MsgProc.h"

    #include "resource.h"

    LRESULT OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam)
    {
      return 0;
    }
    LRESULT OnCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
    {
      switch(LOWORD(wParam))
      {
      case ID_FILE_MENU1:
        MessageBox(hWnd, TEXT("
     번째 메뉴를 선택했습니다."), TEXT("Menu Demo"), MB_OK);
        break;
      case ID_FILE_MENU2:
        MessageBox(hWnd, TEXT("
     번째 메뉴를 선택했습니다."), TEXT("Menu Demo"), MB_OK);
        break;
      case ID_FILE_EXIT:
        DestroyWindow(hWnd);
        break;
      }
      return 0;
    }
    LRESULT OnLButtonDown(HWND hWnd, WPARAM wParam, LPARAM lParam)
    {
      return 0;
    }
    LRESULT OnDestroy(HWND hwnd, WPARAM wParam, LPARAM lParam)
    {
      PostQuitMessage(0);
      return 0;
    }



    // MsgProc.h

    #ifndef __MSGPROC_H_
    #define __MSGPROC_H_

    #include<windows.h>

    LRESULT OnCreate(HWND, WPARAM, LPARAM);
    LRESULT OnCommand(HWND, WPARAM, LPARAM);
    LRESULT OnLButtonDown(HWND, WPARAM, LPARAM);
    LRESULT OnPaint(HWND, WPARAM, LPARAM);
    LRESULT OnDestroy(HWND, WPARAM, LPARAM);

    static TCHAR str[256];

    extern HINSTANCE g_hInst;

    #endif


    → 출력 결과



    → 출력 결과

    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함