Autor Beitrag
UWER
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

SUSE 8.1, XP Home
D7 Prof. , Kylix 3
BeitragVerfasst: Di 29.07.03 10:49 
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:
ausblenden 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

_________________
Gruß
UWER
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 30.07.03 18:14 
hmmm, ich hab hier mal ein anderes Beispiel wie man mit Msg umgehen könnte:

ausblenden 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

SUSE 8.1, XP Home
D7 Prof. , Kylix 3
BeitragVerfasst: Do 31.07.03 12:35 
DANKE!

Das war genau das was ich gesucht hatte.

_________________
Gruß
UWER