AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Zusammenhang TWMDeviceChange und TMessage
Thema durchsuchen
Ansicht
Themen-Optionen

Zusammenhang TWMDeviceChange und TMessage

Ein Thema von sieppl · begonnen am 22. Aug 2004 · letzter Beitrag vom 23. Aug 2004
Antwort Antwort
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Zusammenhang TWMDeviceChange und TMessage

  Alt 22. Aug 2004, 21:47
Hallo,

Delphi-Quellcode:
function WndProc(wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall;
begin
  Result := 0;
  case uMsg of
    WM_CREATE:
    begin
      NID.Wnd := wnd;
      Shell_NotifyIcon(NIM_ADD,@NID);
    end;
    WM_DEVICECHANGE:
      CheckWMDeviceChange(?????);
...

procedure CheckWMDeviceChange(var Msg: TWMDeviceChange);
Wie man sieht soll die bei WM_DEVICECHANGE die entsprechene Prozedur aufgerufen werden, diese befindet sich in einer anderen unit, wo sie bleiben muss. Wie übersetze ich die Einzelteile der TMessage in eine TWMDeviceChange ?? Wenn ich die Felder 1:1 kopieren bekomme ich logischerweise eine Integer/Pointer Beschwerde..
Danke!

zur Erinnerung:

Delphi-Quellcode:
type
  TWMDeviceChange = record
   Msg: Cardinal;
   Event: UINT;
   dwData: Pointer;
   Result: LongInt;
  end;

type

{ Generic window message record }

  PMessage = ^TMessage;
  TMessage = packed record
    Msg: Cardinal;
    case Integer of
      0: (
        WParam: Longint;
        LParam: Longint;
        Result: Longint);
      1: (
        WParamLo: Word;
        WParamHi: Word;
        LParamLo: Word;
        LParamHi: Word;
        ResultLo: Word;
        ResultHi: Word);
  end;
Sebastian
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Zusammenhang TWMDeviceChange und TMessage

  Alt 23. Aug 2004, 06:24
Warum gehst du bis zur WndProc?
Besorg dir meine HID Komponente von http://www.soft-gems.net/Controls.php
Dort ist auch DBT.pas dabei. Das ist die Konversion zu WM_DEVICECHANGE.

Bei der Zuweisung hier musst du einfach nur umtypen Pointer(lParam).
Die Parameter werden zu den unterschiedlichsten Zwecken eingesetzt und Delphi definiert einfach
verschiedene angepasste Records, die aber immer die gleiche Groessehaben.
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#3

Re: Zusammenhang TWMDeviceChange und TMessage

  Alt 23. Aug 2004, 08:36
Sorry, aber das hilft mir garnicht weiter. Die DBT.pas benutze ich sowieso schon. Jetzt habe ich auch folgendes probiert:

Delphi-Quellcode:
PassMessage: TWMDeviceChange;
...
PassMessage.Msg := uMsg;
PassMessage.Event := wp;
PassMessage.dwData := @lp;
PassMessage.Result := 0;
CheckWMDeviceChange(PassMessage);
Beim Zuweisen ist der Compiler glücklich, aber beim Prozeduraufruf stimmem, die formalen und tatsächlichen nicht überein. Obwohl die Records eigentlich identisch sind.
Wo wird denn das umtypen von Delphi gemacht, wenn ich eine Prozedur habe:

Delphi-Quellcode:
procedure WMDEVICECHANGE(var Msg: TWMDeviceChange);message WM_DEVICECHANGE;
//anstatt
procedure WMDEVICECHANGE(var Msg: TMessage);message WM_DEVICECHANGE;
und wo ist WndProc überladen? Ich finde im Netz Beipspiele mit folgenden 2 Varianten:
Delphi-Quellcode:
function WndProc(wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall;
//oder
function WndProc(var Msg: TMessage): LRESULT; stdcall;
funktioniet beides. Aber warum? Ich wäre echt glücklich, wenn ich hier mal den Bogen spannen kann.
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz