• 전체강좌

    다 알고 있는 Tip 이야기 4 - 프로그래밍 팁

    twitter facebook

    Windows Mobile 이나 CE 의 경우 화면 회전을 지원하는 경우 사용할 수 있습니다.

     

    Windows Mobile 의 경우 세로로 긴 형태이지만 센서나 사용자가 가로로 긴 형태로 변형할 수 있습니다.

     

    이때 아래와 같은 코드를 응용해서 구현해 주시면 됩니다.

     


     int orientation=DMDO_0; //  설정하고자 하는 화면의 방향입니다. 0도 회전 하겠다는 의미입니다.
     DEVMODE devmode = { 0 }; // 구조체
     devmode.dmSize = sizeof(DEVMODE);
     devmode.dmDisplayOrientation = orientation; // 회전 방향을 지정하고 
     devmode.dmFields = DM_DISPLAYORIENTATION; // 모드를 지정
     ChangeDisplaySettingsEx(NULL, &devmode, NULL, 0, NULL); // 실제 화면을 회전 시키는 함수를 호출합니다.

     

    여기까지 해도 되지만 레지스트리에 화면의 회전 정보를 저장해 두는 것도 좋습니다.

    아래 코드를 이용하면 됩니다.

     

     HKEY hKey;
     DWORD dwDisposition;
     if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("System\\GDI\\Rotation"), 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS) {
      DWORD angle = 0;
      switch (orientation) {
       case DMDO_90:  // right-handed landscape mode
        angle = 90;
        break;
       case DMDO_180:  // rotated upside-down
        angle = 180;
        break;
       case DMDO_270:  // left-handed landscape mode
        angle = 270;
        break;
      }
      RegSetValueEx(hKey, _T("Angle"), 0, REG_DWORD, (BYTE *) &angle, sizeof(angle)); // 레지스트리에 회전값 저장

      RegCloseKey(hKey);
     }

     

    실제로 리스트를 보여 줄때는 세로로 긴 형태, 즉 0도 회전한 상태가 편하고 Coverflow 나 비디오 감상 할 때는 90도 회전 시킨 가로가 긴 형태의 화면이 편합니다. 이렇게 필요 시에 원하는 방향으로 화면을 회전 시켜 멋진 프로그램 만드시길 바랍니다.

    그럼 다음 강좌에서 뵐께요. ^^


    ---------------------------------------------------------------------------------------

    안녕하세요? 착한이입니다.

     

    개발 하다 보면 Thread Quantum 을 변경해야 하는 경우가 있습니다.

     

    Application 에서 변경도 가능하지만 OS 에서도 변경이 가능합니다.

     

    OEMInit 함수에서

     

    g_pOemGlobal->dwDefaultThreadQuantum = 20;

     

    이렇게 넣어 주시면 됩니다.  20이 Thread Quantum 값이 됩니다.

     

    기본은 100ms 이며, 단위는 ms 입니다.

     

    특별히 변경할 일이 없겠지만 변경할 일이 있다면 적용하시면 됩니다.

     

    적용하신 후에는 반드시 시스템을 전체 테스트 하셔야 할 듯 합니다.

     

    그럼.....

    ----------------------------------------------------------------------------------------

    오늘은 Align 에 대해서 알아 보려고 합니다.

     

    가끔 비디오 디코딩이나 인코딩을 할 때,

     

    또는 비디오 코덱을 개발 하다 보면  Align이 자주 나옵니다.

     

    물론 다른 경우에도 자주 보이죠...

     

    D= (K>>N)<<N;

     

    이런 구문에서 K를 N Align 하게 되면 바로 D 값이 됩니다.

     

    비디오 코덱에서는 N이 16 이나 4 인 경우가 많습니다.

     

    이상입니다.