Announcement

Collapse
No announcement yet.

Message mit eigenem Messagetyp versenden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Message mit eigenem Messagetyp versenden

    Hallo,<p>
    ich stehe gerade total auf dem Schlauch. Ich habe mir einen eigenen Record definiert und dem eine Message zugewiesen:<p>
    <pre> T_Cfg_Msg = record
    Handled: Boolean;
    message: Cardinal;
    Daten: Pointer;
    AutoRepaint,
    ConfigOK: Boolean;
    end;
    <p>
    PROCEDURE Config(var Message: T_Cfg_Msg); message wm_User + 1;
    </pre><p>
    Soweit alles klar. Aber per Sendmessage kann ich ja nur wParam und lParam übergeben. Geht es also gar nicht, so wie ich es gern möchte?<p>
    Schöne Grüße, Mario Noack
    Schöne Grüße, Mario

  • #2
    Du kannst ja mal folgendes probieren:<pre>
    var
    msg: T_Cfg_Msg;
    begin
    msg.Daten := EinZeiger;
    // ...
    with TMessage(msg) do
    SendMessage(0, WM_User + 1, WParam, LParam);
    end;
    </pre>
    BTW: "Message" sollte das erste Feld von T_Cfg_Msg sein, wenn ich mich recht erinnere.
    <p>Ciao, Uli

    Comment


    • #3
      Danke,<p>
      jetzt hat es geklappt. Ich muss nur eine binaerkompatible Message erzeugen:<p>
      <pre> T_Cfg_Msg = packed record
      Msg: Cardinal;
      Daten: Pointer;
      Options: LongInt;
      Result: LongInt;
      end;
      </pre><p>
      Dann spricht man mit <i>WParam</i> automatisch <i>Daten</i> und mit <i>Options</i> automatisch <i>LParam</i> an.<p>
      Schöne Grüße, Mario Noac
      Schöne Grüße, Mario

      Comment


      • #4
        Ich würde aus Options noch ein <tt>set of (opHandled, opAutoRepaint, opConfigOK)</tt> oder so machen -- der Schönheit wegen. :-)
        <br>(Ggfs. als variantes Record, damit die Zuordnung LParam = Options usw. erhalten bleibt, ungefähr so:
        <pre class="sourcecode"><code>
        <b>type</b>
        TCfgOptions = (coHandled, coAutoRepaint, coConfigOK);
        T_Cfg_Msg = <b>packed</b> <b>record</b>
        Msg: Cardinal;
        Daten: Pointer;
        <b>case</b> Byte <b>of</b>
        0: (
        IOptions: LongInt;
        Result: Longint);
        1: (
        Options: <b>set</b> <b>of</b> TCfgOptions);
        <b>end</b>;
        </code></pre>
        Aber vielleicht ist das jetzt etwas übertrieben. :-)
        <p>Ciao, Uli

        Comment

        Working...
        X