我正在开发一个我想发送电子邮件的应用程序。当我单击按钮/菜单时,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。
请帮助我解决问题。
先谢谢。
答案 0 :(得分:0)
简单MAPI函数仅适用于ANSI字符串。还要记住,在与简单MAPI或扩展MAPI连接时依赖条件编译绝不是一个好主意。始终在代码中明确指定字符串flavor(ANSI vs wide string)。