Retrieves a string buffer for any WIA property of type VT_BSTR.
#include "ltwrappr.h"
virtual L_INT LWia::GetPropertyString(pItem, pszID, uID, pszValue, puLength)
Valid pointer to a type IWiaItem or IWiaItem2 object (IWiaItem if using WIA Version 1.0; IWiaItem2 if using WIA Version 2.0), which represents the item having the property.
You can retrieve this parameter by either calling the LWia::GetRootItem function to get a pointer to the device's root item or by enumerating the child items of the device through a call to LWia::EnumChildItems.
String pointer containing the equivalent property ID string for the WIA property ID (see example below):
Property ID | Property ID Equivalent String |
---|---|
WIA_IPA_TYMED | WIA_IPA_TYMED_STR or "Media Type" |
WIA_IPA_DEPTH | WIA_IPA_DEPTH_STR or "Bits Per Pixel" |
If this parameter is NULL, then the WIA toolkit will use the ID passed through the uID parameter; otherwise, the pszID parameter is used regardless of whether a valid property ID has been passed through the uID parameter.
The property ID for the WIA property.
The uID parameter is required only if the pszID parameter is NULL; otherwise, you can pass 0 for this parameter.
Pointer to an allocated string buffer to be updated with the property ID of the provided item.
Pointer to a variable containing the user-allocated string buffer length. This parameter will always be updated with the exact required string buffer length.
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
This feature is available in LEADTOOLS version 16 or higher.
Any WIA property of type VT_BSTR (like WIA_DIP_DEV_NAME, WIA_IPA_FULL_ITEM_NAME, etc) returns a string buffer. To retrieve a string buffer, call [LWia:GetPropertyString after allocating a string buffer of type L_TCHAR and passing a pointer to the allocated string buffer.
To retrieve the required string buffer length, declare a variable of type L_SIZE_T and pass the address of that variable to this function, and also pass NULL for the pszValue parameter. Then use the returned buffer length to allocate the string buffer with the exact required buffer length.
L_INT LWIA__GetPropertyStringExample()
{
L_INT nRet;
L_TCHAR szArtist[MAX_PATH] = TEXT("");
L_SIZE_T uLength = MAX_PATH;
IWiaItem * pRootItem = NULL;
LWia MyClass;
nRet = MyClass.SelectDeviceDlg(WiaDeviceTypeDefault, 0);
if(nRet != WIA_SUCCESS)
return nRet;
nRet = MyClass.GetRootItem(NULL, (L_VOID**)&pRootItem);
if(nRet != WIA_SUCCESS)
return nRet;
// if you have a digital camera device that supports EXIF format, then you
// can populate the artist field in every EXIF image that it captures.
nRet = MyClass.GetPropertyString(pRootItem, NULL, WIA_DPC_ARTIST, szArtist, &uLength);
if(nRet != WIA_SUCCESS)
return nRet;
// You can also change the artist if you like to.
lstrcpy(szArtist, TEXT("I am the artist."));
nRet = MyClass.SetPropertyString(pRootItem, NULL, WIA_DPC_ARTIST, szArtist);
if(nRet != WIA_SUCCESS)
return nRet;
return SUCCESS;
}