| |
|
|
- Seite 1 - |
|
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
|
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
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)
|
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Thomas Freier | Ja, den Eindruck, dass es schmaler wurde, hatte ich auch. Aber höher hatte ich es selbst optisch nicht erreicht. |
|
|
| |
|
|
|
| Womit genau kann ich Dir helfen? Hab jetzt den Faden verbummelt weils imho alles eh nichts hilft das Verschiebeproblem bei SendMessage(%hwnd,$112,$F012,0) zu "beheben".
Magst meine obig vorgemachte Mausverschiebeproc in reinem XProfan? |
|
|
| |
|
|
|
Thomas Freier | Ich sage dankent: JA. Auch wenn ich mit deinem Beispiel arbeiten kann, so denke ich ist es für alle, denen SendMessage(%hwnd,$112,$F012,0) auch Probleme bereitet und die kein XPSE einsetzen, eine tolle Hilfe. |
|
|
| |
|
|
|
| Garnicht die Rede wert... ^^
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 16,513//wm_close,wm_lButtonDown
while 1
WaitInput
case %key=27:break
select %uMessage
caseof 16 : break//wm_close
caseof 513 : hWnd.movebyMouse()//wm_lButtonDown
endSelect
wend
end
proc hWnd.moveByMouse
declare mpos#
dim mpos#,8
external("user32","GetCursorPos",mpos#)
var wix&=%winLeft-long(mpos#,0)
var wiy&=%winTop-long(mpos#,4)
while iskey(1)
external("user32","GetCursorPos",mpos#)
setWindowPos %hWnd=(long(mpos#,0)+wix&),(long(mpos#,4)+wiy&) - (%winRight-%winLeft),(%winBottom-%winTop);0
wend
dispose mpos#
endProc
|
|
|
| |
|
|