Aktuelle Zeit: 18.11.2017 12:08

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Fenster in DLL öffnen geht das?
BeitragVerfasst: 01.08.2017 18:25 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Folgender Code funktioniert nicht ->

PB.5.60 x64 Win10

DLL (Normal & Threadsafe):
Code:
ProcedureDLL.i OW()
  ProcedureReturn OpenWindow(#PB_Any,0,0,300,300,"TestFenster",#PB_Window_BorderLess)
EndProcedure

EXE:
Code:
Import "windowtest.lib"
  OW()
EndImport

If OW()
  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf


Bin mir eigentl. sicher, dass es schonmal funktioniert hat!?
:cry: :freak:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fenster in DLL öffnen geht das?
BeitragVerfasst: 01.08.2017 18:40 
Offline

Registriert: 29.08.2004 13:18
muss dann nicht alles, was mit Fenster-handling zu tun hat, auch in der DLL ablaufen? Die haben doch alle getrennte "Nummern" etc, oder Synchronisiert sich die PB Exe mit der PB DLL?

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fenster in DLL öffnen geht das?
BeitragVerfasst: 01.08.2017 18:51 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Danke :)

So gehts... (bin mir aber fast sicher das es mal einfacher funtioniert hat).

DLL:
Code:
ProcedureDLL.i OW()
  ProcedureReturn OpenWindow(#PB_Any,0,0,300,300,"TestFenster",#PB_Window_BorderLess|#PB_Window_SystemMenu)
EndProcedure

ProcedureDLL.i WE()
  ProcedureReturn WaitWindowEvent()
EndProcedure


EXE:
Code:
Import "windowtest.lib"
  OW()
  WE()
EndImport

If OW()
  Repeat
    If WE() = #PB_Event_CloseWindow
      Break
    EndIf
  ForEver
EndIf


Bin verwirrt :coderselixir:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fenster in DLL öffnen geht das?
BeitragVerfasst: 01.08.2017 19:12 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Die DLL hat eine eigene Instanz.

Achtung! das geht nur unter Windows

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fenster in DLL öffnen geht das?
BeitragVerfasst: 02.08.2017 10:27 
Offline
Benutzeravatar

Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Hallo,

sorry, aber immer wenn ich so etwas lese...
Zitat:
Fenster in DLL öffnen geht das?

...bin ich mir sicher, dass ein Design-Fehler vorliegt. Es gibt wirklich nur ganz ganz wenige gute Gründe, so etwas tun zu wollen.

Wenn es dann doch (irgendwie) geht, dann kann es der Grund für seltsame Abstürze, Memory-Leaks und andere schwer zu findende Symptome sein. Ich rate dringend dazu, das Programm-Design so anzupassen, dass in den Libs nur Funktionen ohne GUI ausgeführt werden. Die GUI sollte immer im Haupt-Programm und dort im Haupt-Thread(!) gestaltet und verwendet werden.

Grüße,

Kukulkan


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fenster in DLL öffnen geht das?
BeitragVerfasst: 02.08.2017 11:59 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Danke für die Infos.
So wie es jetzt aussieht werde ich dem Hauptprogramm die Fenstergenerierung überlassen.
(Ich versuche mein kleines GUI-Module in eine DLL zu packen.)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fenster in DLL öffnen geht das?
BeitragVerfasst: 02.08.2017 18:52 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Kukulkan hat geschrieben:
Hallo,

sorry, aber immer wenn ich so etwas lese...
Zitat:
Fenster in DLL öffnen geht das?

...bin ich mir sicher, dass ein Design-Fehler vorliegt. Es gibt wirklich nur ganz ganz wenige gute Gründe, so etwas tun zu wollen.

Öhm, es gibt schon gute Gründe sowas machen zu wollen, ich habe zum Beispiel ein Tool, das Dlls als Plugins nutzt, und die Plugins brauchen I.d.R. auch eigenständige Fenster.
Das funktioniert im übrigen fehlerfrei (auch unter Linux), wenn man alle Events per Bindbefehlen in der Dll verarbeitet und die Hauptschleife im Hauptprogramm verbleibt.
Hatte mich allerdings ehrlich gesagt auch gewundert, dass es da nicht knallt :mrgreen:

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fenster in DLL öffnen geht das?
BeitragVerfasst: 02.08.2017 22:14 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Alle Proceduren die mit BindEvent gebunden werden laufen im Mainscope. Also da wo WaitWindowEvent aufgerufen wird...

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fenster in DLL öffnen geht das?
BeitragVerfasst: 03.08.2017 06:42 
Offline

Registriert: 29.08.2004 13:18
mk-soft hat geschrieben:
Alle Proceduren die mit BindEvent gebunden werden laufen im Mainscope. Also da wo WaitWindowEvent aufgerufen wird...

Auch wenn bind in der DLL ausgerufen wird? Das BindEvent von der DLL weis doch nichts von der Main.

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fenster in DLL öffnen geht das?
BeitragVerfasst: 03.08.2017 08:46 
Offline
Benutzeravatar

Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Zitat:
Öhm, es gibt schon gute Gründe sowas machen zu wollen

Ja, PlugIns die GUI brauchen sind so ein Beispiel für die ganz wenigen guten Gründe :-)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye