Deutsch
Forum

Erste Erfahrungen...

 
- Seite 1 -


on(Event) (Download)

Die Unit (Sourcecode ist beiliegend!), ermöglicht (ohne Fastmode und Prozeduradressen!) das Abprüfen von Doppelklicks oder Rechte-Maustaste-Aktionen auf Dialogelementen und Controls wie Listboxen, Buttons... Auch das Neuzeichnen von Dialogen ist nun ein Kinderspiel.

Schade das Thomas seine easyVent nicht umbauen kann - also habe ich mal versucht seine dll auf minimaler Basis nachzustellen mit dem entscheidenen Punkt das es ohne Procaddr funktioniert! Und es funktioniert wunderbar!

Beispiel:
KompilierenMarkierenSeparieren
 {$cleq}
 $U on.pcu = on.
Def GetSysColor(1) !"User32","GetSysColor"
declare lb&,dlg&
//unsichtbares Hauptfenster damit lecker messages angekommen
windowstyle 80 | 1024
window 0,0 - 0,0
showwindow(%hwnd,0)
//
windowstyle 512+8
dlg&:=createdialog(0,"MyDlg",100,100,640,480)
lb&:=createbutton(dlg&,"",10,30,100,100)
on.event "paint"	,dlg&	,12343
on.event "close"	,dlg&	,12344
on.event "ldklick"	,lb&	,12345
on.event "rklick"	,lb&	,12346
on.event "mouseover"	,lb&	,12347
on.event "mouseleave"	,lb&	,12348
PaintDlg 0

while 1

    waitinput
    case %umessage==12343 : paintDlg 0
    case %umessage==12344 : break
    case %umessage==12345 : settext dlg&,"dblklick "+str$(&gettickcount)
    case %umessage==12346 : settext dlg&,"rklick "+str$(&gettickcount)
    case %umessage==12347 : settext lb&,"Hau ab!"
    case %umessage==12348 : settext lb&,""

wend

on.delevent "paint"	,dlg&	,12343
on.delevent "close"	,dlg&	,12344
on.delevent "ldklick"	,lb&	,12345
on.delevent "rklick"	,lb&	,12346
on.delevent "mouseover"	,lb&	,12347
on.delevent "mouseleave",lb&	,12348
on.close
end

Proc PaintDlg

    parameters u&
    startpaint dlg&
    usefont "MS Sans Serif",10,0,0,0,u&
    textcolor $00FF0000,-1
    drawtext 10,300,"https://ich.hab-doch-garkeine-homepage.de"
    endpaint

endproc

 
13.09.2006  
 



 
- Seite 1 -



Jac
de
Lad
Welche Version ist nun die richtigeß Wenn ich auf den Link ganz oben klicke kommt eine fast 600kB-Datei, unten im Beitrag (wo x mal gedownloaded steht) kommt nur eine 9kB-Datei...leicht verwirrend.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
14.09.2006  
 



Beides ist das selbe! Die eine ist nicht 600kb groß! Ich glaub Dein Browser spinnt, aber wart ich hab hier gleich noch was besseres!
 
14.09.2006  
 



So! Schau Dir mal den obigen Download an - und das Beispiel! Nun ists wirklich kinderleicht und man müsste sich mit der Unit (source liegt dabei) nichtmal mehr um die DLL kümmern!
KompilierenMarkierenSeparieren
 {$cleq}
 $U on.pcu = on.
Def GetSysColor(1) !"User32","GetSysColor"
declare lb&,dlg&
//unsichtbares Hauptfenster damit lecker messages angekommen
windowstyle 80 | 1024
window 0,0 - 0,0
showwindow(%hwnd,0)
//
windowstyle 512+8
dlg&:=createdialog(0,"MyDlg",100,100,640,480)
lb&:=createbutton(dlg&,"",10,30,100,100)
on.event "paint"	,dlg&	,12343
on.event "close"	,dlg&	,12344
on.event "ldklick"	,lb&	,12345
on.event "rklick"	,lb&	,12346
on.event "mouseover"	,lb&	,12347
on.event "mouseleave"	,lb&	,12348
PaintDlg 0

while 1

    waitinput
    case %umessage==12343 : paintDlg 0
    case %umessage==12344 : break
    case %umessage==12345 : settext dlg&,"dblklick "+str$(&gettickcount)
    case %umessage==12346 : settext dlg&,"rklick "+str$(&gettickcount)
    case %umessage==12347 : settext lb&,"Hau ab!"
    case %umessage==12348 : settext lb&,""

wend

on.delevent "paint"	,dlg&	,12343
on.delevent "close"	,dlg&	,12344
on.delevent "ldklick"	,lb&	,12345
on.delevent "rklick"	,lb&	,12346
on.delevent "mouseover"	,lb&	,12347
on.delevent "mouseleave",lb&	,12348
on.close
end

Proc PaintDlg

    parameters u&
    startpaint dlg&
    usefont "MS Sans Serif",10,0,0,0,u&
    textcolor $00FF0000,-1
    drawtext 10,300,"https://ich.hab-doch-garkeine-homepage.de"
    endpaint

endproc

 
14.09.2006  
 




Jac
de
Lad
Danke, ich probiers heute gleich aus!

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
14.09.2006  
 




Jac
de
Lad
Gleich die erste Frage: Gibt es einen oder mehrere Bereiche von Usermessages, die man nicht definieren sollte (soll ich beispielsweise als message nicht 1 nehmen, warum auch immer)?

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
14.09.2006  
 



 
- Seite 2 -


Ja gibt es! Alle Messages welche es eh schon gibt solltest Du nicht als Usermessages belegen! Welche Messages es eh schon gibt? Nimm einfach Konstantinopel  und gib wm_ ein, dort siehst Du welche Bereiche zu meiden sind.

z.B.:
KompilierenMarkierenSeparieren
# WM_ACTIVATE = { $6 | 6 }
# WM_ACTIVATEAPP = { $1C | 28 }
# WM_APP = { $8000 | 32768 }
# WM_ASKCBFORMATNAME = { $30C | 780 }
# WM_CANCELJOURNAL = { $4B | 75 }
# WM_CANCELMODE = { $1F | 31 }
# WM_CAPTURECHANGED = { $215 | 533 }
# WM_CHANGECBCHAIN = { $30D | 781 }
# WM_CHAR = { $102 | 258 }
# WM_CHARTOITEM = { $2F | 47 }
# WM_CHILDACTIVATE = { $22 | 34 }
# WM_CLEAR = { $303 | 771 }
# WM_CLOSE = { $10 | 16 }
# WM_COALESCE_FIRST = { $390 | 912 }
# WM_COALESCE_LAST = { $39F | 927 }
# WM_COMMAND = { $111 | 273 }
# WM_COMMNOTIFY = { $44 | 68 }
# WM_COMPACTING = { $41 | 65 }
# WM_COMPAREITEM = { $39 | 57 }
# WM_CONTEXTMENU = { $7B | 123 }
# WM_CONTEXTMENU = { $7B | 123 }
# WM_COPY = { $301 | 769 }
# WM_COPYDATA = { $4A | 74 }
# WM_CREATE = { $1 | 1 }
# WM_CTLCOLOR = { $19 | 25 }
# WM_CTLCOLORBTN = { $135 | 309 }
# WM_CTLCOLORDLG = { $136 | 310 }
# WM_CTLCOLOREDIT = { $133 | 307 }
# WM_CTLCOLORLISTBOX = { $134 | 308 }
# WM_CTLCOLORMSGBOX = { $132 | 306 }
# WM_CTLCOLORSCROLLBAR = { $137 | 311 }
# WM_CTLCOLORSTATIC = { $138 | 312 }
# WM_CUT = { $300 | 768 }
# WM_DDE_ACK = WM_DDE_FIRST + { $4 | 4 }
# WM_DDE_ACK = WM_DDE_FIRST + { $4 | 4 }
# WM_DDE_ADVISE = WM_DDE_FIRST + { $2 | 2 }
# WM_DDE_ADVISE = WM_DDE_FIRST + { $2 | 2 }
# WM_DDE_DATA = WM_DDE_FIRST + { $5 | 5 }
# WM_DDE_DATA = WM_DDE_FIRST + { $5 | 5 }
# WM_DDE_EXECUTE = WM_DDE_FIRST + { $8 | 8 }
# WM_DDE_EXECUTE = WM_DDE_FIRST + { $8 | 8 }
# WM_DDE_FIRST = { $3E0 | 992 }
# WM_DDE_FIRST = { $3E0 | 992 }
# WM_DDE_INITIATE = WM_DDE_FIRST
# WM_DDE_INITIATE = WM_DDE_FIRST + { $0 | 0 }
# WM_DDE_LAST = WM_DDE_FIRST + { $8 | 8 }
# WM_DDE_LAST = WM_DDE_FIRST + { $8 | 8 }
# WM_DDE_POKE = WM_DDE_FIRST + { $7 | 7 }
# WM_DDE_POKE = WM_DDE_FIRST + { $7 | 7 }
# WM_DDE_REQUEST = WM_DDE_FIRST + { $6 | 6 }
# WM_DDE_REQUEST = WM_DDE_FIRST + { $6 | 6 }
# WM_DDE_TERMINATE = WM_DDE_FIRST + { $1 | 1 }
# WM_DDE_TERMINATE = WM_DDE_FIRST + { $1 | 1 }
# WM_DDE_UNADVISE = WM_DDE_FIRST + { $3 | 3 }
# WM_DDE_UNADVISE = WM_DDE_FIRST + { $3 | 3 }
# WM_DEADCHAR = { $103 | 259 }
# WM_DELETEITEM = { $2D | 45 }
# WM_DESTROY = { $2 | 2 }
# WM_DESTROYCLIPBOARD = { $307 | 775 }
# WM_DEVICECHANGE = { $219 | 537 }
# WM_DEVMODECHANGE = { $1B | 27 }
# WM_DISPLAYCHANGE = { $7E | 126 }
# WM_DRAWCLIPBOARD = { $308 | 776 }
# WM_DRAWITEM = { $2B | 43 }
# WM_DROPFILES = { $233 | 563 }
# WM_ENABLE = { $A | 10 }
# WM_ENDSESSION = { $16 | 22 }
# WM_ENTERIDLE = { $121 | 289 }
# WM_ENTERMENULOOP = { $211 | 529 }
# WM_ENTERSIZEMOVE = { $231 | 561 }
# WM_ERASEBKGND = { $14 | 20 }
# WM_EXITMENULOOP = { $212 | 530 }
# WM_EXITSIZEMOVE = { $232 | 562 }
# WM_FONTCHANGE = { $1D | 29 }
# WM_GETDLGCODE = { $87 | 135 }
# WM_GETFONT = { $31 | 49 }
# WM_GETHOTKEY = { $33 | 51 }
# WM_GETICON = { $7F | 127 }
# WM_GETMINMAXINFO = { $24 | 36 }
# WM_GETTEXT = { $D | 13 }
# WM_GETTEXTLENGTH = { $E | 14 }
# WM_HANDHELDFIRST = { $358 | 856 }
# WM_HANDHELDLAST = { $35F | 863 }
# WM_HELP = { $53 | 83 }
# WM_HOTKEY = { $312 | 786 }
# WM_HSCROLL = { $114 | 276 }
# WM_HSCROLLCLIPBOARD = { $30E | 782 }
# WM_ICONERASEBKGND = { $27 | 39 }
# WM_IME_CHAR = { $286 | 646 }
# WM_IME_COMPOSITION = { $10E | 270 }
# WM_IME_COMPOSITIONFULL = { $284 | 644 }
# WM_IME_CONTROL = { $283 | 643 }
# WM_IME_ENDCOMPOSITION = { $10D | 269 }
# WM_IME_KEYDOWN = { $290 | 656 }
# WM_IME_KEYLAST = { $10F | 271 }
# WM_IME_KEYUP = { $291 | 657 }
# WM_IME_NOTIFY = { $282 | 642 }
# WM_IME_SELECT = { $285 | 645 }
# WM_IME_SETCONTEXT = { $281 | 641 }
# WM_IME_STARTCOMPOSITION = { $10C | 268 }
# WM_INITDIALOG = { $110 | 272 }
# WM_INITMENU = { $116 | 278 }
# WM_INITMENUPOPUP = { $117 | 279 }
# WM_INPUTLANGCHANGE = { $51 | 81 }
# WM_INPUTLANGCHANGEREQUEST = { $50 | 80 }
# WM_KEYDOWN = { $100 | 256 }
# WM_KEYFIRST = { $100 | 256 }
# WM_KEYLAST = { $108 | 264 }
# WM_KEYUP = { $101 | 257 }
# WM_KILLFOCUS = { $8 | 8 }
# WM_LBUTTONDBLCLK = { $203 | 515 }
# WM_LBUTTONDOWN = { $201 | 513 }
# WM_LBUTTONUP = { $202 | 514 }
# WM_MBUTTONDBLCLK = { $209 | 521 }
# WM_MBUTTONDOWN = { $207 | 519 }
# WM_MBUTTONUP = { $208 | 520 }
# WM_MDIACTIVATE = { $222 | 546 }
# WM_MDICASCADE = { $227 | 551 }
# WM_MDICREATE = { $220 | 544 }
# WM_MDIDESTROY = { $221 | 545 }
# WM_MDIGETACTIVE = { $229 | 553 }
# WM_MDIICONARRANGE = { $228 | 552 }
# WM_MDIMAXIMIZE = { $225 | 549 }
# WM_MDINEXT = { $224 | 548 }
# WM_MDIREFRESHMENU = { $234 | 564 }
# WM_MDIRESTORE = { $223 | 547 }
# WM_MDISETMENU = { $230 | 560 }
# WM_MDITILE = { $226 | 550 }
# WM_MEASUREITEM = { $2C | 44 }
# WM_MENUCHAR = { $120 | 288 }
# WM_MENUSELECT = { $11F | 287 }
# WM_MOUSEACTIVATE = { $21 | 33 }
# WM_MOUSEFIRST = { $200 | 512 }
# WM_MOUSEHOVER = { $2A1 | 673 }
# WM_MOUSELAST = { $209 | 521 }
# WM_MOUSELEAVE = { $2A3 | 675 }
# WM_MOUSEMOVE = { $200 | 512 }
# WM_MOVE = { $3 | 3 }
# WM_MOVING = { $216 | 534 }
# WM_NCACTIVATE = { $86 | 134 }
# WM_NCCALCSIZE = { $83 | 131 }
# WM_NCCREATE = { $81 | 129 }
# WM_NCDESTROY = { $82 | 130 }
# WM_NCHITTEST = { $84 | 132 }
# WM_NCLBUTTONDBLCLK = { $A3 | 163 }
# WM_NCLBUTTONDOWN = { $A1 | 161 }
# WM_NCLBUTTONUP = { $A2 | 162 }
# WM_NCMBUTTONDBLCLK = { $A9 | 169 }
# WM_NCMBUTTONDOWN = { $A7 | 167 }
# WM_NCMBUTTONUP = { $A8 | 168 }
# WM_NCMOUSEMOVE = { $A0 | 160 }
# WM_NCPAINT = { $85 | 133 }
# WM_NCRBUTTONDBLCLK = { $A6 | 166 }
# WM_NCRBUTTONDOWN = { $A4 | 164 }
# WM_NCRBUTTONUP = { $A5 | 165 }
# WM_NEXTDLGCTL = { $28 | 40 }
# WM_NEXTMENU = { $213 | 531 }
# WM_NOTIFY = { $4E | 78 }
# WM_NOTIFYFORMAT = { $55 | 85 }
# WM_NULL = { $0 | 0 }
# WM_PAINT = { $F | 15 }
# WM_PAINTCLIPBOARD = { $309 | 777 }
# WM_PAINTICON = { $26 | 38 }
# WM_PALETTECHANGED = { $311 | 785 }
# WM_PALETTEISCHANGING = { $310 | 784 }
# WM_PARENTNOTIFY = { $210 | 528 }
# WM_PASTE = { $302 | 770 }
# WM_PENWINFIRST = { $380 | 896 }
# WM_PENWINLAST = { $38F | 911 }
# WM_POWER = { $48 | 72 }
# WM_POWERBROADCAST = { $218 | 536 }
# WM_PRINT = { $317 | 791 }
# WM_PRINTCLIENT = { $318 | 792 }
# WM_PRINTCLIENT = { $318 | 792 }
# WM_QUERYDRAGICON = { $37 | 55 }
# WM_QUERYENDSESSION = { $11 | 17 }
# WM_QUERYNEWPALETTE = { $30F | 783 }
# WM_QUERYOPEN = { $13 | 19 }
# WM_QUEUESYNC = { $23 | 35 }
# WM_QUIT = { $12 | 18 }
# WM_RBUTTONDBLCLK = { $206 | 518 }
# WM_RBUTTONDOWN = { $204 | 516 }
# WM_RBUTTONUP = { $205 | 517 }
# WM_RENDERALLFORMATS = { $306 | 774 }
# WM_RENDERFORMAT = { $305 | 773 }
# WM_SETCURSOR = { $20 | 32 }
# WM_SETFOCUS = { $7 | 7 }
# WM_SETFONT = { $30 | 48 }
# WM_SETHOTKEY = { $32 | 50 }
# WM_SETICON = { $80 | 128 }
# WM_SETREDRAW = { $B | 11 }
# WM_SETTEXT = { $C | 12 }
# WM_SETTINGCHANGE = WM_WININICHANGE
# WM_SHOWWINDOW = { $18 | 24 }
# WM_SIZE = { $5 | 5 }
# WM_SIZECLIPBOARD = { $30B | 779 }
# WM_SIZING = { $214 | 532 }
# WM_SPOOLERSTATUS = { $2A | 42 }
# WM_STYLECHANGED = { $7D | 125 }
# WM_STYLECHANGING = { $7C | 124 }
# WM_SYSCHAR = { $106 | 262 }
# WM_SYSCOLORCHANGE = { $15 | 21 }
# WM_SYSCOMMAND = { $112 | 274 }
# WM_SYSDEADCHAR = { $107 | 263 }
# WM_SYSKEYDOWN = { $104 | 260 }
# WM_SYSKEYUP = { $105 | 261 }
# WM_SYSTEMERROR = { $17 | 23 }
# WM_SYSTIMER = { $118 | 280 }
# WM_TCARD = { $52 | 82 }
# WM_TIMECHANGE = { $1E | 30 }
# WM_TIMER = { $113 | 275 }
# WM_UNDO = { $304 | 772 }
# WM_USER = { $400 | 1024 }
# wm_user = { $400 | 1024 }
# WM_USERCHANGED = { $54 | 84 }
# WM_VKEYTOITEM = { $2E | 46 }
# WM_VSCROLL = { $115 | 277 }
# WM_VSCROLLCLIPBOARD = { $30A | 778 }
# WM_WINDOWPOSCHANGED = { $47 | 71 }
# WM_WINDOWPOSCHANGING = { $46 | 70 }
# WM_WININICHANGE = { $1A | 26 }
 
14.09.2006  
 




Jac
de
Lad
Nur die wm_-Messages oder auch die lb_, lv_ usw.? (entschuldige bitte meine blöden Fragen!)
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
14.09.2006  
 



Quatsch: (weils um die Usermessages geht)

Naja! Wenn Du Events für eine ListBox als UserMessages durchschleifen willst - dann darfst Du im Falle einer Listbox keine LB_s nehmen, sei denn, Du willst die Grundfunktionalität dieser Message selbst behandeln. (wovon ich abrate)

Richtig:

Nur die WMs nicht!

usermessages 
 
14.09.2006  
 




Jac
de
Lad
Danke!
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
14.09.2006  
 



Gern!

Die Unit sollte zu deutlich stabileren Programmen führen als wenn mit ProcAddr gehandhabt wird.
 
14.09.2006  
 




Rolf
Koch
Nachtrag von mir, alle von iF aufgeführten Messages darf man nehmen, aber dann bist Du für alles verantwortlich, was diese Message zu tätigen hat. Also alles was Roland bereits reingehauen hat musst Du nachbauen u.s.w. - vergisst Du irgendetwas oder weist nicht was die Message genau bedeutet, dann gibts Probleme.
@if Bei mir klappt die on.dll bis jetzt einwandfrei, werde wenn ich Zeit habe bisschen brutalere Tests durchführen *lol*
 
14.09.2006  
 



Danke Rolf!
 
14.09.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.359 Betrachtungen

Unbenanntvor 0 min.
Peter Max Müller13.05.2015
Ernst17.05.2014
H.Brill09.04.2014
Ingobingo10103.05.2012
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

iF (12x)
Jac de Lad (6x)
Rolf Koch (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie