Forum | | | | Julian Schmidt | Hallo,
durch diesen Thread möchte ich den WinXP-Bug aus Screencapture[...] beheben.
Es handelt sich dabei um einen Anzeige-Fehler welcher unter WinXP auftritt. Unter Window 7 & Co sieht man einen schwarz eingefärbten Hintergrund und ein weißes Steuerkreuz welches den Cursor verfolgt. Unter WinXP ist Nichts zu sehen.
Def SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"
def SetWindowRgn(3) !"USER32","SetWindowRgn"
def RectRgn(4) !"GDI32","CreateRectRgn"
Declare fenster&[], x&, posx&, posy&
WindowStyle 240+1024
Window %MaxX,%MaxY,0,0
Whileloop 2
fenster&[&loop]=Create("Window",%hwnd,"",%MaxX,%MaxY,0,0)'fenster&[1] - Schwarze Blende
SetTransparent(fenster&[&loop],IF(&loop=1,55,20))'fenster&[2] - Durchsichtiger Klickschutz
SetWindowPos fenster&[&loop]=0,0 - %MaxX, %MaxY;-1
EndWhile
ShowCursor 0
WhileNot iskey(27)
Waitinput 10
posx&=CursorPos("X1")
posy&=CursorPos("Y1")
StartPaint fenster&[1]
CLS 0
EndPaint
CutRgnDLG(fenster&[1],RectRgn(0,posy&,posx&,posy&+1),RectRgn(posx&+1,posy&,%MaxX,posy&+1),RectRgn(posx&,0,posx&+1,posy&),RectRgn(posx&,posy&+1,posx&+1,%MaxY))
CutRgnDLG(fenster&[2],RectRgn(0, 0, posx&, posy&),RectRgn(posx&+1, 0, %MaxX, posy&),RectRgn(0, posy&+1, posx&, %MaxY),RectRgn(posx&+1, posy&+1, %MaxX, %MaxY))
Endwhile
end
Proc SetTransparent
Parameters Hwnd%, Perc%
External("USER32","SetWindowLongA",Hwnd%, -20, External("USER32","GetWindowLongA",Hwnd%,-20) | $80000)
SetLayeredWindowAttributes(Hwnd%, 0, (255 * Perc%) / 100, $2)
EndProc
Proc CutRgnDLG
Parameters hdl&
Declare region&,wRgn&
wRgn&=RectRgn(0,0,width(hdl&)+100,height(hdl&)+100)
whileloop 2,%PCount
region&=@&(&loop)
External("GDI32","CombineRgn",wRgn&,region&,wrgn&,3)
DeleteObject region&
EndWhile
SetWindowRgn(hdl&, wRgn&, 1)
Return wRgn&
EndProc
Proc WindowRect
Parameters hdl&,Modus$
Modus$=Lower$(Modus$)
Declare x%, b#
Dim b#,16
External("USER32", "GetWindowRect",hdl&,b#)
Case @&(3)<>0 : External("USER32","ScreenToClient",@&(3),b#) : External("USER32","ScreenToClient",@&(3),b#+8)
Case Modus$="breite" : x%=Long(b#,8)-Long(b#,0)
Case Modus$="höhe" : x%=Long(b#,12)-Long(b#,4)
Case Modus$="x1" : x%=Long(b#,0)
Case Modus$="y1" : x%=Long(b#,4)
Case Modus$="x2" : x%=Long(b#,8)
Case Modus$="y2" : x%=Long(b#,12)
Dispose b#
Return x%
EndProc
Proc CursorPos
Parameters Modus$
Modus$=Lower$(Modus$)
Declare x%, mpos#
Dim mpos#,8
External("user32","GetCursorPos",mpos#)
Case @&(2)<>0 : External("USER32","ScreenToClient",@&(2),mpos#)
Case Modus$="x1" : x%=long(mpos#,0)
Case Modus$="y1" : x%=long(mpos#,4)
Case Modus$="x2" : x%=IF(@&(2)<>0,WindowRect(@&(2),"Breite"),%maxx)-long(mpos#,0)
Case Modus$="y2" : x%=IF(@&(2)<>02,WindowRect(@&(2),"Höhe"),%maxy)-long(mpos#,4)
Dispose mpos#
Return x%
EndProc
LG
Julian |
| | | | |
| | | Bei mir steht das Thema ("nur") auf der Merkliste. |
| | | | |
| | Julian Schmidt | Ich hoffe hier tut sich bald etwas. Sonst werde ich die Frage, in den nächsten Tagen, in Pauls PC Forum reinstellen.... |
| | | | |
| | Andreas Miethe
| Na dann,
das hat wohl was mit AERO zu tun, ist das nicht aktiv siehst Du auch unter Win7 NICHTS ! |
| | | XProfan X2Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 21.01.2013 ▲ |
| |
| | Julian Schmidt | hmmm....du hast Recht! Und woran könnte das liegen. |
| | | | |
| | Andreas Miethe
| Fehler gefunden !
hier liegt der Hund begraben
Mach das mit Dialogen dann klappt es.
|
| | | XProfan X2Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 22.01.2013 ▲ |
| |
| | Julian Schmidt | Damit bekomme ich aus irgendeinen Grund aber nicht die Titelleiste und Dicke Rahmen ausgeblendet. Hab Windowstyle 240+1024 eingestellt. Ich nehme an das Problem hängt mit SetWindowRgn zusammen....
|
| | | | |
| | Andreas Miethe
| | | | XProfan X2Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 23.01.2013 ▲ |
| |
| | Julian Schmidt | Hab ich schon vorher. Verhält sich ähnlich. |
| | | | |
| | Julian Schmidt | | | | | |
| | | Daran liegts nicht,
die Frage ist nur zu allgemein gestellt bzw. der Code dazu zeigt zwar ein Problem aber beschreibt kein konkretes Problem bzw. ist vlt. sogar zu umfangreich als das erkenntlich ist das es um ein bestimmtes Problem geht.
Beispielsweise weiß ich nach Andreas Miethes Hinweisen garnicht mehr auf welchem Stand der Text ist.
Mach doch mal einen Dreizeiler der das Problem aufzeigt und benenne das konkrete Problem nochmals. |
| | | | |
| | Julian Schmidt | Nicht unbedingt ein 3. Zeiler sollte aber ok sein. Ich möchte das keine Titelleiste und Rahmen eingeblendet werden. Windowstyle scheint irgendwie nicht zu funktionieren.
Def SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"
def SetWindowRgn(3) !"USER32","SetWindowRgn"
def RectRgn(4) !"GDI32","CreateRectRgn"
cls
Var dlg&=Create("Window",%hwnd,"",0,0,%MaxX,%MaxY)
SetTransparent(dlg&,50)
Showwindow(dlg&,1)
CutRgnDLG(dlg&,RectRgn(0,0,0,0))
WhileNot iskey(27)
Endwhile
end
Proc SetTransparent
Parameters Hwnd%, Perc%
External("USER32","SetWindowLongA",Hwnd%, -20, External("USER32","GetWindowLongA",Hwnd%,-20) | $80000)
SetLayeredWindowAttributes(Hwnd%, 0, (255 * Perc%) / 100, $2)
EndProc
Proc CutRgnDLG
Parameters hdl&
Declare region&,wRgn&
wRgn&=RectRgn(0,0,width(hdl&)+100,height(hdl&)+100)
whileloop 2,%PCount
region&=@&(&loop)
External("GDI32","CombineRgn",wRgn&,region&,wrgn&,3)
DeleteObject region&
EndWhile
SetWindowRgn(hdl&, wRgn&, 1)
Return wRgn&
EndProc
|
| | | | |
|
AntwortenThemenoptionen | 23.513 Betrachtungen |
ThemeninformationenDieses Thema hat 3 Teilnehmer: |