Note: The purpose of this WIA tutorial is to provide you a quick and easy way to enumerate WIA devices. For more in-depth WIA programming, refer to the WIA demo.
To enumerate the WIA devices installed on your machine:
1. |
Create a new directory in the \Examples\CDLL directory called WiaTutorial. |
2. |
Copy everything in the SimpleLoad directory into the WiaTutorial directory. |
3. |
Compile the project as it is and run SimpleLoad.exe to familiarize yourself with the basic program. |
4. |
In the Imports.cpp, add the following lines: |
#if defined(WIN64)#pragma comment(lib, "..\\..\\..\\Lib"L_VER_DESIGNATOR"\\CDLL\\x64\\Ltwia_x.lib")#else#pragma comment(lib, "..\\..\\..\\Lib"L_VER_DESIGNATOR"\\CDLL\\Win32\\Ltwia_u.lib")#endif // #if defined(WIN64)
5. |
Add the following line in StdAfx.h in the WiaTutorial directory: |
#include "..\..\..\include\ltwia.h" 6. |
Define the following global variable in Ezfunc.h in the WiaTutorial directory: |
HWIASESSION hSession = NULL;Also, add the following defines:#define IDM_ENUMERATE_WIA_DEVICES 200
7. |
Edit EZFUNC.RC file in the WiaTutorial directory and add the following lines: |
#include "EZFUNC.H"MAIN_MENU MENUBEGINMENUITEM "Enumerate WIA Devices" IDM_ENUMERATE_WIA_DEVICESEND
8. |
In the InitApplication function change the line: |
wcWindowClass.lpszMenuName = NULL; /* No menu */to bewcWindowClass.lpszMenuName = TEXT("MAIN_MENU");
9. |
In the MainWndProc function and before the handling of the WM_PALETTECHANGED message add the following code: |
case WM_COMMAND:{switch (LOWORD(wParam)){case IDM_ENUMERATE_WIA_DEVICES:{}break;}}break;
10. |
In the WM_CREATE message handler add the following code at the end of it (after SendMessage (hWnd, WM_QUERYNEWPALETTE, 0, 0L);): |
nRet = L_WiaInitSession(WiaVersion1, &hSession);if (nRet != WIA_SUCCESS)return FALSE;
11. |
In the WM_DESTROY message handler add the following code at the end of it (before the PostQuitMessage (0);): |
L_WiaEndSession(hSession); 12. |
In the IDM_ENUMERATE_WIA_DEVICES menu handler add the following code: |
case IDM_ENUMERATE_WIA_DEVICES:{nRet = L_WiaEnumDevices(hSession, WiaEnumDevicesCB, NULL);if (nRet != WIA_SUCCESS)return FALSE;}break;
13. |
In Ezfunc.cpp file, add the following function before MainWndProc function: |
L_INT CALLBACK WiaEnumDevicesCB(HWIASESSION hSession, pLWIADEVICEID pDeviceID, L_VOID * pUserData){UNREFERENCED_PARAMETER(hSession);UNREFERENCED_PARAMETER(pUserData);L_TCHAR szDeviceInfo[MAX_PATH] = TEXT("");wsprintf(szDeviceInfo,TEXT("Device ID: %s\nDevice Name: %s\nDevice Desc.:%s"),pDeviceID->pszDeviceId,pDeviceID->pszDeviceName,pDeviceID->pszDeviceDesc);MessageBox(NULL,szDeviceInfo,TEXT("Available WIA Devices"),MB_OK | MB_ICONINFORMATION);return WIA_SUCCESS;}
14. |
Compile and test the program. |