| Herd Software Entwicklung
|=
DaVinci Grafikbibliothek
|==
DaVinci Dokumentation Home Search Order


Leonardo: Funktion TWAINIsTwainMessage

Bei geöffneter Datenquelle müssen die mit GetMessage aus der Windows Nachrichtenwarteschlange bezogenen Nachrichten "gefiltert" werden, ähnlich dem Vorgang bei der Windows-Funktion IsDialogMessage,

void FAR PASCAL TWAINIsTwainMessage(
HTWAINACCESS hta,
LPMSG msg,
HWND hWnd):

hta TWAIN-Verwaltungsinstanzhandle von TWAINInitialize erzeugt,

msg Zeiger auf die Windows-Nachricht (Siehe GetMessage, PeekMessage, TramslateMessage etc.)

hWnd Fensterhandle des Fensters, das eingelesene Bilder durch die Nachricht UWM_TWAINIMAGERECEIVED erhalten soll.

Windows API:

  MSG msg;

  while (GetMessage(&msg,NULL,0,0))
  {
     if (!TWAINIsTwainMessage(TwainAccessHandle, &msg, hwMain))
	{ TranslateMessage(&msg);
	  DispatchMessage(&msg);
	}
  } 

Borland OWL:

class TDavApp : public TApplication {
public:
    TDavApp(LPSTR AName, HINSTANCE hInstance,
		  HINSTANCE hPrevInstance, LPSTR lpCmd,
		  int nCmdShow)
		: TApplication(AName, hInstance,
			       hPrevInstance, lpCmd, nCmdShow) {};
    virtual void InitMainWindow();
    virtual bool ProcessAppMsg(MSG &msg);
};

/* We need to test if a Message to be processed is a Message to the twain
   interface, else it will not work at all... */
bool TDavApp::ProcessAppMsg(MSG &msg)
{
  TDavWindow *DavWindow = TYPESAFE_DOWNCAST(MainWindow, TDavWindow);

  if (DavWindow &&
      DavWindow->HWindow &&
      DavWindow->TwainAccessHandle &&
      TWAINIsTwainMessage(DavWindow->TwainAccessHandle, &msg, DavWindow->HWindow))
      return TRUE;

  return TApplication::ProcessAppMsg(msg);
}

Borland Delphi:

type
  TDavForm = class(TForm)
    procedure MyAppMessage(var Msg: TMsg; var Handled: Boolean);    procedure MnuOpenClick(Sender: Tobject);
...


  if (TwainAccessHandle<>0) then
     Application.OnMessage:=MyAppMessage;

...
procedure TDavForm.MyAppMessage(var Msg: TMsg; var Handled: Boolean);
begin
   if (TwainAccessHandle<>0) then
      Handled:=TWAINIsTwainMessage(TwainAccessHandle,Msg,Handle);
end;

Anmerkungen

Die Anwendung kann bei Verwendung der Funktion TWAINGetImage auf die Veränderung der Windows-Nachrichtenbehandlung verzichten.