Herd Software Entwicklung
DaVinci Grafikbibliothek
DaVinci Dokumentation

Leonardo: Funktion TWAINIsTwainMessageBei 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.
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
if (!TWAINIsTwainMessage(TwainAccessHandle, &msg, hwMain))
{ TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
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);
}
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;
Die Anwendung kann bei Verwendung der Funktion TWAINGetImage auf die Veränderung der Windows-Nachrichtenbehandlung verzichten.