Español
Foro

LoadFile en el wproc Fall

 
No-XPSE:
DECLARE __cf1&,__cf2&
Def __cf1(2) !KERNEL32,GetProcAddress
Def __cf2(1) !KERNEL32,GetModuleHandleA
__cf1&=__cf1(__cf2(user32.dll),SetWindowLongA)
__cf2&=__cf1(__cf2(user32.dll),CallWindowProcA)
 $DEFINE XPSE
CLS
VAR _OWP&=call(__cf1&,%HWND,-4,PROCADDR(WPROC,4))
PRINT LOADFILE$(,)
WAITINPUT
FIN

proc WPROC

    PARAMETERS WND&, MSG&, WPARAM&, LPARAM&
    call(__cf2&,_OWP&,WND&, MSG&, WPARAM&, LPARAM&)

ENDPROC


cls
var _owp&:=setwindowlong(hwnd,gwl_wndproc,procaddr(wproc,4))
imprimir loadfile$(,)
waitinput
end

proc wproc(Wnd&, Msg&, Wparam&, Lparam&)

    callwindowproc(_owp&,Wnd&, Msg&, Wparam&, Lparam&)

ENDPROC


Der Source zeigt (glaube es aber una altes Problema!) el LoadFile$ no el deseado Valor zurückgibt.

Yo voluntad hier no en el Problema rumhacken pero simplemente nochmals ansprechen. Yo denke con ChooseDir verhält lo ähnlich.
 
23.10.2006  
 




RGH
Wenn uno en el Profano-interne Messagehandlich eingreift, etwa por el Fastmode oder mittels uno Umbiegens el Windows-Prozeduren, darf uno se no wundern, si la vordefinierten Dialoge no mehr como gewünscht trabajo, como ellos el Profano-interne Messagehandling angewiesen son.

Saludo
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
23.10.2006  
 




RGH
Wenn uno se aber tzrotzdem el Carta eigener Dialoge ersparen voluntad, puede ser sí antes el Aufruf de LoadFile$ el ursprüngliche Windows-Procedimiento (findet se exakt a diesem Zweck en &WinProc) einsetzen y direkt danach otra vez en el propio umschalten, etwa así:
DECLARE __cf1&, __cf2&, MyWProc&
Def __cf1(2) !KERNEL32,GetProcAddress
Def __cf2(1) !KERNEL32,GetModuleHandleA
__cf1&=__cf1(__cf2(user32.dll),SetWindowLongA)
__cf2&=__cf1(__cf2(user32.dll),CallWindowProcA)

proc WPROC

    Parámetros WND&, MSG&, WPARAM&, LPARAM&
    call(__cf2&,_OWP&,WND&, MSG&, WPARAM&, LPARAM&)

ENDPROC

Proc WLoadFile

    Parámetros titel$, filter$
    call(__cf1&,%HWND,-4,&winproc)
    var erg$ = LoadFile$(titel$, filter$)
    call(__cf1&,%HWND,-4,MyWProc&)
    volver erg$

ENDPROC

Hauptprogramm
-------------
CLS
MyWProc& = PROCADDR(WPROC,4)
VAR _OWP&=call(__cf1&, %HWND, -4,MyWProc&)
PRINT WLoadFile(,)
WAITINPUT
call(__cf1&,%HWND,-4,&winproc)
FIN

Ach sí: Vor el End muß el Original-Procedimiento auch todavía eingewsetzt voluntad, como lo sonst beim Programmende para Choque kommen kann.

Saludo
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
23.10.2006  
 



OK - leuchtet una. Man muss also para cada Control welches uno SubClasst antes el Aufruf el vordefinierten Dialoge el originalWinProzedur wiederherstellen - el deckt se auch con media Erfahrungen.

Yo finde una Referencia en el Hilfedatei en el Vordefinierten Dialogen y en ProcAddr es adecuado y kann viele Verzweiflungen en el Vorraus verhindern.
 
23.10.2006  
 




RGH
Sí, Yo debería lo en el Ayuda a passender Punto erwähnen.
El geschickteste Möglichkeit wäre sicher, no vordefinierten Dialoge en solchen Programmen utilizarse. Wer el Windowsprozedur incluso schreibt, schafft lo sicher auch, el Dialoge incluso a escribir. ;)

Saludo
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
23.10.2006  
 



RGH
Sí, Yo debería lo en el Ayuda a passender Punto erwähnen.
El geschickteste Möglichkeit wäre sicher, no vordefinierten Dialoge en solchen Programmen utilizarse. Wer el Windowsprozedur incluso schreibt, schafft lo sicher auch, el Dialoge incluso a escribir. ;)

Saludo
Roland


Naja lo va tatsächlich todavía algo eleganter - besonders si uno así faul es Yo lo bin!

Um lo kurz a veranschaulichen - Yo beschäftige simplemente el gleiche Exe con neuem Prozess para el nötige Tarea...
//sólo a Veranschaulichung!
include usermessages.pcu = en.
include pipe.pcu = pipe.
include scrollarea.inc

if %parcount

    seleccionar par$(1)

        caseof loadfile

        app.loadfile

        caseof browsefolder

        app.browseForFolder
        otherwise
        end

    endselect

endif

var hwnd:=new(ScrollArea,0,(%maxx/2-305),(%maxy/2-300),610,430,610-18,600,sa_complete | SA_DESKTOPISDIALOG - SA_MINIMIZEBOX,apptitle)
var _owp&:=setwindowlong(hwnd,gwl_wndproc,procaddr(wproc,4))
imprimir hwnd.loadfile$(,)
waitinput
end

proc wproc(Wnd&, Msg&, Wparam&, Lparam&)

    callwindowproc(_owp&,Wnd&, Msg&, Wparam&, Lparam&)

ENDPROC

proc hwnd.loadfile(desc$,mask$)

    enablewindow hwnd::window&,0
    var sid$:=str$(gettickcount)
    var pipe&:=pipe.create(sid$)
    pipe.push pipe&,desc$
    pipe.push pipe&,mask$
    pipe.push pipe&,str$(%hwnd)
    shell par$(0)+ loadfile +sid$
    en.add 7788

    mientras que pipe.get(pipe&)<>done

        waitinput

    wend

    en.sub 7788
    sleep 100
    pipe.pop pipe&
    var resultado$:=pipe.pop(pipe&)
    pipe.close pipe&
    enablewindow hwnd::window&,1
    setactivewindow(hwnd::window&)
    volver resultado$

ENDPROC

proc app.loadfile

    var sid$:=par$(2)
    var pipe&:=pipe.create(sid$)
    var desc$:=pipe.pop(pipe&)
    var mask$:=pipe.pop(pipe&)
    var hwnd&:=val(pipe.pop(pipe&))
    var resultado$:=loadfile$(desc$,mask$)
    pipe.push pipe&,done
    pipe.push pipe&,resultado$
    pipe.close pipe&
    sendmessage(hwnd&,7788,0,0)
    end

ENDPROC

 
23.10.2006  
 




Frank
Abbing

Man muss also para cada Control welches uno SubClasst antes el Aufruf el vordefinierten Dialoge el originalWinProzedur wiederherstellen - el deckt se auch con media Erfahrungen.


Aber no con media. Dort gab lo sólo el Ventana principal de y a Problemas, nie aber con otro Controls. Was en efecto logisch es, como se el el Fastmode sólo en %hwnd bezieht.
 
23.10.2006  
 




RGH
Wir haben hier zwei Tatbestände vorliegen, el direkt en XProfan eingreifen: Der Fastmode y el Umdefinierung el Windowsprozeduren.

Exactamente genommen bezieht se el Fastmode sólo el XProfan-interne Messagehandling, daß por esta weitgehend abgeschaltet se. Das kann (muß pero no en cada Fall) Auswirkungen en el vordefinierten Dialoge haben.

Das Zweite son el Windowsroutinen. Davon ha XProfan 4 Strück: Ventana principal (&WinProc), Ventana principal en el Dialogstil (&WinDProc), Dialogfenster con @Crear(Diálogo (&DlgProc) y Ventana con @Crear(Ventana (&DlgWProc). El vordefinierten Dialoge haben como Elternfenster siempre la ventana principal, si porque existiert, oder simplemente 0.

Como De todos modos: Wer al offenen Herzen de XProfan operiert, muß así rechnen, el una oder otro Bypass legen tener. ;)
 
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
23.10.2006  
 



Frank Abbing
Frank Abbing
Man muss also para cada Control welches uno SubClasst antes el Aufruf el vordefinierten Dialoge el originalWinProzedur wiederherstellen - el deckt se auch con media Erfahrungen.


Aber no con media. Dort gab lo sólo el Ventana principal de y a Problemas, nie aber con otro Controls. Was en efecto logisch es, como se el el Fastmode sólo en %hwnd bezieht.


Na entonces mostrar Dir veces que aquí a Franco, Yo denke el kann Su Meinung ändern:
 {$cleq}
cls
var listbox&:=createlistbox(hwnd,,10,10,100,100)
var _owp&:=setwindowlong(listbox&,gwl_wndproc,procaddr(wproc,4))
imprimir loadfile$(,)
waitinput
end

proc wproc(Wnd&, Msg&, Wparam&, Lparam&)

    callwindowproc(_owp&,Wnd&, Msg&, Wparam&, Lparam&)

ENDPROC

Hier se el listbox& gesubclasst - y Loadfile verhält se dämlich como esperado...
 
23.10.2006  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

859 Views

Untitledvor 0 min.
E.T.08.01.2012

Themeninformationen

Dieses Thema ha 3 subscriber:

iF (4x)
RGH (4x)
Frank Abbing (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie