Deutsch
Forum

Fehler beim Aufruf

 

Georg
Hovenbitzer
Hallo zusammen,

ich wollte mal diese On Unit testen, bekomme beim Aufruf immer den Fehler:

Zeile 1 in On.pcu:
$DEFINE XPSE

XPSE habe ich nicht installiert, sollte aber doch auch ohne gehen - oder ?
KompilierenMarkierenSeparieren
 $U usermessages.pcu = user.
 $U lists.pcu = list.
 $U On.pcu = On.
Declare myEvent&
WindowStyle (2 | 8 | 16 | 32 | 128 | 512)
Window ((%MaxX - 800) / 2),((%MaxY - 600) / 2)-800,600
Edit& = @Control(Edit,,$54001001,20,470,754,20,%hWnd,301,%hInstance,$20000)
myEvent& = on.event(28,Edit&) OnChange

WhileNot %Key = 2

    WaitInput

    If %UMessage = myEvent&

        Print Treffer :-)

    EndIf

EndWhile

on.delevents
on.Close
End
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
01.12.2006  
 




RGH
$DEFINE gibt es erst ab XProfan 10. Die PCU setzt also XProfan 10 vorraus.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
01.12.2006  
 



Genau - so wie es hier steht: https://xprofan.com/units setzt die Unit XProfan10 vorraus.
 
01.12.2006  
 




Georg
Hovenbitzer
Verdammt Bitte mit der Pressung der CDs beeilen

Ich habe es aber auch mal anders versucht:
KompilierenMarkierenSeparieren
Def on(4) !on.dll,on
Declare OnDll&
Declare Edit&
OnDll& = @Usedll(on.dll)
Cls
Edit& = @Control(Edit,,$54001001,50,10,100,20,%hWnd,301,%hInstance,$20000)
On(28,Edit&,102426,%Hwnd)
UserMessages 102426

WhileNot %Key = 2

    WaitInput

    If %UMessage = 102426

        Print Treffer

    EndIf

EndWhile

On(28,Edit&,102426,0)
FreeDLL OnDll&
End

Hat aber auch keinen Erfolg gebracht, eine Änderung im Edit wird nicht erkannt.
Wenn ich die On2.dll von hier versuche, bekomme ich immer eine Schutzverletzung.
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
01.12.2006  
 



Hm schau mal in den Unitsource wie die DLL tatsächlich verwendet wird. Hier nochmal die neuste DLLVersion.

8 kB
Hochgeladen:01.12.2006
Ladeanzahl55
Herunterladen
 
01.12.2006  
 




Georg
Hovenbitzer
Hallo iF,

kannst du mir vielleicht etwas helfen, ich komme mit dem Source der PCU nicht klar.
Mir fällt es doch recht schwer XPSE Code zu lesen.

Ich habe nun folgendes ohne Erfolg versucht:
KompilierenMarkierenSeparieren
Declare OnDll&
Declare Edit&
Declare ProcAddr&
Declare UMsg&
Cls
OnDll& = @Usedll(on.dll)
ProcAddr& = @External(kernel32,GetProcAddress,OnDll&,on)
Edit& = @Control(Edit,,$54001001,50,10,100,20,%hWnd,301,%hInstance,$20000)
UMsg& = @Call(ProcAddr&,28,Edit&,102426,%hWnd)
UserMessages UMsg&,102426

WhileNot %Key = 2

    WaitInput

    If %UMessage = UMsg&

        Print Treffer1

    ElseIf %UMessage = 102426

        Print Treffer2

    EndIf

EndWhile

@Call(ProcAddr&,28,Edit&,102426,0)
FreeDLL OnDll&
End
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
01.12.2006  
 



Ich schau gleich mal...
 
01.12.2006  
 



Geht ganz prima:
KompilierenMarkierenSeparieren
 {$cleq}
Declare OnDll&
Declare Edit&
Declare ProcAddr&
Declare eventID&
Cls
OnDll& = @Usedll(on.dll)
ProcAddr& = @External(kernel32,GetProcAddress,OnDll&,on)
Edit& = @Control(Edit,,$54001001,50,10,100,20,%hWnd,301,%hInstance,$20000)
eventID& = @Call(ProcAddr&,515,Edit&,102426,%hwnd)
print eventID&
UserMessages 102426

WhileNot %Key = 2

    WaitInput

    If %UMessage = 102426

        Print Treffer1

    EndIf

EndWhile

@Call(ProcAddr&,515,Edit&,102426,0)
FreeDLL OnDll&
End
 
01.12.2006  
 




Georg
Hovenbitzer
Stimmt, auch in meinem Code klappt es mit 515 LinksDoppelKlick.
Jetzt habe ich erst kappiert, es klappen nur die Messages die in der Unit angegeben sind
Da ich bis dato es mit der EasyEvent gemacht habe, bin ich nicht auf die Idee gekommen das OnChange nicht unterstützt wird.

Was ich aber immer noch nicht geschaft habe, ist eine Proc aufzurufen:
KompilierenMarkierenSeparieren
Declare OnDll&
Declare Edit&
Declare ProcAddr&
Declare eventID&
Cls

Proc Test

    Print per Proc
    Return 0

EndProc

OnDll& = @Usedll(on.dll)
ProcAddr& = @External(kernel32,GetProcAddress,OnDll&,on)
Edit& = @Control(Edit,,$54001001,150,100,100,20,%hWnd,301,%hInstance,$20000)
@Call(ProcAddr&,0,0,0,1)
eventID& = @Call(ProcAddr&,521,Edit&,@ProcAddr(Test,0),%hWnd)
Print eventID& =  + @Str$(eventID&)

WhileNot %Key = 2

    WaitInput

EndWhile

@Call(ProcAddr&,515,Edit&,@ProcAddr(Test,0),0)
FreeDLL OnDll&
End

Wo liegt denn hier der Fehler schon wieder
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
01.12.2006  
 



Stop! Das ist unrichtig das nur die Messages funktionieren die in der Unit deklariert sind. Die DLL macht keinen Unterschied.

Die Sache ist eine andere! WaitInput lässt sich manchmal nicht durchbrechen - bei bestimmten Messages. Bei Scrollbars hab ich es auch schon festgestellt das beim Scrollen waitinput trotz gesetzter Message nicht durchbrochen wird.

Das mit der Proc geht etwas anders - wart ich schau mal:
 
01.12.2006  
 



Schau mal so gehts:
KompilierenMarkierenSeparieren
Declare OnDll&
Declare Edit&
Declare ProcAddr&
Declare eventID&
Cls
OnDll& = @Usedll(on.dll)
ProcAddr& = @External(kernel32,GetProcAddress,OnDll&,on)
Edit& = @Control(Edit,,$54001001,50,10,100,20,%hWnd,301,%hInstance,$20000)
Call(ProcAddr&,0,0,0,1)
eventID& = @Call(ProcAddr&,515,Edit&,procaddr(doit,3),%hwnd)

...
KompilierenMarkierenSeparieren
proc doit

    parameters a&,b&,c&
    print a&,b&,c&
    return 0

endproc

 
01.12.2006  
 



Dein OnChange wird vlt. garnicht ausgelöst..., probier mal

WM_KEYDOWN = { $100 | 256 }
WM_KEYFIRST = { $100 | 256 }
WM_KEYLAST = { $108 | 264 }
WM_KEYUP = { $101 | 257 }
 
01.12.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.047 Betrachtungen

Unbenanntvor 0 min.

Themeninformationen



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