Autor | Thema: %HDC von CreateWindow erzeugten Fenstern ! | | Datum:24.11.01 21:02 
(mrk@mrk-soft.de) | |
Hi Roland,
eine Funktion, womit DIREKT der Display-Context (%HDC)
von Fenstern, die mit CreateWindow erzeugt wurden,
ermittelt werden kann, ohne den ständigen Umweg über
Start und End Paint.
kind& = CreateWindow(%hwnd," Test ",90,90,300,300)
'zur zeit
StartPaint kind&
HDCkind& = %HDC
EndPaint
'besser wäre
HDCKind = GetHDC(kind&)
|
| | Datum:25.11.01 02:11 
| |
Ähem, schon mal unter GetDC in win32.hlp nachgesehen?
Rüdiger
|
| | Datum:25.11.01 07:55 
(mrk@mrk-soft.de) | |
>Ähem, schon mal unter GetDC in win32.hlp nachgesehen?
>Rüdiger
Ups, ... hmmm, erhlich gesagt, noch nicht, aber auf die
idee hätte ich selbst kommen können. (grrr)
Def GetHDC(1) !"USER32","GetDC"
kind& = CreateWindow(%hwnd,"",10,10,10,10)
kindHDC& = GetHDC(kind&)
Muste das jedoch schnell mal Umsetzen,
und hier direkt die Lösung.
|
| | Datum:25.11.01 11:54 
(rgh-soft@t-online.de) | |
.. und wenn man die bei PROFAN 7 mitgelieferte Headerdatei "windows.ph" verwendet, geht es noch einen Tick einfacher:
$H windows.ph
kind& = CreateWindow(%hwnd,"",10,10,10,10)
kindHDC& = ~GetDC(kind&)
Da braucht es dann keine DEFs mehr. Das Programm wird dadurch sogar ein wenig kleiner und eine Idee schneller, da das Einbinden eines Headers keinen Programmcode erzeugt, sondern quasi als "Nachschlagewerk" für den Compiler dient. Außerdem kennt PROFAN durch diese Datei (fast) alle Windows-API-Aufrufe. Benötigt man auch noch die Messages mit Namen, bindet man noch "messages.ph" ein, auch mit im Lieferumfang von PROFAN 7.
Gruß Roland
|
| | Datum:25.11.01 20:06 
(frankabbing@12move.de) | |
Hallo,
sicher, das da auch alles funktioniert?
Hab' mir mal z.B. die Struktur DEVMODE angesehen. Unter dmDeviceName hast du eine Long-Variable eingetragen, aber in Wirklichkeit steht dort ein 32 Byte langer String! Und kein Pointer auf einen String.
Ansonster könnte die Fehlersuche ziemlich streßig werden. oder?
Solche vermeintlich falschen Stellen habe ich mehrere gesehen und nutze die .ph Dateien darum nicht.
Bitte korregiere mich, wenn ich mich irre.....
Gruß, Frank
|
| | Datum:26.11.01 10:33 
(rgh-soft@t-online.de) | |
Hallo Frank,
natürlich kann ich nicht ausschließen, daß sich der eine oder andere Fehler eingeschlichen hat. Es kann daher nicht schaden, wenn man eine Struktur verwendet, diese zuvor kurz mit der API-Doku zu vergleichen und im Fehlerfall mir diesen Fehler dann auch zu melden! Gerade die Strukturen-Header waren ziemlich viel händische Fleißarbeit und ohne Helfer hätte ich es kaum gerschafft. Die WINDOWS.PH und MESSAGES.PH sind deutlich unkritischer, da hier eine nahezu automatische Übersetzung aus den entsprechenden Delphi-Includes möglich war.
ALso bei Strukturen zunächst vergleichen und im Zweifel über Forum oder Mailingliste nachfragen.
Was aber API-AUfrufe betrifft, ist der Aufruf mittels Headerdatei um Einiges schneller als über eine DEF-Deklaration. (Ebensoschnell wie per Header ist auch der direkte Aufruf über @EXTERNAL.)
Gruß Roland
BTW: Ich selbst benutze nur noch Header. Im Hauptberuf entwickle ich hin und wieder DLLs. Die Tertprogramme dazu schreibe ich gerne in PROFAN. Zu jeder DLL schreibe ich mir eine Header-Datei und die Einbindung ist kein Problem mehr!
Wie wäre es mit einer Headerdatei für die PROSPEED.DLL?
|
| | Datum: 26.11.01 15:58 
(mrk@mrk-soft.de) | |
Hi Roland,
>Was aber API-AUfrufe betrifft, ist der Aufruf mittels
>Headerdatei um Einiges schneller als über eine DEF-
>Deklaration. (Ebensoschnell wie per Header ist auch der >
>direkte Aufruf über @EXTERNAL.)
Um wieviel Schneller eigentlich, haste da irgendoo mal
so ein Vergleichswert !!!!
|
|
|