Thema: Delphi Bildschirm drehen

Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Bildschirm drehen

  Alt 6. Dez 2007, 12:11
Zitat von ddcool:
Es ist halt nur so ich habe mich jetzt echt übertrieben viel mit der MSDN und sämtlichen Foren beschäftigt um eine Lösung zu finden. Leider ohne Erfolg. Ich bin nur immer wieder auf die Option dmDisplayOrientation gestoßen, die es ab XP geben soll. Jedoch bietet mir mein Delphi 2007 SP3 diese Funktion nicht an, es gibt nur die Druckervariante dmOrientation.
Der C++ Builder Explorer bietet anscheinend jedoch diese Funktion an:
Code:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DEVMODEA DM;
DISPLAY_DEVICEA DD;

   ZeroMemory(&DD, sizeof(DD));
   DD.cb = sizeof(DD);
   if (0 != EnumDisplayDevices(0, 0, &DD, 0))
   {
      Caption = DD.DeviceName;

      ZeroMemory(&DM, sizeof(DM));
      DM.dmSize = sizeof(DM);
      if (0 != EnumDisplaySettings(DD.DeviceName, ENUM_CURRENT_SETTINGS, &DM))
      {
         DM.dmFields = DM_PELSWIDTH + DM_PELSHEIGHT + DM_DISPLAYORIENTATION;//?

         DM.dmDisplayOrientation = DMDO_180;//DMDO_DEFAULT;
         DM.dmPelsWidth= 1024;
         DM.dmPelsHeight= 768;

         switch(ChangeDisplaySettings(&DM,CDS_UPDATEREGISTRY))
         {
         case DISP_CHANGE_SUCCESSFUL:
            MessageBox(NULL, "DISP_CHANGE_SUCCESSFUL", "Hinweis", MB_OK);
            break;
         case DISP_CHANGE_BADFLAGS:
            MessageBox(NULL, "DISP_CHANGE_BADFLAGS", "Hinweis", MB_OK);
            break;
         case DISP_CHANGE_BADMODE:
            MessageBox(NULL, "DISP_CHANGE_BADMODE", "Hinweis", MB_OK);
            break;
         case DISP_CHANGE_BADPARAM:
            MessageBox(NULL, "DISP_CHANGE_BADPARAM", "Hinweis", MB_OK);
            break;
         case DISP_CHANGE_FAILED:
            MessageBox(NULL, "DISP_CHANGE_FAILED", "Hinweis", MB_OK);
            break;
         case DISP_CHANGE_NOTUPDATED:
            MessageBox(NULL, "DISP_CHANGE_NOTUPDATED", "Hinweis", MB_OK);
            break;
         case DISP_CHANGE_RESTART:
            MessageBox(NULL, "DISP_CHANGE_RESTART", "Hinweis", MB_OK);
            break;
         }
      }
   }
}
Sowie ich
Code:
DM.dmDisplayOrientation
auf DMDO_180 (= 2) setze kommt die Meldung DISP_CHANGE_BADMODE, bei DMDO_DEFAULT (= 0) DISP_CHANGE_SUCCESSFUL.
Mein Treiber unterstützt eigentlich das Drehen des Bildschirms.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat