| |
|
|
Thomas Freier | Im Prinzip ja kein Problem, jedoch kann ich es nach oben nur um ca. 20px verschieben. Falscher Script oder physikalische Grenze?
Def ReleaseCapture(0) !"USER32","ReleaseCapture"
SetTrueColor 1
Windowstyle 82
window 0,0 - 0,0
var hwnd&=%hwnd
var hwndX%=0
var hwndY%=0
SetWindowPos hwnd&=hwndX%,hwndY% - 1120,800;0
UsePen 0,0,rgb(0,0,0)
Rectangle 0,0-1120,800
UsePen 2,0,rgb(0,0,0)
Line 0,10-40,10
Line 0,20-40,20
Line 0,30-40,30
Line 0,40-40,40
Line 0,50-40,50
Rectangle 60,60-1060,740
DrawText 140,360,"Dieses Fenster bei linker gedrücker Maustaste verschieben."
DrawText 140,460,"Dieses Fenster mit Taste 'Esc' oder 'Alt' plus 'F4' schließen."
SubClass hwnd&,1
while 1
WaitInput
case %key=27:break
wend
SubClass hwnd&,0
end
SubClassProc
If %message = $201
UseCursor 5
SendMessage(%hwnd,$112,$F012,0)
ReleaseCapture()
UseCursor 0
EndIf
EndProc
|
|
|
| |
|
|
|
Rolf Koch | Also ich schiebe hier das Fenster auf dem ganzen Desktop hin und her und hab keine Grenzen, sogar aus dem Sichtbereich heraus. Oder hab ich was falsch verstanden? |
|
|
| |
|
|
|
Thomas Freier | Rolf, das hast du richtig verstanden. Auf meinem Laptop kann ich das Fenster nach oben nur ganz wenig verschieben. Links, rechts und nach unten bis aus dem Sichtbereich. Ist wohl wieder BS und geräteabhängig. |
|
|
| |
|
|
|
| Bei mir springt das Fenster an Y-Position 0 zurück wenn ich es nach oben hinaus schiebe.
Selberschieben mache ich so: Herunterladen KompilierenMarkierenSeparieren {$cleq}
'URL: https://xprofan.com/intl/de/forum/hauptfenster-verschieben/
{$compiler c:\xprofan11}
{$runtime c:\xprofan11}
#include c:\dev\mouse.inc
SetTrueColor 1
Windowstyle 82
window 0,0 - 0,0
var hwnd&=%hwnd
var hwndX%=0
var hwndY%=0
SetWindowPos hwnd&=hwndX%,hwndY% - 1120,800;0
UsePen 0,0,rgb(0,0,0)
Rectangle 0,0-1120,800
UsePen 2,0,rgb(0,0,0)
Line 0,10-40,10
Line 0,20-40,20
Line 0,30-40,30
Line 0,40-40,40
Line 0,50-40,50
Rectangle 60,60-1060,740
DrawText 140,360,"Dieses Fenster bei linker gedrücker Maustaste verschieben."
DrawText 140,460,"Dieses Fenster mit Taste 'Esc' oder 'Alt' plus 'F4' schließen."
userMessages wm_close,wm_lButtonDown
while 1
WaitInput
case %key=27:break
select %uMessage
caseof wm_close : break
caseof wm_lButtonDown : hWnd.movebyMouse()
endSelect
wend
end
proc hWnd.movebyMouse
mouse.getPos()
var omx&=mouse.x&
var omy&=mouse.y&
var wix&=%winLeft
var wiy&=%winTop
var xx&=%winRight-wix&
var yy&=%winBottom-wiy&
while 1
casenot lm_() : break
mouse.getPos()
setWindowPos %hWnd=(mouse.x&+wix&-omx&),(mouse.y&+wiy&-omy&) - xx&,yy&;0
wend
endProc
|
|
|
| |
|
|
|
Thomas Freier | Genau iF. Aber merkwürdiger Weise nicht auf y = 0, sondern auf ca. y = -20, wenn y > -20 sein sollte. |
|
|
| |
|
|
|
| Stimmt...
Zeigt bei mir -25 ppp -26.
Auch wenn 1px Diff. ists vlt. die Titelzeilenhöhe - stell vlt. mal Deine Titelzeilenhöhe auf 50 zum Test. |
|
|
| |
|
|
|
Dieter Zornow | Bei mir gehts auch, man kanns aber auch einfach mit sendmessage machen.
|
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 04.12.2010 ▲ |
|
|
|
|
Thomas Freier | Ist wohl ein Problem unter XP SP2 und das kleine Problem mit der Mouse.inc ist durch den Einsatz von X11 zu beheben. Ich find aber nichts, um die Titelzeilenhöhe, denn das ist die Grenze, vorzugeben. |
|
|
| |
|
|
|
| Schau mal die systemParametersInfo-API: [...] und da vlt. nonClientMetrics: [...] |
|
|
| |
|
|
|
| Argh - das funktioniert ja wirklich aber "achtung" kann ich da nur sagen:
cls
struct repairedNONCLIENTMETRICS=cbSize&,iBorderWidth&,iScrollWidth&,iScrollHeight&,iCaptionWidth&,iCaptionHeight&,lfCaptionFont#(60),iSMCaptionWidth&,iSMCaptionHeight&,lfSMCaptionFont#(60),iMenuWidth&,iMenuHeight&,lfMenuFont#(60),lfStatusFont#(60),lfMessageFont#(60)
mem nonClientMetricsStructure=repairedNONCLIENTMETRICS
long nonClientMetricsStructure#,0=sizeof(nonClientMetricsStructure)
systemParametersInfo(SPI_GETNONCLIENTMETRICS,sizeof(nonClientMetricsStructure),nonClientMetricsStructure,0)
print "Zuletzt:",long(nonClientMetricsStructure,4)+long(nonClientMetricsStructure,20)
long nonClientMetricsStructure#,20=5
systemParametersInfo(SPI_SETNONCLIENTMETRICS,sizeof(nonClientMetricsStructure),nonClientMetricsStructure,0)
print systemParametersInfo(SPI_GETNONCLIENTMETRICS,sizeof(nonClientMetricsStructure),nonClientMetricsStructure,0)
print "Nun:",long(nonClientMetricsStructure,4)+long(nonClientMetricsStructure,20)
waitinput
end
|
|
|
| |
|
|
|
Thomas Freier | Nun, ACHTUNG außeracht gelassen, sehe ich im Moment noch keine "hörere Titelzeile" beim %hwnd? Hat mir ohnehin, ich hätt's mir ja denken können, dass das nur mit XPSE läuft, einige zusätzliche graue Haare gekostet. |
|
|
| |
|
|
|
| Es ist halt viel schneller es mit xpse hinzuschreiben - kompliziert umbauen für nicht-xpse-verwendung kann es ja der der Wert darauf legt oder mich einfach fragen wenn ichs umbauen soll/muss.
Ich für meinen Teil schreib jedenfalls ungern an etwas 5 Minuten was ich genauso in 2 Minuten schreiben kann (schreiben wir doch auch lieber XProfan als C#?) - wäre doch Quälerei - besonders wenns darum geht erstmal etwas auszutesten.
Thomas Freier (05.12.10)
Nun, ACHTUNG außeracht gelassen, sehe ich im Moment noch keine "hörere Titelzeile" beim %hwnd?
long nonClientMetricsStructure#,20=5
Setzt die ("""eigentlich""") auf 5 - daraufhin wurde diese bei mir auch sehr flach - aber nicht 5. (bestimmt weil die Schrift größer ist als 5)
|
|
|
| |
|
|