Huw Davies : inetcomm: Implement IMimeMessage_GetTextBody.

Alexandre Julliard julliard at winehq.org
Wed Feb 13 10:40:07 CST 2008


Module: wine
Branch: master
Commit: 869b10b430e6bf27e6f0fd47579be8e4825c0806
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=869b10b430e6bf27e6f0fd47579be8e4825c0806

Author: Huw Davies <huw at codeweavers.com>
Date:   Tue Feb 12 13:36:16 2008 +0000

inetcomm: Implement IMimeMessage_GetTextBody.

---

 dlls/inetcomm/mimeole.c |   40 ++++++++++++++++++++++++++++++++++++++--
 include/mimeole.idl     |    5 +++++
 2 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c
index 5628728..b794f5d 100644
--- a/dlls/inetcomm/mimeole.c
+++ b/dlls/inetcomm/mimeole.c
@@ -2189,8 +2189,44 @@ static HRESULT WINAPI MimeMessage_GetTextBody(
     IStream **pStream,
     LPHBODY phBody)
 {
-    FIXME("(%p)->(%d, %d, %p, %p)\n", iface, dwTxtType, ietEncoding, pStream, phBody);
-    return E_NOTIMPL;
+    HRESULT hr;
+    HBODY hbody;
+    FINDBODY find_struct;
+    IMimeBody *mime_body;
+    static char text[] = "text";
+    static char plain[] = "plain";
+    static char html[] = "html";
+
+    TRACE("(%p)->(%d, %d, %p, %p)\n", iface, dwTxtType, ietEncoding, pStream, phBody);
+
+    find_struct.pszPriType = text;
+
+    switch(dwTxtType)
+    {
+    case TXT_PLAIN:
+        find_struct.pszSubType = plain;
+        break;
+    case TXT_HTML:
+        find_struct.pszSubType = html;
+        break;
+    default:
+        return MIME_E_INVALID_TEXT_TYPE;
+    }
+
+    hr = IMimeMessage_FindFirst(iface, &find_struct, &hbody);
+    if(hr != S_OK)
+    {
+        TRACE("not found hr %08x\n", hr);
+        *phBody = NULL;
+        return hr;
+    }
+
+    IMimeMessage_BindToObject(iface, hbody, &IID_IMimeBody, (void**)&mime_body);
+
+    IMimeBody_GetData(mime_body, ietEncoding, pStream);
+    *phBody = hbody;
+    IMimeBody_Release(mime_body);
+    return hr;
 }
 
 static HRESULT WINAPI MimeMessage_SetTextBody(
diff --git a/include/mimeole.idl b/include/mimeole.idl
index 171f0e9..9d4f45b 100644
--- a/include/mimeole.idl
+++ b/include/mimeole.idl
@@ -41,6 +41,8 @@ cpp_quote("#define MIME_E_NOT_FOUND              0x800cce05")
 cpp_quote("#define MIME_E_NO_DATA                0x800cce05")
 cpp_quote("#define MIME_E_BUFFER_TOO_SMALL       0x800cce06")
 
+cpp_quote("#define MIME_E_INVALID_TEXT_TYPE      0x800cce38")
+
 cpp_quote("typedef enum tagMIMEPROPID {")
 cpp_quote("    PID_HDR_NEWSGROUP  = 2,")
 cpp_quote("    PID_HDR_NEWSGROUPS = 3,")
@@ -894,6 +896,9 @@ cpp_quote("#endif")
             WCHAR wchQuote;
         } WEBPAGEOPTIONS, *LPWEBPAGEOPTIONS;
 
+        cpp_quote("#define TXT_PLAIN       1")
+        cpp_quote("#define TXT_HTML        2")
+
         HRESULT CreateWebPage(
             [in]        IStream *pRootStm,
             [in]        LPWEBPAGEOPTIONS pOptions,




More information about the wine-cvs mailing list