AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hexstring vb to Delphi

Ein Thema von EWeiss · begonnen am 5. Mär 2007 · letzter Beitrag vom 6. Mär 2007
Antwort Antwort
Seite 2 von 2     12   
EWeiss
(Gast)

n/a Beiträge
 
#11

Re: Hexstring vb to Delphi

  Alt 6. Mär 2007, 02:09
@Muetze1
Danke für die Infos..

Deine lösung ist interessant ..
Wenn es jetzt wirklich um die ganzen Windowstyle gehen würde wie oben aufgeführt würde ich meinen source nochmal ändern
aber bei den fünf zeilen macht es eigentlich keinen großen unterschied.

Ich habs jetzt so gelößt.

Ich fülle die Liste!
Delphi-Quellcode:
procedure FillList;
Var
  P : Integer;
  X : Integer;

begin

    WStyleList.Clear;
    WValue.Clear;

    with WStyleList do
    begin
       Add('WS_BORDER' + ',' + format('$%8.8x', [WS_BORDER]));
       Add('WS_DLGFRAME' + ',' + format('$%8.8x', [WS_DLGFRAME]));
       Add('WS_EX_TOOLWINDOW' + ',' + format('$%8.8x', [WS_EX_TOOLWINDOW]));
       Add('WS_THICKFRAME' + ',' + format('$%8.8x', [WS_THICKFRAME]));
       Add('WS_SIZEBOX' + ',' + format('$%8.8x', [WS_SIZEBOX]));
    end;

    For P := 0 To WStyleList.Count - 1 do
    begin
        X := pos(',',WStyleList.Strings[P]);
        WValue.Add(AnsiMidStr(WStyleList.Strings[P], X + 1, strlen(PChar(WStyleList.Strings[P]))));
        WStyleList.Strings[P] := AnsiMidStr(WStyleList.Strings[P], 1, X - 1);
    end;

end;
dann überprüfe ich die WindowStyle!
Delphi-Quellcode:
procedure GetStyle(handle: HWND);
Var
   P : Integer;
   nIndex : integer;
   Ivalue : integer;
   Style : integer;

begin

   LBStyle.Clear;

   For P := 0 To WValue.Count - 1 do
    begin
        nIndex := GWL_STYLE;
        If Pos('_EX_', WStyleList.Strings[P]) <> 0 Then
           nIndex := GWL_EXSTYLE;

        Style := GetWindowLongA(handle, nIndex);
        Ivalue := StrToInt(WValue.Strings[P]);

        If (Style <> 0) And (Ivalue <> 0) Then
          LBStyle.Add(WStyleList.Strings[P]);

           ChangeWindowStyle(handle, nIndex, Style);
    end;

end;
anschließend wird das Fenster wenn die einträge vom Fenster existieren verändert.
Delphi-Quellcode:
procedure ChangeWindowStyle(handle: HWND; nIndex: Integer; Style: Integer);
Var
    lngStyle : integer;
    Rect : TRECT ;

begin
    lngStyle := GetWindowLong(handle, nIndex);

    If (lngStyle <> 0) And (Style <> 0) Then
        lngStyle := lngStyle - Style
    Else
        lngStyle := lngStyle Or Style;

    GetWindowRect(handle, Rect);
    SetWindowLong(handle, nIndex, lngStyle);
    SetWindowPos(handle,
                 0,
                 Rect.Left,
                 Rect.Top,
                 Rect.Right - Rect.Left,
                 Rect.Bottom - Rect.Top,
                 SWP_FRAMECHANGED);
End;
Habe jetzt nur noch ein problem das ich nicht schnell genug an das Window handle des Plugins komme
muss mir da noch was einfallen lassen.
Einen Thread stoppen geht ja schlecht oder ?
So dass man eventuell schneller an das Windowhandle gelangen kann.

Man könnte das Window auch unverändert in den Container schieben nur dann
könnte man einfluss auf das Window nehmen das sollte man dann besser vermeiden.

Sicherlich kann man das noch verbessern

Das ganze sieht dann geändert so aus!
Miniaturansicht angehängter Grafiken
test2_130.jpg   test_180.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:51 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