Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

541 lines
21 KiB

  1. // abui.h : Declaration of the CIEMsgAb
  2. // Messanger integration to OE
  3. // Created 04/20/98 by YST
  4. #ifndef __BAUI_H_
  5. #define __BAUI_H_
  6. class CFolderBar;
  7. class CPaneFrame;
  8. #include "resource.h" // main symbols
  9. //#include "blobevnt.h"
  10. #include "bactrl.h"
  11. #include "commctrl.h"
  12. #include "badata.h"
  13. #include <docobj.h>
  14. #include <shlobj.h>
  15. #include <shlguid.h>
  16. #include <wab.h>
  17. #include <mapiguid.h>
  18. #include "bllist.h"
  19. // #include "menures.h"
  20. #include <wabapi.h>
  21. // #include "util.h"
  22. // {32bb8320-b41b-11cf-a6bb-0080c7b2d682}
  23. DEFINE_GUID(IID_IBrowserExtension, 0x32bb8320, 0xb41b, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
  24. #define IDT_PANETIMER 100
  25. #define ELAPSE_MOUSEOVERCHECK 60000
  26. // Load resource string once
  27. #define RESSTRMAX 64
  28. extern HINSTANCE g_hLocRes;
  29. interface IBrowserExtension : IUnknown
  30. {
  31. virtual STDMETHODIMP Init(REFGUID refguid) = 0;
  32. virtual STDMETHODIMP GetProperty(SHORT iPropID, VARIANTARG * varProperty) = 0;
  33. };
  34. /////////////////////////////////////////////////////////////////////////////
  35. // Bitmap Indices
  36. //
  37. enum {
  38. IMAGE_NEW_MESSAGE = 0,
  39. IMAGE_DISTRIBUTION_LIST,
  40. IMAGE_ONLINE,
  41. IMAGE_OFFLINE,
  42. IMAGE_STOPSIGN,
  43. IMAGE_CLOCKSIGN,
  44. IMAGE_CERT,
  45. IMAGE_EMPTY,
  46. ABIMAGE_MAX
  47. };
  48. enum {
  49. BASORT_STATUS_ACSEND = 0,
  50. BASORT_STATUS_DESCEND,
  51. BASORT_NAME_ACSEND,
  52. BASORT_NAME_DESCEND
  53. };
  54. HRESULT CreateIEMsgAbCtrl(IIEMsgAb **pIEMsgAb);
  55. typedef struct _tag_Phones
  56. {
  57. WCHAR * pchHomePhone;
  58. WCHAR * pchWorkPhone;
  59. WCHAR * pchMobilePhone;
  60. WCHAR * pchIPPhone;
  61. } PNONEENTRIES;
  62. typedef PNONEENTRIES * LPPNONEENTRIES;
  63. typedef struct _tag_MABEntry
  64. {
  65. MABENUM tag;
  66. WCHAR * pchWABName;
  67. WCHAR * pchWABID;
  68. LPSBinary lpSB;
  69. LPMINFO lpMsgrInfo;
  70. BOOL fCertificate;
  71. LPPNONEENTRIES lpPhones;
  72. } mabEntry;
  73. typedef mabEntry * LPMABENTRY;
  74. class CEmptyList
  75. {
  76. public:
  77. CEmptyList()
  78. {
  79. m_hwndList = NULL;
  80. m_hwndBlocker = NULL;
  81. m_hwndHeader = NULL;
  82. m_pwszString = NULL;
  83. m_pfnWndProc = NULL;
  84. m_hbrBack = NULL;
  85. m_hFont = NULL;
  86. }
  87. ~CEmptyList();
  88. HRESULT Show(HWND hwndList, LPWSTR pwszString);
  89. HRESULT Hide(void);
  90. static LRESULT SubclassWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  91. private:
  92. HWND m_hwndList;
  93. HWND m_hwndBlocker;
  94. HWND m_hwndHeader;
  95. WCHAR *m_pwszString;
  96. WNDPROC m_pfnWndProc;
  97. HBRUSH m_hbrBack;
  98. HFONT m_hFont;
  99. };
  100. /////////////////////////////////////////////////////////////////////////////
  101. // CIEMsgAb
  102. class ATL_NO_VTABLE CIEMsgAb :
  103. public CComObjectRootEx<CComSingleThreadModel>,
  104. public CComCoClass<CIEMsgAb, &CLSID_IEMsgAb>,
  105. public CComControl<CIEMsgAb>,
  106. public IDispatchImpl<IIEMsgAb, &IID_IIEMsgAb, &LIBID_IEMsgAbLib>,
  107. public IProvideClassInfo2Impl<&CLSID_IEMsgAb, NULL, &LIBID_IEMsgAbLib>,
  108. public IPersistStreamInitImpl<CIEMsgAb>,
  109. public IPersistStorageImpl<CIEMsgAb>,
  110. public IQuickActivateImpl<CIEMsgAb>,
  111. public IOleControlImpl<CIEMsgAb>,
  112. public IOleObjectImpl<CIEMsgAb>,
  113. public IOleInPlaceActiveObjectImpl<CIEMsgAb>,
  114. public IViewObjectExImpl<CIEMsgAb>,
  115. public IOleInPlaceObjectWindowlessImpl<CIEMsgAb>,
  116. public IDataObjectImpl<CIEMsgAb>,
  117. public IConnectionPointContainerImpl<CIEMsgAb>,
  118. public IPropertyNotifySinkCP<CIEMsgAb>,
  119. public ISpecifyPropertyPagesImpl<CIEMsgAb>,
  120. public IInputObject,
  121. public IObjectWithSite,
  122. // public IBrowserExtension,
  123. public IDeskBand,
  124. // public IPersistStream,
  125. public IDropTarget,
  126. public IOleCommandTarget,
  127. // public IWABExtInit,
  128. public IShellPropSheetExt
  129. {
  130. public:
  131. // Declare our own window class that doesn't have the CS_HREDRAW etc set
  132. static CWndClassInfo& GetWndClassInfo()
  133. {
  134. static CWndClassInfo wc =
  135. {
  136. { sizeof(WNDCLASSEX), 0, StartWindowProc,
  137. 0, 0, 0, 0, 0, 0 /*(HBRUSH) (COLOR_DESKTOP + 1) */, 0, TEXT("Outlook Express Address Book Control"), 0 },
  138. NULL, NULL, IDC_ARROW, TRUE, 0, _T("")
  139. };
  140. return wc;
  141. }
  142. CIEMsgAb();
  143. ~CIEMsgAb();
  144. DECLARE_REGISTRY_RESOURCEID(IDR_BLVIEW)
  145. BEGIN_COM_MAP(CIEMsgAb)
  146. COM_INTERFACE_ENTRY(IIEMsgAb)
  147. // COM_INTERFACE_ENTRY(IBrowserExtension)
  148. COM_INTERFACE_ENTRY(IDispatch)
  149. COM_INTERFACE_ENTRY(IDeskBand)
  150. COM_INTERFACE_ENTRY_IMPL(IViewObjectEx)
  151. COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx)
  152. COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx)
  153. COM_INTERFACE_ENTRY_IMPL(IOleInPlaceObjectWindowless)
  154. COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleInPlaceObject, IOleInPlaceObjectWindowless)
  155. COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleWindow, IOleInPlaceObjectWindowless)
  156. COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject)
  157. COM_INTERFACE_ENTRY_IMPL(IOleControl)
  158. COM_INTERFACE_ENTRY_IMPL(IOleObject)
  159. COM_INTERFACE_ENTRY_IMPL(IQuickActivate)
  160. COM_INTERFACE_ENTRY_IMPL(IPersistStorage)
  161. COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit)
  162. COM_INTERFACE_ENTRY_IMPL(ISpecifyPropertyPages)
  163. COM_INTERFACE_ENTRY_IMPL(IDataObject)
  164. COM_INTERFACE_ENTRY(IProvideClassInfo)
  165. COM_INTERFACE_ENTRY(IProvideClassInfo2)
  166. COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
  167. COM_INTERFACE_ENTRY(IDropTarget)
  168. COM_INTERFACE_ENTRY(IInputObject)
  169. COM_INTERFACE_ENTRY(IOleCommandTarget)
  170. // COM_INTERFACE_ENTRY(IFontCacheNotify)
  171. COM_INTERFACE_ENTRY(IObjectWithSite)
  172. // COM_INTERFACE_ENTRY_IID(IID_IDropDownFldrBar, IDropDownFldrBar)
  173. // COM_INTERFACE_ENTRY(IMAPIAdviseSink)
  174. // COM_INTERFACE_ENTRY(IPersistStream)
  175. // COM_INTERFACE_ENTRY(IWABExtInit)
  176. COM_INTERFACE_ENTRY(IShellPropSheetExt)
  177. END_COM_MAP()
  178. BEGIN_PROPERTY_MAP(CIEMsgAb)
  179. // Example entries
  180. // PROP_ENTRY("Property Description", dispid, clsid)
  181. PROP_PAGE(CLSID_StockColorPage)
  182. END_PROPERTY_MAP()
  183. BEGIN_CONNECTION_POINT_MAP(CIEMsgAb)
  184. CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
  185. END_CONNECTION_POINT_MAP()
  186. BEGIN_MSG_MAP(CIEMsgAb)
  187. MESSAGE_HANDLER(WM_CREATE, OnCreate)
  188. MESSAGE_HANDLER(WM_SIZE, OnSize)
  189. MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
  190. MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
  191. MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
  192. MESSAGE_HANDLER(WM_WININICHANGE, OnSysParamsChange)
  193. MESSAGE_HANDLER(WM_MSGR_SHUTDOWN, OnMsgrShutDown)
  194. MESSAGE_HANDLER(WM_USER_STATUS_CHANGED, OnUserStateChanged)
  195. MESSAGE_HANDLER(WM_USER_MUSER_REMOVED, OnUserRemoved)
  196. MESSAGE_HANDLER(WM_MSGR_LOGOFF, OnUserLogoffEvent)
  197. MESSAGE_HANDLER(WM_MSGR_LOGRESULT, OnUserLogResultEvent)
  198. MESSAGE_HANDLER(WM_USER_MUSER_ADDED, OnUserAdded)
  199. MESSAGE_HANDLER(WM_USER_NAME_CHANGED, OnUserNameChanged)
  200. MESSAGE_HANDLER(WM_LOCAL_STATUS_CHANGED, OnLocalStateChanged)
  201. COMMAND_ID_HANDLER(ID_FIND_PEOPLE, CmdFind)
  202. COMMAND_ID_HANDLER(ID_ADDRESS_BOOK, CmdIEMsgAb)
  203. COMMAND_ID_HANDLER(ID_DELETE_CONTACT, CmdDelete)
  204. // COMMAND_ID_HANDLER(ID_NEW_MSG_DEFAULT, CmdNewMessage)
  205. COMMAND_ID_HANDLER(ID_PROPERTIES, CmdProperties)
  206. COMMAND_ID_HANDLER(ID_NEW_CONTACT, CmdNewContact)
  207. COMMAND_ID_HANDLER(ID_NEW_ONLINE_CONTACT, CmdNewOnlineContact)
  208. COMMAND_ID_HANDLER(ID_SET_ONLINE_CONTACT, CmdSetOnline)
  209. COMMAND_ID_HANDLER(ID_NEW_GROUP, CmdNewGroup)
  210. COMMAND_ID_HANDLER(ID_SEND_INSTANT_MESSAGE, CmdNewIMsg)
  211. COMMAND_ID_HANDLER(ID_SEND_INSTANT_MESSAGE2, CmdNewMessage)
  212. COMMAND_ID_HANDLER(ID_SEND_MESSAGE, CmdNewEmaile)
  213. COMMAND_ID_HANDLER(ID_NEW_MSG_DEFAULT, CmdNewEmaile)
  214. COMMAND_ID_HANDLER(ID_HOME_PHONE, CmdHomePhone)
  215. COMMAND_ID_HANDLER(ID_WORK_PHONE, CmdWorkPhone)
  216. COMMAND_ID_HANDLER(ID_MOBILE_PHONE, CmdMobilePhone)
  217. COMMAND_ID_HANDLER(ID_IP_PHONE, CmdIPPhone)
  218. COMMAND_ID_HANDLER(ID_DIAL_PHONE_NUMBER, CmdDialPhone)
  219. MESSAGE_HANDLER(WM_PAINT, OnPaint)
  220. MESSAGE_HANDLER(WM_TIMER, OnTimer)
  221. MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
  222. MESSAGE_HANDLER(WM_SYSCOLORCHANGE, OnSysParamsChange)
  223. MESSAGE_HANDLER(WM_FONTCHANGE, OnSysParamsChange)
  224. MESSAGE_HANDLER(WM_QUERYNEWPALETTE, OnSysParamsChange)
  225. MESSAGE_HANDLER(WM_PALETTECHANGED, OnSysParamsChange)
  226. NOTIFY_CODE_HANDLER(LVN_GETDISPINFOW, NotifyGetDisplayInfo)
  227. NOTIFY_CODE_HANDLER(LVN_GETINFOTIPW, NotifyGetInfoTip)
  228. NOTIFY_CODE_HANDLER(LVN_ITEMCHANGED, NotifyItemChanged)
  229. NOTIFY_CODE_HANDLER(LVN_DELETEITEM, NotifyDeleteItem)
  230. NOTIFY_CODE_HANDLER(LVN_ITEMACTIVATE, NotifyItemActivate)
  231. NOTIFY_CODE_HANDLER(NM_SETFOCUS, NotifySetFocus)
  232. NOTIFY_CODE_HANDLER(NM_KILLFOCUS, NotifyKillFocus)
  233. END_MSG_MAP()
  234. // CComControlBase
  235. HWND CreateControlWindow(HWND hWndParent, RECT& rcPos)
  236. {
  237. m_hwndParent = hWndParent;
  238. return Create(hWndParent, rcPos, NULL, WS_CHILD | WS_TABSTOP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
  239. WS_EX_CONTROLPARENT);
  240. }
  241. // IViewObjectEx
  242. STDMETHOD(GetViewStatus)(DWORD* pdwStatus)
  243. {
  244. ATLTRACE(_T("IViewObjectExImpl::GetViewStatus\n"));
  245. *pdwStatus = VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE;
  246. return S_OK;
  247. }
  248. // IQuickActivate
  249. STDMETHOD(QuickActivate)(QACONTAINER *pQACont, QACONTROL *pQACtrl)
  250. {
  251. // $REVIEW - Someone updated the size of QACONTAINER to add two
  252. // new members, pOleControlSite and pServiceProvider.
  253. // This causes ATL to assert in a big way, but to
  254. // avoid the assert we tweek the structure size. This
  255. // is a bad thing. -- steveser
  256. pQACont->cbSize = sizeof(QACONTAINER);
  257. return (IQuickActivateImpl<CIEMsgAb>::QuickActivate(pQACont, pQACtrl));
  258. }
  259. // IOleInPlaceActiveObjectImpl
  260. STDMETHOD(TranslateAccelerator)(LPMSG lpmsg)
  261. {
  262. if (lpmsg->message == WM_CHAR && lpmsg->wParam == VK_DELETE)
  263. {
  264. PostMessage(WM_COMMAND, ID_DELETE, 0);
  265. return (S_OK);
  266. }
  267. return (S_FALSE);
  268. }
  269. // IIEMsgAb
  270. public:
  271. STDMETHOD(get_InstMsg)(BOOL *pVal);
  272. HRESULT OnDraw(ATL_DRAWINFO& di);
  273. HRESULT ResizeChildWindows(LPCRECT prcPos = NULL);
  274. // IOleWindow methods
  275. STDMETHOD(GetWindow)(HWND* phwnd);
  276. STDMETHOD(ContextSensitiveHelp)(BOOL fEnterMode);
  277. STDMETHOD(Init) (REFGUID refguid);
  278. STDMETHOD(GetProperty)(SHORT iPropID, VARIANTARG * varProperty);
  279. // IDockingWindow methods
  280. STDMETHOD(ShowDW)(BOOL fShow);
  281. STDMETHOD(CloseDW)(DWORD dwReserved);
  282. STDMETHOD(ResizeBorderDW)(LPCRECT prcBorder, IUnknown* punkToolbarSite, BOOL fReserved);
  283. // IDeskBand methods
  284. STDMETHOD(GetBandInfo)(DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi);
  285. // IDropTarget
  286. STDMETHOD(DragEnter)(THIS_ IDataObject *pDataObject, DWORD grfKeyState,
  287. POINTL pt, DWORD *pdwEffect);
  288. STDMETHOD(DragOver)(THIS_ DWORD grfKeyState, POINTL pt, DWORD *pdwEffect);
  289. STDMETHOD(DragLeave)(THIS);
  290. STDMETHOD(Drop)(THIS_ IDataObject *pDataObject, DWORD grfKeyState,
  291. POINTL pt, DWORD *pdwEffect);
  292. //IOleCommandTarget
  293. HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup,
  294. ULONG cCmds,
  295. OLECMD rgCmds[],
  296. OLECMDTEXT *pCmdText);
  297. HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup,
  298. DWORD nCmdID,
  299. DWORD nCmdExecOpt,
  300. VARIANTARG *pvaIn,
  301. VARIANTARG *pvaOut);
  302. // IInputObject
  303. STDMETHOD(HasFocusIO)(THIS);
  304. STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg);
  305. STDMETHOD(UIActivateIO)(THIS_ BOOL fActivate, LPMSG lpMsg);
  306. #ifdef LATER
  307. /////////////////////////////////////////////////////////////////////////
  308. // IFontCacheNotify
  309. //
  310. STDMETHOD(OnPreFontChange)(void);
  311. STDMETHOD(OnPostFontChange)(void);
  312. #endif
  313. // STDMETHOD(IOleObject_SetClientSite) (IOleClientSite *pClientSite) { return S_OK;}
  314. // STDMETHOD(IOleObject_GetClientSite) (IOleClientSite **ppClientSite){ return S_OK;}
  315. //IObjectWithSite
  316. STDMETHOD(SetSite)(IUnknown *punksite);
  317. STDMETHOD(GetSite)(REFIID riid, LPVOID *ppvSite);
  318. //IDropDownFolderBar
  319. HRESULT RegisterFlyOut(CFolderBar *pFolderBar);
  320. HRESULT RevokeFlyOut();
  321. // IMAPIAdviseSink
  322. STDMETHOD_(ULONG, OnNotify)(ULONG cNotif, LPNOTIFICATION pNotifications);
  323. // IShellPropSheetExt interface
  324. STDMETHOD(AddPages)(LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam);
  325. STDMETHOD(ReplacePage)(UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam);
  326. // IWABExtInit interface
  327. STDMETHOD(Initialize)(LPWABEXTDISPLAY lpWED);
  328. // STDMETHOD (EventUserStateChanged)(THIS_ IBasicIMUser * pUser);
  329. LPMABENTRY AddBlabEntry(MABENUM tag, LPSBinary lpSB, LPMINFO lpMsgrInfo = NULL, WCHAR *pchMail = NULL,
  330. WCHAR *pchDisplayName = NULL, BOOL fCert = FALSE, LPPNONEENTRIES lpPhs = NULL);
  331. void CheckAndAddAbEntry(LPSBinary lpSB, WCHAR *pchEmail, WCHAR *pchDisplayName, DWORD nFlag, LPPNONEENTRIES pPhEnries);
  332. BOOL DontShowMessenger(void) { return (m_pCMsgrList ? m_pCMsgrList->IsLocalOnline() :(m_dwHideMessenger ? TRUE : (m_dwDisableMessenger ? TRUE : FALSE))); }
  333. BOOL HideViewMenu(void) { return(m_dwHideMessenger); }
  334. BOOL IsMessengerInstalled(void) { return (m_pCMsgrList ? TRUE : FALSE); }
  335. // Message Handlers
  336. private:
  337. LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  338. LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  339. LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  340. LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  341. LRESULT OnSetFocus(UINT nMsg , WPARAM wParam , LPARAM lParam , BOOL& bHandled );
  342. LRESULT OnTimer(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  343. {
  344. if(wParam == IDT_PANETIMER)
  345. _ReloadListview();
  346. return 0;
  347. }
  348. LRESULT OnSysParamsChange(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  349. {
  350. m_ctlList.SendMessage(nMsg, wParam, lParam);
  351. return 0;
  352. }
  353. HRESULT OnMsgrShutDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  354. HRESULT OnUserStateChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  355. HRESULT OnUserRemoved(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  356. HRESULT OnUserLogoffEvent(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  357. HRESULT OnUserLogResultEvent(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  358. HRESULT OnUserAdded(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  359. HRESULT OnUserNameChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  360. HRESULT OnLocalStateChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  361. LRESULT CmdDelete(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  362. LRESULT CmdFind(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  363. LRESULT CmdIEMsgAb(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  364. LRESULT CmdNewContact(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  365. LRESULT CmdNewOnlineContact(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  366. LRESULT CmdNewMessage(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  367. LRESULT CmdNewGroup(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  368. LRESULT CmdNewEmaile(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  369. LRESULT CmdNewIMsg(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  370. LRESULT CmdSetOnline(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  371. // LRESULT CmdMsgrOptions(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  372. LRESULT NewInstantMessage(LPMABENTRY pEntry);
  373. LRESULT CmdHomePhone(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  374. LRESULT CmdWorkPhone(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  375. LRESULT CmdMobilePhone(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  376. LRESULT CmdIPPhone(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  377. LRESULT CmdDialPhone(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  378. LRESULT NotifyDeleteItem(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  379. LRESULT NotifyItemChanged(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  380. LRESULT NotifyItemActivate(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  381. LRESULT NotifyGetDisplayInfo(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  382. LRESULT NotifyGetInfoTip(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  383. // LRESULT NotifyColumnClick(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  384. LRESULT CmdProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  385. LRESULT NotifySetFocus(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  386. LRESULT NotifyKillFocus(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  387. // Utility Functions
  388. HRESULT _ResizeElements(LPCRECT prcPos = NULL, LPCRECT prcClip = NULL);
  389. void _AutosizeColumns(void);
  390. void _EnableCommands(void);
  391. HRESULT _DoDropMessage(LPMIMEMESSAGE pMessage);
  392. HRESULT _DoDropMenu(POINTL pt, LPMIMEMESSAGE pMessage);
  393. void _ReloadListview(void);
  394. LRESULT SetUserIcon(LPMABENTRY pEntry, int nStatus, int * pImage);
  395. void AddMsgrListItem(LPMINFO lpMsgrInfo);
  396. HRESULT FillMsgrList();
  397. void RemoveBlabEntry(LPMABENTRY lpEntry);
  398. LPMABENTRY FindUserEmail(WCHAR *pchEmail, int *pIndex = NULL, BOOL fMsgrOnly = TRUE);
  399. LPMABENTRY GetSelectedEntry(void);
  400. LPMABENTRY GetEntryForSendInstMsg(LPMABENTRY pEntry = NULL);
  401. HRESULT PromptToGoOnline(void);
  402. void RemoveMsgrInfo(LPMINFO lpMsgrInfo);
  403. BOOL _FillPhoneNumber(UINT Id, OLECMDTEXT *cmdText);
  404. LRESULT CallPhone(WCHAR *szPhone, BOOL fMessengerContact);
  405. // Member Data
  406. private:
  407. // Address Book Object
  408. CAddressBookData m_cAddrBook;
  409. // Child windows
  410. CContainedWindow m_ctlList; // Displays the list of people
  411. HIMAGELIST m_himl;
  412. DWORD m_dwFontCacheCookie; // For the Advise on the font cache
  413. CEmptyList m_cEmptyList;
  414. WCHAR * m_szOnline;
  415. // TCHAR * m_szInvisible;
  416. WCHAR * m_szBusy;
  417. WCHAR * m_szBack;
  418. WCHAR * m_szAway;
  419. WCHAR * m_szOnPhone;
  420. WCHAR * m_szLunch;
  421. WCHAR * m_szOffline;
  422. WCHAR * m_szIdle;
  423. WCHAR * m_szEmptyList;
  424. WCHAR * m_szMsgrEmptyList;
  425. WCHAR * m_szLeftBr;
  426. WCHAR * m_szRightBr;
  427. BOOL m_fNoRemove:1;
  428. BOOL m_fShowAllContacts:1;
  429. BOOL m_fShowOnlineContacts:1;
  430. BOOL m_fShowOfflineContacts:1;
  431. BOOL m_fShowEmailContacts:1;
  432. BOOL m_fShowOthersContacts:1;
  433. BOOL m_fWAB:1;
  434. BOOL m_fRight:1;
  435. BOOL m_fLogged:1;
  436. int m_delItem;
  437. DWORD m_dwHideMessenger;
  438. DWORD m_dwDisableMessenger;
  439. // Drag & Drop stuff
  440. IDataObject *m_pDataObject;
  441. CLIPFORMAT m_cf;
  442. // Properties
  443. //Site ptr
  444. IInputObjectSite *m_pObjSite;
  445. HWND m_hwndParent;
  446. CFolderBar *m_pFolderBar;
  447. int m_nSortType;
  448. CMsgrList *m_pCMsgrList; // pointer to OE Msgr
  449. int m_nChCount;
  450. // WAB extension
  451. UINT m_cRefThisDll; // Reference count for this DLL
  452. HPROPSHEETPAGE m_hPage1; // Handle to the property sheet page
  453. LPWABEXTDISPLAY m_lpWED;
  454. LPWABEXTDISPLAY m_lpWEDContext;
  455. LPMAPIPROP m_lpPropObj; // For context menu extensions, hang onto the prop obj
  456. };
  457. int CALLBACK BA_Sort(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
  458. INT_PTR CALLBACK WabExtDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  459. #define AthMessageBox(hwnd, pszT, psz1, psz2, fu) MessageBoxInst(g_hLocRes, hwnd, pszT, psz1, psz2, fu)
  460. #define AthMessageBoxW(hwnd, pwszT, pwsz1, pwsz2, fu) MessageBoxInstW(g_hLocRes, hwnd, pwszT, pwsz1, pwsz2, fu, LoadStringWrapW, MessageBoxWrapW)
  461. LPWSTR AthLoadString(UINT id, LPWSTR sz, int cch);
  462. LPSTR ANSI_AthLoadString(UINT id, TCHAR* sz, int cch);
  463. HMENU LoadPopupMenu(UINT id);
  464. void MenuUtil_BuildMenuIDList(HMENU hMenu, OLECMD **prgCmds, ULONG *pcStart, ULONG *pcCmds);
  465. HRESULT MenuUtil_EnablePopupMenu(HMENU hPopup, CIEMsgAb *pTarget);
  466. #endif //__BAUI_H_