2008年02月24日

ChooseContact()が動かない

ChooseContact()という,連絡先ダイアログを表示してメールアドレス等を選択するためのAPIがあるんですが,コイツがうまく動いてくれません.

下記のような感じでMSDNのサンプルを動かしてみたんですが,エラーになってしまいます.LastError値は87(ERROR_INVALID_PARAMETER).

#include <pimstore.h>
// ...
HRESULT hr = E_FAIL;
CHOOSECONTACT cc = {0};
cc.cbSize = sizeof (cc);
cc.dwFlags = CCF_RETURNCONTACTNAME | CCF_HIDENEW;
// 連絡先の選択ダイアログを表示する
hr = ChooseContact(&cc);
// 選択した名前を表示する
MessageBox(NULL, cc.bstrContactName, TEXT("Selected Contact"), MB_OK);
// メモリを解放する
SysFreeString(cc.bstrContactName);


メジャーなAPIなんでケアレスミスだと思うんですが何でだろう...

eVC4な環境なのでそのままではChooseContact()は使えないので,pimstore.dllをLoadLibrary(), GetProcAddress()しました.

それがまずいのかと思ってWM5SDKのpimstore.libを引っこ抜いてリンクしてもNGでした.
posted by ori at 20:08| Comment(2) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんばんは。

WM6 SDKのサンプルではCCF_CHOOSECONTACTONLYを指定しているみたいですね。

Ad[es]で確認したところ、

cc.dwFlags = CCF_RETURNCONTACTNAME | CCF_HIDENEW | CCF_CHOOSECONTACTONLY;

とすることで動いてくれました。
WM5ではいかがでしょうか?
Posted by kazuaki at 2008年02月27日 22:34
kazuakiさんへ

動きました!!!!
指摘いただいた点の他にも,テストアプリにHI_RES_AWAREのカスタムリソースが無かったのが原因でした.

ここ数ヶ月悩んでいた問題が無事解決できました.感謝感謝です.
Posted by ori at 2008年02月27日 22:57

この記事へのトラックバック