Interface COM IWiaUIExtension
Se você implementar a interface IWiaUIExtension , poderá implementar nenhum, alguns ou todos os métodos IWiaUIExtension .
Se um método específico retornar E_NOTIMPL, a alternativa fornecida pelo sistema e uma estiver disponível, ela será usada.
A interface IWiaUIExtension fornece os seguintes métodos:P
Método | Descrição |
---|---|
IWiaUIExtension::D eviceDialog | Fornece uma interface do usuário personalizada que substitui a interface do usuário do sistema padrão. |
IWiaUIExtension::GetDeviceBitmapLogo | Obtém um logotipo de bitmap personalizado para o dispositivo. |
IWiaUIExtension::GetDeviceIcon | Obtém um ícone de dispositivo personalizado. |
IWiaUIExtension::D eviceDialog aceita um ponteiro para uma estrutura DEVICEDIALOGDATA (declarada em wiadevd.h), que contém todos os dados necessários para implementar a caixa de diálogo do dispositivo.
A caixa de diálogo do dispositivo deve ser implementada como uma caixa de diálogo Win32 modal, sujeita às quatro seguintes restrições:
A matriz de itens retornados em pDeviceDialogData-->ppWiaItems deve ser alocada usando CoTaskMemAlloc e é liberada pelo aplicativo usando CoTaskMemFree (consulte a documentação SDK do Microsoft Windows para ambas as funções).
Você não deve destruir nem liberar o item raiz armazenado em pDeviceDialogData -->pIWiaItemRoot. Você também não deve fazer com que o item raiz se torne inválido. Por exemplo, você não deve chamar o comando WIA_CMD_SYNCHRONIZE dispositivo.
Retorne S_OK para indicar que o usuário solicitou uma transferência de dados e S_FALSE para indicar que o usuário cancelou a transferência.
Tome cuidado para garantir que a memória ou os vazamentos de recursos não sejam introduzidos neste componente, pois ele é executado em processo no aplicativo.
IWiaUIExtension::GetDeviceIcon permite que o aplicativo use um ícone especificado pelo driver. Para evitar vazamentos de recursos, esse ícone deve ser carregado com LoadImage, usando o sinalizador LR_SHARED (consulte a documentação do SDK do Windows).
IWiaUIExtension::GetDeviceBitmapLogo permite que o aplicativo apresente logotipos de dispositivo e fornecedor conforme apropriado. Atualmente, nenhum componente do sistema usa esse método. O bitmap deve ser um bitmap alocado por DIB usando CreateDIBSection ou carregado usando LoadImage com o sinalizador LR_CREATEDIBSECTION (consulte a documentação do SDK do Windows para obter mais informações). Isso permite que o aplicativo extraia qualquer informação de paleta e se adapte às profundidades de cor de exibição atuais ou em alteração.
Para implementar uma caixa de diálogo de verificação personalizada em um driver de scanner WIA, use o método IWiaUIExtension::D eviceDialog (com as quatro restrições listadas acima) para criar uma caixa de diálogo modal win32 e passar a estrutura DEVICEDIALOGDATA para o parâmetro dwInitParam da função DialogBoxParam como um LPARAM.
É importante lembrar que a própria caixa de diálogo do dispositivo não gerencia as transferências de dados. A caixa de diálogo apenas retorna um ponteiro para uma matriz de ponteiros de interface IWiaItem (com propriedades definidas) do driver para o aplicativo. Em seguida, cabe ao aplicativo negociar o mecanismo de transferência e o formato.