| |
|
|
Uwe ''Pascal'' Niemeier | Hi Leute!
Hier die an XProfan 11.2 angepaßte Version der ocx-Routinen. Doku und Beispiele siehe Version 2. Soweit ich auf die Schnelle feststellen konnte, müßten damit die Beispiele des ocx-Packages2 laufen (nach minimaler Anpassung der Syntax; siehe beigefügte ReadMe)
Die ocxInfo.inc ist allerdings nicht enthalten; anscheinend tuts die alte noch
Speziell per iF anbei noch ein paar Minimalbeispiele zum Thema HTML/JS
SeeYou Pascal |
|
|
| |
|
|
|
| Waaaha freue mich auf heute Abend!!! |
|
|
| |
|
|
|
| Jaujau! zwar nicht getestet (kein XProfan hier) aber bitte lieber Gott lass es funktionieren.
Dankesehr! Dankesehr! Dankesehr! |
|
|
| |
|
|
|
| @UWE: Genial!
Und mit der etwas überarbeiteten (anhängigen) ocx3a.ph klappts auch mit xpse.
Die PH beinhaltet 2 kleine Fehler (wenn man es überhaupt so nennen kann) weshalb der Code bei mir nicht lief.
In der Zeile fehlt hinten ein Komma
Ich hab bei der atl.dll auch den Dateinamen geuppert damit diese DLL von xpse erkannt werden kann als eine DLL aus einer Liste per DLL welche gesondert behandelt werden müssen, in etwa geladen werden vor dem Beziehen der Funktionsadressen. (Was auch ein Grund dafür ist dass das end vom xpse immer in __xpse__endofprogram__ geändert wird um solche DLLS auch wieder zu entladen vor dem Programmende.)
Zuletzt muss ich nur noch
{$pushkeyword count%,param#,stringw,stringw$}
anwenden und: Es geht!
Jetzt wünscht ich mir Zeit auf Wunsch!
Wie ich das sehe kann das der Beginn sein einer wundervollen Beziehung zwischen XProfan und hübschen UIs. |
|
|
| |
|
|
|
| Das DestroyWindow lässt das Programm aber abstürzen, auch bei Dir?
Einfach mal statt der Schleife in der JSScript-Exec.prf einsetzen. Ich erhalte ein vorzeitiges Programmende. |
|
|
| |
|
|
|
| Nachtrag: Hast Du eine Idee wie man das WebControl per Tastatureingaben empfänglich machen kann? (Oder ist das so nicht gedacht? ) |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hi iF!
Die PH beinhaltet 2 kleine Fehler (wenn man es überhaupt so nennen kann) weshalb der Code bei mir nicht lief.
Irgendwas lag mir da an; in irgendeiner älteren Profan-Version mußte das so sein Die Anpassung an XPSE hatte ich bei 3a noch nicht berücksichtigt; das kommt bei der Vollversion.
Das DestroyWindow lässt das Programm aber abstürzen, auch bei Dir?
Nö. Prüf mal, ob das Controlhandle wirklich vorhanden ist; das war ja eines der Probleme bei der letzten ß von XProfan 11.2
Hast Du eine Idee wie man das WebControl per Tastatureingaben empfänglich machen kann?
Das soll mal ein Thema im ocxPackage 3 sein. Hier eine kleine Vorschau (habe den @Addr()-Workaround mal mit eingebaut):
window 780,400
$H Windows.ph
$H ocx3a.ph
$I ocx3a.inc
ocxInit()
var File$=X:OCXTest.html-----------------------------Pfad bitte anpassen!
declare Temp#
dim Temp#,4
var WebObject&=ocxCreate(File$,%hwnd,500,10,250,100,$50800000,Temp#)
var WebControl&=long(Temp#,0)
var Document&=ocxGet(WebObject&,Document)
var HTMLWnd&=ocxGet(Document&,ParentWindow)
proc Event----------------------------------------------------------
var Event&=ocxGet(HTMLWnd&,event)
var Key%=ocxGet(Event&,keycode)
--Per Usermessage WaitInput durchbrechen und Parameter übergeben
sendmessage(%hwnd,5000,Key%,Key%)
ocxRelease(Event&)
endproc-------------------------------------------------------------
proc CreateIMD----------------------------CreateInterfaceMethodDummy
var a&=~GlobalAlloc(0,16)
long a&,0=-1192457387,&(2),-1034033781,&(1)*4+4
return a&
endproc-------------------------------------------------------------
declare VTable#,IFace&
dim VTable#,32
long VTable#,0=CreateIMD(2,0)QueryInterface
long VTable#,4=CreateIMD(0,0)AddRef
long VTable#,8=CreateIMD(0,0)Release
long VTable#,24=procaddr(Event,5)
long VTable#,28=VTable#
IFace&=VTable#+28
--Eigenes Interface zur ocx-Objektliste hinzufügen ( in ocx3a noch undokumentiert)
ocxAddObject(IFace&)--Ist notwendig, damit IFace& als Objektpointer übergeben wird
usermessages 16,5000
set(fastmode,1)
ocxPut(Document&,onkeypress,IFace&)
ocxMethod(HTMLWnd&,Focus)--Focus auf WebControl (geht nicht mit SetFocus)
while 1
waitinput
case %umessage=16:break
case %umessage=5000:print Taste : ;&uwparam
endwhile
destroywindow(WebControl&)
ocxDeInit()
Nach diesem Prinzip kannst du praktisch jedes on-Event des HTML-Dokumentes anzapfen und circa das Event-Objekt weitere Infos dazu einholen.
BTW: Als Grundlage per solche Entwicklungen verwende ich die IHTML-Interface-Referenz von MSDN.
HTH Pascal |
|
|
| |
|
|
|
| Jau, das schau ich mir an! |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hi Leute!
Kleine Korrektur: Die ursprüngliche ocxInfo.inc (zur Analyse und per eigene Experimente; zur Nutzung von ActiveX nicht zwingend nötig) corre nicht in Verbindung mit dem ocxPackage 3a. Hier das entsprechende Update.
SeeYou Pascal |
|
|
| |
|
|
|
| Hallo Pascal!
In der ocx3a.ph steht: , hier fehlt ein Komma und müsste heißen:
|
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hi iF!
Stimmt, das passiert mir öfters...corre aber trotzdem...
In irgendeiner älteren Profan-Version mußte das so sein bei APIs ohne Parameter und irgendwie ist das hängengeblieben
SeeYou Pascal |
|
|
| |
|
|
|
| Ich hatte beim Posten übersehen, dass AtlAxWinInit keinen Parameter erwartet - so gesehen ists imho eher ein Bug im XPSE, die ";-Schreibweise nicht korrekt umzusetzen. (sollte besser beide Varianten funktionieren) |
|
|
| |
|
|