IWiaUIExtension COM-Schnittstelle
Wenn Sie die IWiaUIExtension-Schnittstelle implementieren, können Sie keine, einige oder alle IWiaUIExtension-Methoden implementieren.
Wenn eine bestimmte Methode E_NOTIMPL zurückgibt, die vom System bereitgestellte Alternative und eine methode verfügbar ist, wird sie stattdessen verwendet.
Die IWiaUIExtension-Schnittstelle bietet die folgenden Methoden:P
Methode | BESCHREIBUNG |
---|---|
IWiaUIExtension::D eviceDialog | Stellt eine benutzerdefinierte Benutzeroberfläche bereit, die die Standardbenutzerschnittstelle des Systems ersetzt. |
IWiaUIExtension::GetDeviceBitmapLogo | Ruft ein benutzerdefiniertes Bitmaplogo für das Gerät ab. |
IWiaUIExtension::GetDeviceIcon | Ruft ein benutzerdefiniertes Gerätesymbol ab. |
IWiaUIExtension::D eviceDialog akzeptiert einen Zeiger auf eine DEVICEDIALOGDATA-Struktur (deklariert in wiadevd.h), die alle zum Implementieren des Gerätedialogfelds erforderlichen Daten enthält.
Das Gerätedialogfeld muss mit den folgenden vier Einschränkungen als modales Win32-Dialogfeld implementiert werden:
Das Array von Elementen, die in pDeviceDialogData-->ppWiaItems zurückgegeben werden, muss mithilfe von CoTaskMemAlloc zugeordnet werden und wird von der Anwendung mithilfe von CoTaskMemFree freigegeben (siehe Microsoft Windows SDK Dokumentation zu beiden Funktionen).
Sie dürfen das in pDeviceDialogData -->pIWiaItemRoot gespeicherte Stammelement nicht zerstören oder freigeben. Sie dürfen auch nicht dazu führen, dass das Stammelement ungültig wird. Für instance dürfen Sie den Befehl WIA_CMD_SYNCHRONIZE device nicht aufrufen.
Geben Sie S_OK zurück, um anzugeben, dass der Benutzer eine Datenübertragung angefordert hat, und S_FALSE, um anzugeben, dass der Benutzer die Übertragung abgebrochen hat.
Achten Sie darauf, dass in dieser Komponente keine Arbeitsspeicher- oder Ressourcenverluste auftreten, da sie in der Anwendung prozessintern ausgeführt wird.
IWiaUIExtension::GetDeviceIcon ermöglicht der Anwendung, ein vom Treiber angegebenes Symbol zu verwenden. Um Ressourcenverluste zu vermeiden, sollte dieses Symbol mit LoadImage geladen werden, wobei das flag LR_SHARED verwendet wird (siehe Dokumentation zum Windows SDK).
IWiaUIExtension::GetDeviceBitmapLogo ermöglicht es der Anwendung, Geräte- und Herstellerlogos entsprechend darzustellen. Derzeit verwenden keine Systemkomponenten diese Methode. Die Bitmap sollte eine DIB-zugewiesene Bitmap mit CreateDIBSection sein oder mithilfe von LoadImage mit dem flag LR_CREATEDIBSECTION geladen werden (weitere Informationen finden Sie in der Dokumentation zum Windows SDK). Dadurch kann die Anwendung beliebige Paletteninformationen extrahieren und sich an die aktuellen oder sich ändernden Anzeigefarbtiefen anpassen.
Um ein benutzerdefiniertes Scandialogfeld in einem WIA-Scannertreiber zu implementieren, verwenden Sie die IWiaUIExtension::D eviceDialog-Methode (mit den vier oben aufgeführten Einschränkungen), um ein modales Win32-Dialogfeld zu erstellen und die DEVICEDIALOGDATA-Struktur an den dwInitParam-Parameter der DialogBoxParam-Funktion als LPARAM zu übergeben.
Beachten Sie, dass das Gerätedialogfeld selbst die Datenübertragungen nicht verwaltet. Das Dialogfeld gibt lediglich einen Zeiger auf ein Array von IWiaItem-Schnittstellenzeigern (mit festgelegten Eigenschaften) vom Treiber auf die Anwendung zurück. Anschließend liegt es an der Anwendung, den Übertragungsmechanismus und das Format auszuhandeln.