Hallo zusammen, ...
ich würde gerne in Pure eine DLL schreiben, an die u.A. ein Windows-Handle (hWnd) übergeben wird.
Nun weis ich jedoch nicht genau, wie ich anschließend über PureBefehle auf das Zielfenster mit diesem Windows-Handle zugreifen kann.
Gibt es einen direkten Zusammenhang zwischen einer Pure-WindowsID() und dem Windows-hWnd bzw. dem Windows-DC und wie könnte man das hWnd dann in PB-Befehlen einsetzen (z.B. bei StartDrawing(hWnd))?
In der OnlineHilfe zu StartDrawing() steht zwar drin, dass StartDrawing() als Ergebnis das DC liefert - aber das hab ich ja schon, bzw kann ich mir per API ja aus dem übergebenen hWnd erstellen.
Was müsste ich denn machen, damit ich mit Hilfe eines hWnd's anschließend durch reine PureBefehle (also z.B. durch Circle() oder Box() und eben nicht durch API-Calls wie z.B. DrawText_()) Ausgaben auf diesem Fenster machen kann oder dort evtl. sogar Gadgets erzeugen könnte?
Hätte da evtl. jemand eine Idee oder sogar schon Erfahrung mit?
Oder ist dies in Pure garnicht möglich?
Big ThanX und Gruß, PL.
PureBasic und hWnd's ???
- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
PureBasic und hWnd's ???
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
Vielleicht so:
Ich hab jetzt allerdings auch nur geraten, und bin mir keinesfalls sicher, ob es wirklich funzt... 
Code: Alles auswählen
StartDrawing(hwndDeinesFensters)
blabla()
StopDrawing()

-
- Beiträge: 100
- Registriert: 06.11.2004 11:23
- Computerausstattung: PB 5.30 (x64) Win7
- Wohnort: Österreich
@purelust ... habe das auch schon mal gebraucht ..und bin aber nicht fündig geworden ...
wobei "#window" nicht bekannt ist ... da das Window-handle von extern(dll) erzeugt wurde.
damals hab ich dann halt mit api weitergemacht ....
@hardfalcon ... funzt so nicht siehe Code oben ...
"The specified output is invalid"
Andi256
Code: Alles auswählen
#window = 0
#window1 = 1
hwnd = OpenWindow(#window,300,300,100,100,#PB_Window_SystemMenu,"hwnd")
If OpenWindow(#window1,200,200,100,100,#PB_Window_SystemMenu,"test") And CreateGadgetList(WindowID(0))
If StartDrawing(hwnd)
Box (10,10,10,10,5)
StopDrawing()
EndIf
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
damals hab ich dann halt mit api weitergemacht ....
@hardfalcon ... funzt so nicht siehe Code oben ...
"The specified output is invalid"
Andi256
Vielleicht solltet ihr mal einen Blick in den "Library SDK"-Ordner riskieren 

Code: Alles auswählen
Structure DrawingInfoStruct
Type.l ; Type of the DC
Window.l ; Window associated to the DC (if any)
DC.l ; DC
ReleaseProcedure.l ; Address to a procedure to release the DC when StopDrawing() is called
PixelBuffer.l ; Address of the memory pixel buffer (DirectX)
Pitch.l ; Pitch
Width.l
Height.l
Depth.l
EndStructure
#window = 0
Global Wnd_DIS.DrawingInfoStruct
Procedure ReleaseDC()
ReleaseDC_(Wnd_DIS\Window,Wnd_DIS\DC)
EndProcedure
hwnd = OpenWindow(#window,300,300,100,100,#PB_Window_SystemMenu,"hwnd")
If hwnd
Wnd_DIS\type = 1
Wnd_DIS\window = hwnd
Wnd_DIS\dc = GetDC_(hwnd)
Wnd_DIS\ReleaseProcedure = @ReleaseDC()
Wnd_DIS\width = WindowWidth()
Wnd_DIS\height = WindowHeight()
If StartDrawing(Wnd_DIS)
Box (10,10,10,10,5)
StopDrawing()
EndIf
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf

[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]