Bild in DLL laden und an EXE übergeben

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich finde diese Variante auch schön:
DLL.pb DLL.cfg

Code: Alles auswählen

[DLL.pb]
  IDE Options = PureBasic v3.94 (Windows - x86)
  ExecutableFormat = Shared Dll
  Executable = DLL.dll
  DisableDebugger
  HideErrorLog
  AddResource = E:\TS-Temp\BildInDLL\DLL.rc
DLL.rc

Code: Alles auswählen

PureBasic BITMAP "E:\\TS-Temp\\BildInDLL\\PureBasic.bmp"
Das ist die DLL :D
jetzt noch den Testcode:

Code: Alles auswählen

myPicture1 = LoadBitmap_(LoadLibrary_("DLL.dll"),"PUREBASIC")

If OpenWindow(0,0,0,400,100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Bild in DLL Test")
  If CreateGadgetList(WindowID(0))
    ImageGadget(1,0,0,300,100,myPicture1)
  EndIf
  
  Repeat
  Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46
Wohnort: Luxemburg
Kontaktdaten:

Beitrag von hardfalcon »

äh sorry, aber was ist denn der Unterschied zwischen Handle und Speicheradresse? Ich dachte bis jetzt immer, das sei das gleiche.... :oops:
„Warum siehst du den Splitter im Auge deines Bruders, aber den dicken fetten schwarzen Zensurbalken vor deinem Auge bemerkst du nicht?“
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

Handle:
Immer wenn ein GUI Objekt erstellt wird (Fenster, Gadget oder so) bekommt es als Adresse, eine noch nicht Existierende einmalige (Laufende) Nummer verpasst.
Ein Handle ist also "nur" eine Objektnummer, die vom Betriebsystem zum ansprechen des Objektes da ist.

Handle = Griff (zum anfassen des Objektes)

(Bei manchen Objekten ist das Handle auch gleichzeitig die Anfangsspeicheradresse des Objektes, da diese Adresse ja auch einmalig ist.)

Speicheradresse:
GUI Objekte und ihr Speicherplatz, werden vom Betriebsystem verwaltet.
Die Speicheradresse eines GUI-Objektes ist für den Programmierer (meist) uninteressant, da es über das Betriebsystem-Handle zu erreichen ist!

Da es ein Objekt ist, kann man nur die Anfangsspeicheradresse als Zeiger bekommen(Wie weiss ich nicht!). Um das Objekt im Speicher zu manipulieren nimmt man meist Betriebsystemfunktionen oder man muss die Interne-Struktur des Objektes genau kennen.
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1755
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

@PAMKKKKK: schöne Erklärung, habe dafür gleich mal einen FAQ-Eintrag gemacht. Dieser kann natürlich noch verbessert werden!
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

Danke! :mrgreen:

STOLZ....STOLZ....
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Antworten