Ejemplo n.º 1
0
/// <summary>
/// Enumerate and construct all the sensors when the app starts up
/// </summary>
void CMainWindow::EnumerateSensors()
{
    int iCount = 0;
    HRESULT hr = NuiGetSensorCount(&iCount);
    if (FAILED(hr))
    {
        return;
    }

    for (int i = 0; i < iCount; ++i)
    {
        INuiSensor* pNuiSensor = nullptr;

        if (SUCCEEDED(NuiCreateSensorByIndex(i, &pNuiSensor)))
        {
            UpdateMainWindow(pNuiSensor->NuiDeviceConnectionId(), pNuiSensor->NuiStatus());
        }

        SafeRelease(pNuiSensor);
    }
}
Ejemplo n.º 2
0
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
  HWND hWnd;
  hInst = hInstance;
  hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION ,
  CW_USEDEFAULT, 0, currentdesign.tori->width, currentdesign.tori->height, NULL, NULL, hInstance, NULL);
  if (!hWnd)
  {
    return FALSE;
  }
  hWndMain = hWnd;
  HDC hdc = GetDC(hWndMain);
  LoadImageToDC(hdc,currentdesign);
  ReleaseDC(hWndMain,hdc);

  ShowWindow(hWnd, nCmdShow);

  UpdateMainWindow(TRUE);

  FixWindowSizeToFudaSize();
  return TRUE;
}
Ejemplo n.º 3
0
/// <summary>
/// Handle windows messages for a class instance
/// </summary>
/// <param name="hWnd">Window message is for</param>
/// <param name="uMsg">Message</param>
/// <param name="wParam">Message data</param>
/// <param name="lParam">Additional message data</param>
/// <returns>result of message processing</returns>
LRESULT CMainWindow::DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_INITDIALOG:
        {
            // Bind application window handle
            m_hWnd = hWnd;

            // Set device status callback to monitor all sensor changes
            NuiSetDeviceStatusCallback(StatusChangeCallback, reinterpret_cast<void*>(hWnd));

            InitializeResource();
        }
        break;

    case WM_CTLCOLORSTATIC:
    case WM_CTLCOLORDLG:
        return (LRESULT)GetStockObject(WHITE_BRUSH);

    case WM_NOTIFY:
        switch (LOWORD(wParam))
        {
        case IDC_MOREINFOLINK:
            OnClickMoreInfoLink(lParam);
            break;

        case IDC_KINECTSENSORLIST:
            return m_pSensorListControl->HandleNotifyMessage(hWnd, (LPNMLISTVIEW)lParam);

        case IDC_STATUSLOGLIST:
            return m_pStatusLogListControl->HandleNotifyMessage(hWnd, (LPNMLISTVIEW)lParam);
        }
        break;

        // If the titlebar X is clicked, destroy the app
    case WM_CLOSE:
        {
            m_pKinectWindowMgr->CloseAllKinectWindows();
            DestroyWindow(hWnd);
        }
        break;

        // Quit the main message pump
    case WM_DESTROY:
        PostQuitMessage(0);
        break;

        // Handle the Kinect sensor status change case
    case WM_UPDATEMAINWINDOW:
        {
            UpdateMainWindow((PCWCHAR)wParam, (HRESULT)lParam);
            UpdateLayoutAndShowStatus();
        }
        break;

        // If the kinect window is closed, notify Kinect window manager
    case WM_CLOSEKINECTWINDOW:
        m_pKinectWindowMgr->ResetKinectWindow((PCWSTR)wParam);
        break;

    case WM_SIZE:
        Resize();
        break;

    case WM_PAINT:
        DrawBreakLine();
        break;

    case WM_GETMINMAXINFO:
        {
            POINT minTrackSize = {m_minTrackWidth, 0};

            auto pMinMaxInfo = (PMINMAXINFO)lParam;
            pMinMaxInfo->ptMinTrackSize = minTrackSize;
        }
        break;
    }

    return FALSE;
}
Ejemplo n.º 4
0
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  int wmId, wmEvent;
  PAINTSTRUCT ps;
  HDC hdc;
  switch (message)
  {
  case WM_CREATE:
    {
      robinsonp = (char *)robinson;
      timegoesbyp = (char *)timegoesby;
    }
    break;
  case WM_COMMAND:
    wmId    = LOWORD(wParam);
    wmEvent = HIWORD(wParam);
    switch (wmId)
    {
    case IDM_TORISETTINGS: case IDM_YOMISETTINGS:
      {
        if(wmId == IDM_TORISETTINGS){
          ChangeToriYomi(TORI);
        }else{
          ChangeToriYomi(YOMI);
        }
        DialogBox(hInst,MAKEINTRESOURCE(IDD_SETTINGS),hWnd,(DLGPROC)SettingsProc);

        HDC hdc = GetDC(hWndMain);
        LoadImageToDC(hdc,currentdesign);
        ReleaseDC(hWndMain,hdc);
      }
      break;
    case IDM_SAVEASIMAGE: case IDM_YOMIASIMAGE:
      {
        if(wmId == IDM_SAVEASIMAGE){
          ChangeToriYomi(TORI);
        }else{
          ChangeToriYomi(YOMI);
        }
        
        DialogBox(hInst,MAKEINTRESOURCE(IDD_SAVEIMAGE),hWnd,(DLGPROC)SaveAsImageProc);
      }
      break;
    case IDM_FUDADESIGN: case IDM_YOMIDESIGN:
      {
        if(wmId == IDM_FUDADESIGN){
          ChangeToriYomi(TORI);
          HWND hDlg = CreateDialog(hInst,MAKEINTRESOURCE(IDD_FUDADESIGN),hWnd,(DLGPROC)ToriDesignProc);
          ShowWindow(hDlg,SW_SHOW);
        }else{
          ChangeToriYomi(YOMI);
          HWND hDlg = CreateDialog(hInst,MAKEINTRESOURCE(IDD_YOMIDESIGN),hWnd,(DLGPROC)YomiDesignProc);
          ShowWindow(hDlg,SW_SHOW);
        }
      }
      break;
    case IDM_FUDAOTOSI:
      {
        ChangeToriYomi(TORI);
        CreateFudaOtositorifuda();
        if(torifuda_of_fudaotosi.size() == 0){
          if(IDYES!=MessageBox(hWnd,"貴方はすでに全ての札を覚えています。\r\nまた最初からやり直しますか?\r\n","確認",MB_YESNO)){
            return 0;
          };
          ClearNigateFuda();
          CreateFudaOtositorifuda();
        }
        HWND hDlg = CreateDialog(hInst,MAKEINTRESOURCE(IDD_FUDAOTOSI),hWnd,(DLGPROC)FudaOtosiProc);
        ShowWindow(hDlg,SW_SHOW);

      }
      break;
    case IDM_VERSION:
      DialogBox(hInst,MAKEINTRESOURCE(IDD_VERSION),hWnd,(DLGPROC)VersionProc);
      break;
    case IDM_EXIT:
      DestroyWindow(hWnd);
      break;
    default:
      return DefWindowProc(hWnd, message, wParam, lParam);
    }
    break;
    case WM_PAINT:{
      hdc = BeginPaint(hWnd, &ps);

      if(front_structure.hdc != NULL){
        int width, height;
        width = currentdesign.width;
        height = currentdesign.height;

        HBITMAP hold1 = (HBITMAP)SelectObject(front_structure.hdc,front_structure.hbmp);
        HBITMAP hCurrentBMP = CreateCompatibleBitmap(hdc,width,height);
        HBITMAP hold = (HBITMAP)SelectObject(hdc,hCurrentBMP);
        BitBlt(hdc,0,0,width,height,front_structure.hdc,0,0,SRCCOPY);
        SelectObject(hdc,hold);
        SelectObject(front_structure.hdc,hold1);
        DeleteObject(hCurrentBMP);
      }

     EndPaint(hWnd, &ps);
    }
    break;
  case WM_DESTROY:
    tori_or_yomi = TORI;
    SaveToIniFile(0, &currentdesign);
    tori_or_yomi = YOMI;
    SaveToIniFile(0, &currentdesign);
    DeleteFile("bg_image\\tori_current.img");
    DeleteFile("bg_image\\yomi_current.img");
    PostQuitMessage(0);
    break;
  case WM_KEYDOWN:
    {
      // robinson

      if(robinsonp != NULL){
        if(wParam == *robinsonp){
          robinsonp ++;
        }else{
          robinsonp = (char *)robinson;
        }
        if(*robinsonp == '\0'){
          robinsonp = (char *)robinson;

          HMODULE hmd = GetModuleHandle("gdiplus.dll");
          if(hmd == NULL){
            MessageBox(hWnd,"GDI+ には対応していません","(@_@)",MB_OK);
          }else{
            if(!gdiplus_useable){
              gdiplus_useable = 1;
              SetWindowText(hWnd,"GDI+: ON");
            }else{
              gdiplus_useable = 0;
              SetWindowText(hWnd,"GDI+: OFF");
            }
            HDC hdc = GetDC(hWndMain);
            LoadImageToDC(hdc,currentdesign);
            ReleaseDC(hWndMain,hdc);
            UpdateMainWindow(FALSE);
          }
        }
      }

      // timegoesby
      if(timegoesbyp != NULL){
        if(wParam == *timegoesbyp){
          timegoesbyp ++;
        }else{
          timegoesbyp = (char *)timegoesby;
        }
        if(*timegoesbyp == '\0'){
          timegoesbyp = (char *)timegoesby;

          std::string buf;
          int maxbpp, minbpp;
          buf += GetMaxMinDisplayColors(&maxbpp,&minbpp);
          char b[16];
          wsprintf(b,"%d",maxbpp);
          buf += b;
          buf += " ビットに変更 -> [はい]\r\n";
          wsprintf(b,"%d",minbpp);
          buf += b;
          buf += " ビットに変更 -> [いいえ]\r\n";
          int r = MessageBox(hWnd,buf.c_str(),"(^θ^)",MB_YESNOCANCEL);
          if( r == IDYES || r == IDNO){
            DEVMODE dv;
            ZeroMemory(&dv,sizeof(DEVMODE));
            dv.dmSize = sizeof(DEVMODE);
            dv.dmFields = DM_BITSPERPEL;
            if(r == IDYES){
              dv.dmBitsPerPel = maxbpp;
            }else{
              dv.dmBitsPerPel = minbpp;
            }
            ChangeDisplaySettings(&dv,0);
          }
        }
      }


    }
    break;
  default:
    return DefWindowProc(hWnd, message, wParam, lParam);
  }
  return 0;
}