Thema: Delphi SetWindowPos Problem

Einzelnen Beitrag anzeigen

Shaddow

Registriert seit: 3. Jun 2007
4 Beiträge
 
#4

Re: SetWindowPos Problem

  Alt 3. Jun 2007, 23:58
Ja ich habe in Setposition beim Beschreiben des Problems das f vergessen. Es haette
SetWindowPos(fHandle,HWND_TOP,NLeft,NTop,NScreenWi dth,NScreenHeight,SWP_NOZORDER);

heissen muessen.
Das parenthandle auf den Desktop war dazu da, dass ich die Auflösung ermitteln kann.

Ich habe eine Übergangslösung herausgefunden:
Delphi-Quellcode:
fHandle, fParentHandle: HDC;
fParentWindowRect: TRect;
fWindowInfo: TSDL_SysWMinfo;

{$IFDEF WIN32}
  fHandle := CreateDC('DISPLAY',nil,nil,nil);
  fParentHandle := GetDesktopWindow();

  GetWindowRect(fParentHandle, fParentWindowRect);
{$ELSE}

{$ENDIF}

  SDL_VERSION(fWindowInfo.version);
  SDL_GetWMInfo(@fWindowInfo);


{$IFDEF WIN32}
  SetWindowPos(fWindowInfo.window,0,fLeft,fTop,0,0,SWP_NOSIZE OR SWP_NOZORDER OR SWP_SHOWWINDOW);
{$ELSE}
   fWindowInfo.info.x11.lock_func();
   XMoveWindow(fWindowInfo.info.x11.display,fWindowInfo.info.x11.wmwindow,fLeft,fTop);
   fWindowInfo.info.x11.unlock_func();
{$ENDIF}

Ich benutze den ParentHandle, um die Auflösung des Bildschirms zu ermitteln, denn bevor ich Fullscreen aktiviere, muss ich mein Fenster auf diese Größe ausdehnen. Das Problem ist nun, dass ParentWindowRect vom Typ TRect ist, den möchte ich aber nicht verwenden, und da mein eigenes Rekord nicht bei der Funktion GetWindowRect funktioniert, brauche ich eine andere Möglichkeit die Auflösung herauszufinden.
Kann sein, dass meine Variante, die Auflösung zu ermitteln, sehr umständlich ist, kommt mir zumindest so vor^^
  Mit Zitat antworten Zitat