How to add icon(or picture) field for each contact in contacts view

  • Thread starter squallcpp via OfficeKB.com
  • Start date
S

squallcpp via OfficeKB.com

Hello

Here what's I want to do. (outlook 2007)
First,Outlook->Contacts Folder->Current view =Address Cards ,then I want to
add a icon or picture into each contact item in Contacts Cards View.Normally,
we can add a User-defined fields via customize current view,while the field
type can not be a picture.

So,I trying to get the contact item handle in the Card View to find some
threads. The window class type of the Card View is "rctrl_renwnd32",while I
cann't get the its child control in it. Is there any way to get all the items
in the address(business) cards view?


thanks
squall
 
K

Ken Slovak - [MVP - Outlook]

I'm not clear on what you want. Do you want to add a picture to the picture
field of each contact item, or do you want to add a custom field that has a
picture in it. For the first you'd use the ContactItem.AddPicture() method
and supply the image file path in that method. The second is not possible.

It's not possible to find what items are visible in a specific view. You'd
need to get the Items collection for the folder and deal with every item in
the folder.

That Windows class name applies to any Outlook window (except for WordMail
windows). It won't help you at all.
 
S

squallcpp via OfficeKB.com

Thanks for your replying.

The second is what I am want to do.
Here are the detail ideas.
1,Add a status icon just next the mail sender or (receiver).when you open a
mail item,user can see the contact presence
2, Add a custom field that has a picture in it for each contact item in a
specific view.

For the point one,I can insert a picture object via the interface
InsertObject of IRichEditOle.
while the point two,I cann't get and manipulate contact item in card view
mode.
besides,I listen the OnSelectionChange of interface ExplorerEvents, the
Outlook::Selection objects are Outlook::_ContactItem,while I want get the
HWND or something can manipulate its drawing.

Thanks for any suggestions.

squall

I'm not clear on what you want. Do you want to add a picture to the picture
field of each contact item, or do you want to add a custom field that has a
picture in it. For the first you'd use the ContactItem.AddPicture() method
and supply the image file path in that method. The second is not possible.

It's not possible to find what items are visible in a specific view. You'd
need to get the Items collection for the folder and deal with every item in
the folder.

That Windows class name applies to any Outlook window (except for WordMail
windows). It won't help you at all.
[quoted text clipped - 16 lines]
thanks
squall
 
K

Ken Slovak - [MVP - Outlook]

The main Outlook window will have a caption such as "Inbox - Microsoft
Outlook" and a class name of "rctrl_renwnd32". You can use FindWindow() to
get the hWnd for that window, and FindWindowEx() to locate the child windows
under that. Spy++ will be your friend there. Explorer.Caption will get you
the window caption.

Any icons you add to the folder view or individual items will need to
overlay your icons to the child windows but in most cases you can't get
below the supergrid or other control that's displaying everything to drill
down to the individual items and their locations on the screen. That's
something you're going to have to work out on your own.

The view cannot be queried as to what items it's showing. The Items
collection of the folder includes everything, whether or not it's shown in
the view. Selection only gives you a collection of what's selected, not
everything being viewed. You'd have to grab the view filter and use that to
restrict the Items collection of the folder to approximate what's shown in
the view.

Unfortunately the View.Filter property was added to the object model in
Outlook 2007 and isn't there in Outlook 2003 or earlier. The filter (if
there is one) for the view will be in DASL format using SQL syntax.

For Outlook 2003 or earlier you'd need to get the hidden item in the folder
that has a MessageClass of "IPM.Microsoft.FolderDesign.NamedView" and
iterate each such hidden item to find the one for the current view. Then
you'd need to find and decode the undocumented filter properties. Of course
depending on how the view is set up it could also be located in either the
hidden Views or Common Views folders too.
 
S

squallcpp via OfficeKB.com

..
Hi,Ken
Thanks a lot for your suggestions.
this requirement is a little bit crazy,I am trying to find out which contacts
are showing in the current view window. the last solution I can used is to
hook the ExtTextOut API of gdi32.dll
For this feature,I remembered that the Plaxo for Outlook has implemented it,
I cann't find the picture now.Its add-in just add the image just nest the
contact display name .you can find the picture here:
http://blog.plaxo.com/archives/2006/11/coming_soon_pla.html


Thanks.
Tiger


The main Outlook window will have a caption such as "Inbox - Microsoft
Outlook" and a class name of "rctrl_renwnd32". You can use FindWindow() to
get the hWnd for that window, and FindWindowEx() to locate the child windows
under that. Spy++ will be your friend there. Explorer.Caption will get you
the window caption.

Any icons you add to the folder view or individual items will need to
overlay your icons to the child windows but in most cases you can't get
below the supergrid or other control that's displaying everything to drill
down to the individual items and their locations on the screen. That's
something you're going to have to work out on your own.

The view cannot be queried as to what items it's showing. The Items
collection of the folder includes everything, whether or not it's shown in
the view. Selection only gives you a collection of what's selected, not
everything being viewed. You'd have to grab the view filter and use that to
restrict the Items collection of the folder to approximate what's shown in
the view.

Unfortunately the View.Filter property was added to the object model in
Outlook 2007 and isn't there in Outlook 2003 or earlier. The filter (if
there is one) for the view will be in DASL format using SQL syntax.

For Outlook 2003 or earlier you'd need to get the hidden item in the folder
that has a MessageClass of "IPM.Microsoft.FolderDesign.NamedView" and
iterate each such hidden item to find the one for the current view. Then
you'd need to find and decode the undocumented filter properties. Of course
depending on how the view is set up it could also be located in either the
hidden Views or Common Views folders too.
Thanks for your replying.
[quoted text clipped - 17 lines]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top