Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC? (https://www.delphipraxis.net/68058-wie-erhalte-ich-aus-einem-hdc-_remotablehandle-ein-hdc.html)

Mavarik 24. Apr 2006 08:42


Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Hallo!

:dp: Neue Frage neuer Thred...

Wie erhalte ich aus einem hdc: _RemotableHandle

ein "normales" HDC handle?

Frank :coder:

Mavarik 24. Apr 2006 15:39

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Habe folgende Antwort gefunden:

Zitat:

Change the declaration to

function Draw(rcBounds: tagRECT; rcUpdate: tagRECT; lDrawFlags:
Integer; hdc: hdc; pvDrawObject: Pointer):
HResult; stdcall;

Notice I removed "var" from the hdc and pvDrawObject parameters.

Also, _RemoteableHandle could be declared as THandle.

For more information check out my blog post where I specifically talk
about this problem.

http://blogs.borland.com/stevet/arch...1/01/1725.aspx

-Steve
Delphi R&D
Borland Software Corp.
http://blogs.borland.com/stevet
:wiejetzt: Habe ich irgentwo nicht aufgepasst??? Wie soll das den gehen?

Frank :coder:

Kedariodakon 24. Apr 2006 16:24

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Hmm ich kann zur Thematik nicht wirklich viel sagen, aber deine Informationen finde ich ein wenig zu dünn...

Vielleicht solltest du alles ein wenig näher erläutern, z.b. Wo hast du das '_RemotableHandle' her und was ist ein normales HDC für dich und was wills du genau damit machen...

Bye

marabu 24. Apr 2006 19:18

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Hallo Frank,

Borland liefert eine MSHTML.PAS mit Delphi aus. Ich habe die Schnittstellen IHTMLPainter etc. nie benutzt. Wenn ich in die Original-Unit von D5 schaue, dann stelle ich auch dort Fehler fest:

Delphi-Quellcode:
// *********************************************************************//
// Interface: IElementBehaviorRender
// Flags:    (0)
// GUID:     {3050F4AA-98B5-11CF-BB82-00AA00BDCE0B}
// *********************************************************************//
  IElementBehaviorRender = interface(IUnknown)
    ['{3050F4AA-98B5-11CF-BB82-00AA00BDCE0B}']
    function Draw(var hdc: TGUID; lLayer: Integer; var pRect: TGUID;
      const pReserved: IUnknown): HResult; stdcall;
    function GetRenderInfo(out plRenderInfo: Integer): HResult; stdcall;
    function HitTestPoint(var pPoint: TGUID; const pReserved: IUnknown;
      out pbHit: Integer): HResult; stdcall;
  end;
TLIBIMP ist genauso wenig fehlerfrei wie jede andere Software auch. Es ist wohl so, wie Steve in seinem BLOG schreibt - wir können die von TLIBIMP erzeugte Unit als Ausgangsbasis verwenden, aber sie muss manuell anhand des Platform SDK überarbeitet werden, wenn man keine unliebsamen Überraschungen erleben will. Mit .NET hat das alles wohl nichts zu tun, wenn die Fehler bereits in D5 enthalten sind.

Grüße vom marabu

Mavarik 25. Apr 2006 07:01

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Zitat:

Zitat von Kedariodakon
Hmm ich kann zur Thematik nicht wirklich viel sagen, aber deine Informationen finde ich ein wenig zu dünn...

Vielleicht solltest du alles ein wenig näher erläutern, z.b. Wo hast du das '_RemotableHandle' her und was ist ein normales HDC für dich und was wills du genau damit machen...

Bye

Neues Thema neuer Thread!

Siehe : meinen anderen Thread

Frank :coder:

PS: @marabu D5,D6 & D7 haben im source die IHTMLPainter überhaupt nicht dabei, weil die MSHTML in IE Version 4.0 vorliegt! (Denke ich)

marabu 25. Apr 2006 07:21

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Ich weiß - es ging mir nur um das fehlerbehaftete TLIBIMP...

marabu

Mavarik 25. Apr 2006 10:43

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Zitat:

Zitat von marabu
Ich weiß - es ging mir nur um das fehlerbehaftete TLIBIMP...

marabu

OK, hast Du eine Idee, warum man einfach die Definition ändern kann/soll???

Besonders eine THandle zu nehmen, dass ist doch nach meinem Wissen "nur" ein Integer?

Frank :coder:

Daniel G 25. Apr 2006 10:58

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Zitat:

Zitat von Mavarik
Besonders eine THandle zu nehmen, dass ist doch nach meinem Wissen "nur" ein Integer?

Die in Delphi gekapselten WinAPI - Funktionen, bei denen ein Handle übergeben wird, verwenden generell THandle.

Mavarik 25. Apr 2006 11:59

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Zitat:

Zitat von Daniel G
Die in Delphi gekapselten WinAPI - Funktionen, bei denen ein Handle übergeben wird, verwenden generell THandle.

Na eben...

marabu 25. Apr 2006 12:05

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Hallo Frank,

du fragst dich, warum du einfach _RemotableHandle gegen THandle (HDC) tauschen sollst bzw. kannst?

Weil der von TLIBIMP erzeugte Code an dieser Stelle falsch ist. Du musst dir den Platform SDK nehmen, dort die Beschreibung der Schnittstellen ansehen und den nach Delphi portierten Code in deine Unit eintragen. Es reicht für deine Zwecke wahrscheinlich, wenn du nur die benötigten Interfaces anpasst.

Oder habe ich dich falsch verstanden?

Grüße vom marabu

Mavarik 25. Apr 2006 13:01

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Ahh ok Groschen / Euro gefallen...

Dir Frage ist nur wie überlagere ich die Interface definition?

Wenn ich in meinem Programm schreibe

TMyForm =class(TForm,IHTMLPainter);

Frank :wiejetzt:

marabu 26. Apr 2006 06:48

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Da sind zwei Ansätze denkbar: Du könntest die Unit MSHTML selbst abändern - aber du könntest auch eine eigene Unit MSHTML2 erstellen, in der du die überschriebenen Schnittstellen sammelst. Ich denke da eher an den ersten Ansatz.

Grüße vom marabu

Mavarik 26. Apr 2006 07:03

Re: Wie erhalte ich aus einem hdc: _RemotableHandle ein HDC?
 
Zitat:

Zitat von marabu
Da sind zwei Ansätze denkbar: Du könntest die Unit MSHTML selbst abändern - aber du könntest auch eine eigene Unit MSHTML2 erstellen, in der du die überschriebenen Schnittstellen sammelst. Ich denke da eher an den ersten Ansatz.

Grüße vom marabu

OK :wall: war ne blöde Frage, gebe ich zu! Irgentwie hatte ich so das Bauchgefühl, als sei das readonly :roteyes:

Werde es mal testen - und berichten !

Frank :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz