티스토리 뷰

아! 윈도우 모바일도 결국은 윈도우 개발과 동일 하군!

- 동기로 들어온 형이 WinCE 개발 경험이 있어 물어보았더니 API책을 건네주더군...
- 이게 왜 필요할까 생각했었음
- 윈도우 모바일도 VS로 개발한다는 것을 망각하고 있었음...
- API가 동일 하니 개발이 빠르구나..하나 배웠음.. ㅋㅋ
- 확실히 MFC로 윈도우 개발과는 다르군 Win32야

오늘은 생성한 윈도우 창에 컨트롤 아이템을 추가해보는 작업을 함. MFC로 다이얼로그 기반의 프로그램만 짜다보니 Win32용으로 개발한다는 것이 MFC랑 겹치면서 쉬운 것 같지만 막상 또 어렵고 그렇다. 일단 윈도우 모바일에서는 윈도우 창을 생성시키면 이 위에 컨트롤을 그리는 작업을 실시하는데 리소스 기반이다보니 역시 다이얼로그를 추가하여 별도 아이템을 그래픽환경에서 추가 할 수도 있다. (적다보니 무슨 말을 하는지 구분이 없군...)

여기에서는 그런 그래픽 환경의 작업이 아닌 일일이 하드 코딩으로 아이템을 추가해보도록 한다.

// 에디트 박스 생성
g_hEdit = CreateWindow(L"EDIT",
         NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,
         5,20,230,25,
         hWnd,
         (HMENU)IDC_EDIT1,
         g_hInst,
         NULL);

// 푸쉬 버튼 생성
g_hBtn = CreateWindow(L"BUTTON",
         L"HEHE", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_NOTIFY,
         5,40,230,30,
         hWnd,
         (HMENU)IDC_BTN1,
         g_hInst,
         NULL);

// 리스트 박스 생성
g_hList = CreateWindow(L"LISTBOX",
         NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_NOTIFY,
         5,140,230,100,
         hWnd,
         (HMENU)IDC_LIST1,
         g_hInst,
         NULL);

CreateWindow 함수를 이용해 컨트롤 아이템 역시 추가해준다. 이때 인스턴스는 뷰 윈도우 인스턴스를 사용하고 핸들러는 메인 핸들러를 가져온다.(무슨 뜻인지는 나중에 봐도 이정도면 알겠지.. ㅋ)


case WM_COMMAND:
            wmId    = LOWORD(wParam);
            wmEvent = HIWORD(wParam);
            // 메뉴의 선택 영역을 구문 분석합니다.
            switch (wmId)
            {
                case IDM_HELP_ABOUT:
                    DialogBox(g_hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, About);
                    break;
                case IDM_OK:
                    SendMessage (hWnd, WM_CLOSE, 0, 0);    
                    break;
                default:
                    return DefWindowProc(hWnd, message, wParam, lParam);
          
    case IDC_BTN1 :
     switch (wmEvent)
     {
     case BN_CLICKED:
      MessageBox(hWnd, _T("Bn Clicked"), _T("Check"), MB_OK);\
      break;
     }
     break;
   }
            break;

컨트롤의 메세지 처리는 메인 윈도우의 콜백 함수를 이용해 처리한다. 이때 WM_COMMAND에 따른 경우 함수를 설정하면 된다. 이 부분은 WAVE쪽에서 VS를 상당히 유사하게 만들었다는 것을 알 수 있었는데 그래서 그런가 이해가 쉬웠다.
오랜만에 조금 재밋었다.

컨트롤 생성 후 에뮬레이터에서 확인 모습. 메세지 박스는 박스를 누르면 나옴~!
댓글
댓글쓰기 폼