FindMatchingContact
4/8/2010
The FindMatchingContact function returns the Contact item with a property value that most closely matches a search string.
Syntax
HRESULT FindMatchingContact(
IPOutlookApp* pPOOM,
LPCWSTR pszFind,
DWORD dwflags,
IItem** ppContact,
CEPROPID* ppropid
)
Parameters
- pPOOM
[in] Reference to the Outlook Mobile Application Object. For more information, see IPOutlookApp.
- pszFind
[in] The search string.
dwFlags
[in] Bitmask of flags that indicates which Contact properties to search. The following table shows the values the parameter can take.Option Value Description FMCF_FINDPHONE
0x00000001
Search the phone properties.
FMCF_FINDEMAIL
0x00000002
Search the messaging properties, which includes the following communication methods:
•E-mail
•Short Message Service (SMS)
•Instant Messaging (IM)
FMCF_FINDFILEAS
0x00000004
Search the File As property.
- ppContact
[out] Reference to the most closely matching Contact item. For more information, see IItem.
- ppropid
[out] Reference to the Property ID of the property value that contained the match. For example, if you are searching on E-mail, ppropid might return PIMPR_EMAIL2_EMAIL_ADDRESS. For more information, see Contact Property IDs.
Return Value
This method returns the standard values HRESULT_FROM_WIN32(GetLastError()), E_INVALIDARG, and S_FAIL, as well as the following:
- S_OK
The method completed successfully.
Remarks
The returned Contact item is of the generic type IItem.
The FindMatchingContact method returns a single contact only, even if there are multiple matches; and only a single property ID, even if there are multiple properties that match.
In the case of multiple matches that are not exact matches, Outlook Mobile chooses the Contact item with the property value that matches the search string the closest. For example, a search string of "johnd@dogfood.exchange.woodgrovebank.com" would match a Contact with an e-mail address of "John Doe <johnd@woodgrovebank.com>". If another Contact had an e-mail of "Jonathon Doe <johnd@exchange.woodgrovebank.com>", that Contact would be considered a closer match because more of the e-mail address is contained in the search string. However, a Contact with the e-mail address "johnd@dogfood.exchange.woodgrovebank.ca.com" would not match because the domain path does not match.
Code Example
The following code example demonstrates how to use FindMatchingContact to find the Contact item with the closest matching e-mail address (passing-in a dwFlags value of FMCF_FINDEMAIL), and to find the Contact item with the closest matching phone number (passing-in a dwFlags value of FMCF_FINDPHONE).
In FindMatchingContactExample2, FindMatchingContact returns results to pItem and propidFound. pItem is an IItem handle to the contact. propidFound returns the specific Property ID which matches the pszSenderAddress passed in. You can use IUnknown::QueryInterface on pItem because you only want one property. If you wanted more, you could use IItem::GetProps.
Note
To make the following code example easier to read, security checking and error handling are not included. This code example should not be used in a release configuration unless it has been modified to include them.
void FindMatchingContactExample1(IPOutlookApp2* pPoom)
{
BSTR bstrSenderName;
HRESULT hr = E_FAIL;
hr = FindMatchingContactExample2(pPoom, _T("someone@example.com"), FMCF_FINDEMAIL, &bstrSenderName);
SysFreeString(bstrSenderName);
hr = FindMatchingContactExample2(pPoom, _T("4254440100"), FMCF_FINDPHONE, &bstrSenderName);
SysFreeString(bstrSenderName);
return;
}
HRESULT FindMatchingContactExample2(IPOutlookApp2* pPoom, LPTSTR pszSenderAddress, DWORD dwFlag, BSTR* pbstrSenderName)
{
HRESULT hr = E_FAIL;
IItem *pItem = NULL;
IContact *pContact = NULL;
CEPROPID propidFound = 0;
hr = FindMatchingContact(pPoom, pszSenderAddress, dwFlag, &pItem, &propidFound);
hr = pItem->QueryInterface(IID_IContact, (LPVOID*)&pContact);
hr = pContact->get_FirstName(pbstrSenderName);
// Perform any additional processing here.
pContact->Release();
pItem->Release();
return hr;
}
Requirements
Header | pimstore.h |
Library | Pimstore.lib |
Windows Embedded CE | Windows CE 3.0 and later |
Windows Mobile | Pocket PC 2000 and later, Smartphone 2002 and later |
See Also
Reference
Pocket Outlook Object Model Functions
CHOOSECONTACT Structure
ChooseContact
GetItemIndexFromOid
ChooseContact Property ID's