AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi nonVCL TabControl mit Dialoge aus Ressource unter WinXP
Thema durchsuchen
Ansicht
Themen-Optionen

nonVCL TabControl mit Dialoge aus Ressource unter WinXP

Ein Thema von ts_abc · begonnen am 22. Apr 2005 · letzter Beitrag vom 24. Apr 2005
Antwort Antwort
ts_abc

Registriert seit: 22. Sep 2003
20 Beiträge
 
Delphi 10 Seattle Professional
 
#1

nonVCL TabControl mit Dialoge aus Ressource unter WinXP

  Alt 22. Apr 2005, 18:16
Hallo,

ich habe folgendes Problem. Ich lade aus den Ressourcen der Anwendung die Dialoge für ein Tabcontrol, dabei habe ich das Problem den Grauen Hintergrund des Formulars durchsichtig erscheinen zu lassen. Da bei Verwendung des Manifest unter WinXP dies relativ unschön aussieht. Habe schon folgendes versucht.

Delphi-Quellcode:
...
begin
  ...
  for i := 0 to length(hTabDlgs) - 1 do begin
    SetWindowLong(hTabDlgs[i], GWL_STYLE, DS_CONTROL or WS_CHILD );
    SetParent(hTabDlgs[i], Wnd);
    SetWindowLong(hTabDlgs[i], GWL_EXSTYLE, GetWindowLong(hTabDlgs[i], GWL_EXSTYLE) or WS_EX_LAYERED);
    SetLayeredWindowAttributes(hTabDlgs[i], GetSysColor(COLOR_BTNFACE), 255, LWA_COLORKEY);
  end;
end;
Hierbei wird das Formular nur Durchsichtig wenn es kein Parent vergeben wird, also sieht es immer noch so aus.
http://img.photobucket.com/albums/v1...lphi/Bild1.jpg

Delphi-Quellcode:
var
  FullRgn, ClientRgn, CtlRgn: THandle;

procedure MakeTransparent(Handle: HWND);
var
  NextChild: HWND; CtlX, CtlY: Integer; R: TRect;
begin
  GetWindowRect(Handle, R);
  MapWindowPoints(HWND_DESKTOP, Handle, R, 2);
  with R do begin
    FullRgn := CreateRectRgn(Left, Top, Right, Bottom);
    ClientRgn := CreateRectRgn(Left, Top, Right, Bottom);
    CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);
  end;
  NextChild := GetTopWindow(Handle);
  while NextChild > 0 do
  begin
    GetWindowRect(NextChild, R);
    MapWindowPoints(HWND_DESKTOP, Handle, R, 2);
    if NextChild > 0 then with R do
    begin
      CtlX := Left;
      CtlY := Top;
      CtlRgn := CreateRectRgn(CtlX, CtlY, CtlX + (Right-Left), CtlY + (Bottom-Top));
      CombineRgn(FullRgn, FullRgn, CtlRgn, RGN_OR);
      NextChild := GetNextWindow(NextChild, GW_HWNDNEXT);
    end;
  end;
  SetWindowRgn(Handle, FullRgn, True);
end;

...
begin
  ...
  for i := 0 to length(hTabDlgs) - 1 do begin
    SetWindowLong(hTabDlgs[i], GWL_STYLE, DS_CONTROL or WS_CHILD);
    SetParent(hTabDlgs[i], Wnd);
    MakeTransparent(hTabDlgs[i]);
    ...
  end;
end;
...
Hierbei wird alles Durchsichtig nur natürlich nicht die Controls.
http://img.photobucket.com/albums/v1...lphi/Bild2.jpg

Kann man es auf irgendeinen weg erreichen das alles was grau ist verschwindet?

Gruß Thomas
  Mit Zitat antworten Zitat
Mephistopheles
(Gast)

n/a Beiträge
 
#2

Re: nonVCL TabControl mit Dialoge aus Ressource unter WinXP

  Alt 24. Apr 2005, 16:54
Wie wäres es denn einfach die Client-Dialoge in ihrer Größe an den Clientbereich des Tabcontrols anzupassen. Das ist zumindest der übliche Weg. Dann wäre alles in diesem beige, siehe oben.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz