Article ID: 172038
Article Last Modified on 8/18/2005
119591 How to obtain Microsoft support files from online services
MAPIRTF Sample
--------------
This sample illustrates how use Extended MAPI to allow RTF-formatting in a
message created by Active Messaging.
NOTE: If you are working against Exchange 2000 Server, you need to rebuild
Mapirtf.dll using the C++ source Mapirtf.cpp provided in this article.
Specifically, we need to call RTFSync with RTF_SYNC_RTF_CHANGED | RTF_SYNC_BODY_CHANGED
for the ulFlags parameter.
hr = RTFSync(lpMsg, RTF_SYNC_BODY_CHANGED | RTF_SYNC_RTF_CHANGED, &fUpdated);
Files
-----
The self-extracting executable, Mapirtf.exe, contains the following
files:
- Readme.txt: Contains information about the sample
- Mapirtf.dll: The release version of the DLL
- Mapirtfd.dll: The debug version of the DLL
- Vbmaprtf.exe: Microsoft Visual Basic Active Messaging client
- Vbmaprtf.pdb: Debug symbols for Vbmaprtf.exe
- CSource Folder: Contains the source file and Microsoft Visual C++
version 5.0 workspace and project files for Mapirtf(d).dll
- VBSource Folder: Contains the Microsoft Visual Basic version 5.0
project, form, and module files for Vbmaprtf.exe
General
-------
The files Mapirtf.dll (release version) and Mapirtfd.dll (debug
version) contain the following functions:
- "Writertf" writes RTF-formatted text to a message created by
Active Messaging, when passed the profile name, entry ID of
the message, entry ID of the message store, and the RTF text.
- "Readrtf" reads RTF-formatted text from a message when passed
the profile name, entry ID of the message, entry ID of the
message store, and a string variable to which to store the text.
How to Use
----------
Before use, the DLL files should be placed in the Windows\System
directory (for Windows 95) or the Winnt\System32 directory (for
Windows NT.
In Visual Basic, declare the functions as follows:
' For the Debug version of the DLL, remark the following lines
Public Declare Function writertf _
Lib "mapirtf.dll" _
(ByVal ProfileName As String, _
ByVal MessageID As String, _
ByVal StoreID As String, _
ByVal cText As String) _
As Integer
Public Declare Function readrtf _
Lib "mapirtf.dll" _
(ByVal ProfileName As String, _
ByVal SrcMsgID As String, _
ByVal SrcStoreID As String, _
ByRef MsgRTF As String) _
As Integer
' For the Debug version of the DLL, un-remark the following lines
'Public Declare Function writertf _
Lib "mapirtfd.dll" _
(ByVal ProfileName As String, _
ByVal MessageID As String, _
ByVal StoreID As String, _
ByVal cText As String) _
As Integer
'Public Declare Function readrtf _
Lib "mapirtfd.dll" _
(ByVal ProfileName As String, _
ByVal SrcMsgID As String, _
ByVal SrcStoreID As String, _
ByRef MsgRTF As String) _
As Integer
Sample Code
-----------
The following sample code assumes that you have already declared the DLL
function as described above. For a more complete example, please see the
Visual Basic project accompanying this sample.
- WriteRTF Sample. (This code assumes you already have a variable
called cRTF defined which contains RTF-formatted text.)
Sub SendRTF()
Dim objSession, objMessage, objMessageFilter As Object
Dim MessageID As String
Dim bRet As Integer
Set objSession = CreateObject("MAPI.Session")
objSession.Logon
' Create a new message
Set objMessage = objSession.Outbox.Messages.Add
objMessage.Update
MessageID = objMessage.ID
bRet = WriteRTF(objSession.Name, objMessage.ID, _
objMessage.StoreID, cRTF)
If Not bRet = 0 Then
MsgBox "RTF Not Written Successfully", vbOKOnly, "VBSendRTF Warning"
End If
'Clear our current variable
Set objMessage = Nothing
' Get our message
Set objMessage = objSession.GetMessage(MessageID)
' Send the Message
objMessage.Send ShowDialog:=True
objSession.Logoff
End Sub
- ReadRTF Sample.
Sub ReadRTF()
Dim objSession, objMessage, objMessageFilter As Object
Dim MessageID, cRTF As String
Dim bRet As Integer
Set objSession = CreateObject("MAPI.Session")
objSession.Logon
' Read the first message in the Inbox
Set objMessage = objSession.Inbox.Messages(1)
objMessage.Update ' to get a permanent Entry ID
MessageID = objMessage.ID
' We must initialize the string variable we are passing
' to a string of the maximum length we want to read
cRTF = Space(500)
bRet = ReadRTF(objSession.Name, objMessage.ID, _
objMessage.StoreID, cRTF)
If Not bRet = 0 Then
MsgBox "RTF Not Written Successfully"
Else
MsgBox "RTF Text: " & Chr(13) & cRTF
End If
Set objMessage = Nothing
objSession.Logoff
Set objSession = Nothing
End Sub
Keywords: kbgraphxlinkcritical kbmsg kbfile kbsample kbfaq kbcode KB172038