Microsoft Outlook通讯簿的标题显示不正确

时间:2014-07-22 05:14:46

标签: visual-c++ outlook window mapi

我正在开发一个我想发送电子邮件的应用程序。当我单击按钮/菜单时,Outlook Sendmail窗口正确显示。

当我打开地址簿时,对话框显示正确,但对话框的标题只显示“S”。

实际上,标题必须显示为“选定名称:......”。

代码:

HWND hWnd = this->GetSafeHwnd();
MAPIINIT_0 tMapInit = { 0, MAPI_MULTITHREAD_NOTIFICATIONS };
HRESULT hResult = MAPIInitialize( &tMapInit );
HMODULE hMapiMod = LoadLibrary(_T("mapi32.dll"));

ProcMapiLogon = (LPMAPILOGON)GetProcAddress( hMapiMod, "MAPILogon" );

(ProcMapiLogon)( (ULONG)hWnd, NULL, NULL, MAPI_LOGON_UI | MAPI_NEW_SESSION, 0, &hCurrentSession );


LPMAPISENDMAIL ProcMapiSendMail = NULL;
ProcMapiSendMail = (LPMAPISENDMAIL)GetProcAddress(hMapiMod, "MAPISendMail");
(ProcMapiSendMail)(hCurrentSession, (ULONG)hWnd, &myMsg, MAPI_DIALOG | MAPI_LOGON_UI, 0);

注意:此应用程序是在命令提示符下构建的,设置了unicode标志_UNICODE,编译器是Visual Studio 2008。

请帮助我解决问题。

先谢谢。

1 个答案:

答案 0 :(得分:0)

简单MAPI函数仅适用于ANSI字符串。还要记住,在与简单MAPI或扩展MAPI连接时依赖条件编译绝不是一个好主意。始终在代码中明确指定字符串flavor(ANSI vs wide string)。