VB: Form ontop

Pagina: 1
Acties:

  • robbertb
  • Registratie: September 2000
  • Niet online
Ik heb een applicatie, met een titelbalk,menubalk,werkbalk en onderin een titelbalk. Er tussenin zit een plaatje waar later de verschillende programmamodules overheen worden geladen. Dit zijn DLL's. Maar nou is het probleem als ik zo dll laad, en bv ergens in menu klik dat die dll(een form) naar achtergrond verdwijnt en dat is niet de bedoeling. IK weet dat je "SetWindowPos" kunt gebruiken, maar ik wil mn programma modules niet buiten me eigenapplicatie on top hebben..
Dus zo ziet het eruit

Titelbalk
Menubalk
Werkbalk
xxxxxxxx
xxxxxxxx
xxxxxxxx
Statusbalk

Waar op de xxxxxxx een picturebox staat, die totnu toe alleen nog plaatjes kan weergeven. Mooiste is denk ik als ik een dll niet in nieuw venster laad maar in de picturebox.
Alles moet onafhankelijk van elkaar blijven, en volges 3lagen structuur werken, dus alles zit niet in een project, maar mbv dlls

[ Voor 34% gewijzigd door robbertb op 12-03-2003 14:18 ]


  • JohanDM
  • Registratie: Augustus 2002
  • Laatst online: 16-07-2021

JohanDM

Optimist

Volgens mij kan je de DLL met forms beter veranderen in een OCX met UserControls.
Je kan dan dynamisch een control uit de OCX in de picturebox laden en terug verwijderen wanneer nodig.

"Two things are infinite: the universe and stupidity. And the former I'm not so sure about." -- Albert Einstein


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Kijk eens op Topic 698264

Je kan dan een form uit een dll halen en dan inladen in een picturebox. Is mij gelukt, en het werkt perfect.

  • robbertb
  • Registratie: September 2000
  • Niet online
NTGiant schreef op 12 March 2003 @ 20:14:
Kijk eens op Topic 698264

Je kan dan een form uit een dll halen en dan inladen in een picturebox. Is mij gelukt, en het werkt perfect.
met setparent dus maar hoe zet je het dan in de picturebox? ik had al zitten experimenteren met
set picture1.container = new classTest maarja dat werkt natuurlijk niet

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 23:42

johnwoo

3S-GTE

robbertb schreef op 13 maart 2003 @ 00:02:
[...]

met setparent dus maar hoe zet je het dan in de picturebox? ik had al zitten experimenteren met
set picture1.container = new classTest maarja dat werkt natuurlijk niet
In je DLL bouw je een functie die de hWnd van de child form teruggeeft. Een C/C++ DLL zal waarschijnlijk CreateWindow gebruiken om dit window te maken, een VB DLL zal waarschijnlijk gewoon een VB form aanmaken en kan daarvan de hWnd property teruggeven. Punt is dat je aan die hWnd van je zojuist gemaakte child window komt.

Als je die eenmaal hebt, kun je hem met SetParent in je PictureBox gooien:
Visual Basic .NET:
1
2
3
Dim hWnd As Long
hWnd = MyDLLProject.CreateMyDLLWindow(foo, bar)
SetParent hWnd, MyAppProject.MyMainForm.MyPictureBox.hWnd

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Ik heb het als volgt gedaan:

Code in DLL:
Visual Basic:
1
2
3
Public Function GetSettings() AS Object
    Set Settings = frmPlugin.fraSettings
End Function


Code in module:
Visual Basic:
1
Public objPlugin as Object


Code in form:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   Function LoadPugin ()
     Dim objFrameWork as Object

     objFrameWork = CreateObject("Plugin1.clsFrameWork")
     Set objPlugin = objFrameWork.GetSettings

   End Function

   Function ShowPlugin()

     SetParent objPlugin.hwnd, picPlugin.hwnd
     objPlugin.ZOrder

   End Function

[ Voor 2% gewijzigd door DukeMan op 13-03-2003 08:42 . Reden: Typo ]

Pagina: 1