Entwickler-Ecke

Windows API - Probleme mit Messages


UWER - Di 29.07.03 10:49
Titel: Probleme mit Messages
Hallo Leute,

meine Applikation kriegt von einer DLL mittels PostMessage eine Message das sie sich neue Daten holen soll. Die Message wird mit dem Ereignis OnMessage abgefangen und es funktioniert im Normalfall wunderbar. Ab und zu jedoch geht mir eine Message verschütt. Mein Verdacht ist der folgende:

Ich benutze in meinem Prog Async Professional (Vers. 2.7) um Modems anzusprechen. Die Messages scheinen dann verschütt zu gehen wenn Async Professional ins Spiel kommt. Ich hab mal in den Source-Code geschaut und festgestellt das die mir die Messages auslesen und versuchen abzuarbeiten. Hier mal ein CodeBeispiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
if PeekMessage(Msg, 000, PM_REMOVE) then begin
      if Msg.Message = wm_Quit then
        {Re-post quit message so main message loop will terminate}
        PostQuitMessage(Msg.WParam)
      else begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
      {Return message so caller can act on message if necessary}
      SafeYield := MAKELONG(Msg.Message, Msg.hwnd);
    end;


Wird in diesem Fall das Ereignis OnMessage überhaupt ausgelöst?

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt


MSCH - Mi 30.07.03 18:14

hmmm, ich hab hier mal ein anderes Beispiel wie man mit Msg umgehen könnte:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
const
  WM_MyMessageID = wm_user + 1// selfmade message

type
  TMyForm = Class()
  public
  procedure WMMyMessageID(var Msg:TMessage);Message wm_myMessageID;
end;

procedure TMyForm.WMMyMessageID;
begin
  // CODE here
end;


Das Gegenstück zum senden ist:

Delphi-Quelltext
1:
PostMessage(Fensterhandle, wm_MyMessageID,wParam,lParam);                    


Hat den Vorteil, dass das ganze geraffe mit Peek und Post und Dispatch weggelassen werden kann und windose kümmert sich ums zustellen der Message.

grez
msch

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt


UWER - Do 31.07.03 12:35

DANKE!

Das war genau das was ich gesucht hatte.