README.TXT
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:

Windows编程

开发平台:

Visual C++

  1. Custom Command Extentions
  2. SUMMARY
  3. =======
  4. The Command.Ext sample demonstrates how to implement custom command extensions
  5. for the Microsoft Exchange Client. In particular, it demonstrates:
  6.   - adding a menu command
  7.   - adding a toolbar button
  8.   - disabling/enabling the menu item and toolbar item depending what object
  9.     is selected in the viewer
  10.   - making MAPI calls from an extension
  11.   - extending a command in the Main Viewer and the Search Viewer dialog
  12.   - F1 response for context help on the menu item
  13.   - Implementing custom Tooltip and Status Bar text
  14. The custom command displays the number of subfolders, read messages, and
  15. unread messages in a selected folder.
  16. MORE INFORMATION
  17. ================
  18. This sample requires Microsoft Windows NT 3.51 or Windows 95, the MAPI 1.0
  19. PDK, Microsoft Visual C++ version 2.0 (or later), and the Win32 SDK.
  20. To configure Microsoft Exchange to use the client extension, place the
  21. following REG_SZ entry in the system registry in
  22. HKEY_LOCAL_MACHINESoftwareMicrosoftExchangeClientExtensions:
  23.     Sample Command Extension=4.0;c:<path>CMDEXT32.dll;1;01010000000000
  24. You can leave out an explicit path to CMDEXT32.DLL if it resides in a
  25. directory listed in the system PATH.
  26. Exchange client extensions are designed using OLE's Component Object Model.
  27. The client calls methods which are provided in the extension. In some
  28. calls to the extension interface, a pointer to a callback interface
  29. (IExchExtCallback) for the extension to call back into the Exchange client.
  30. For more information read "Extending the Microsoft Exchange Client" in the
  31. MAPI PDK documentation.
  32. This sample implements three interface objects: IExchExt, IExchExtCommands,
  33. and IExchExtUserEvents. To extend the command set of Exchange, it is
  34. necessary to provide implementations for IExchExt and IExchExtCommands.
  35. It is optional to provide implementation for IExchExtUserEvents. This sample
  36. implements IExchExtUserEvents to enable or disable the custom command,
  37. depending on what object the user is selecting in the Exchange main viewer.
  38. The menu item is always enabled in the Search Folder Dialog.
  39. The custom command is available in both the Main viewer and the Search
  40. Folder Dialog. The IExchExtCommands provides an interface for the client to
  41. display context help on the custom menu item and to display tooltip text and
  42. status window text.  Select the custom menu item and press F1 to pop-up an
  43. About dialog box.
  44. This extension works in two different contexts, main viewer and search dialog.
  45. For each context an extension supports, a complete set of interface objects
  46. is created. In this sample, the MyExchExt, MyExchExtCommands and
  47. MyExchExtUserEvents objects are created once for the main viewer context and
  48. once for the search dialog. However, because there is only one
  49. implementation for all contexts, there is a context flag data member which
  50. indicates which context Exchange is calling from.
  51. A context in many cases corresponds to a user interface. For example, the
  52. search viewer is one context and the main viewer is another. QueryInterface
  53. is called for each IID for each context. In this example, QueryInterface is
  54. called each time for all IIDs in the main viewer context when
  55. Exchange first starts. QueryInterface is called again each time for all
  56. IIDs in the search viewer context. For each of the contexts, a unique pointer
  57. to the MyExchExtCommands and MyExchExtUserEvents objects is returned to
  58. Exchange in the QueryInterface call. Then when Exchange is calling
  59. DoCommands from the search viewer, it is calling the one using the interface
  60. pointer returned to it through QueryInterface in the search viewer context.
  61. And when Exchange is calling DoCommands from the main viewer, it is calling
  62. the one using the interface pointer returned to it through QueryInterface in
  63. the main viewer context.