|
|
////////////////////////////////////////////////////////////////////////////////
//
// UIMISC.H - header for common miscellaneous functions used by the UI
//
//
////////////////////////////////////////////////////////////////////////////////
#ifndef __UIMISC_H_
#define __UIMISC_H_
#define IDC_TREEVIEW 9010 //These should really be in resource.h
#define IDC_SPLITTER 9011
#define TOOLTIP
#define MAX_DISPLAY_NAME_LENGTH 32
#define MAX_UI_STR 200
#define MAX_BUF_STR 4*MAX_UI_STR
#ifndef WIN16
static LPTSTR g_szWABHelpFileName = TEXT("WAB.HLP"); #else
static LPTSTR g_szWABHelpFileName = TEXT("WAB16.HLP"); #endif
extern const LPTSTR szInternetCallKey; extern const LPTSTR szCallto; extern const LPTSTR szCRLF; extern const LPTSTR szColon; extern const LPTSTR szTrailingDots; extern const LPTSTR szArrow; extern const LPTSTR szBackSlash;
#define IDC_BB_NEW 8080
#define IDC_BB_PROPERTIES 8082
#define IDC_BB_DELETE 8083
#define IDC_BB_FIND 8084
#define IDC_BB_PRINT 8085
#define IDC_BB_ACTION 8086
#define IDC_BB_ADD_TO_ADDRBOOK 8087
// This should not be an enumeration as tbPrint can drop out at
// run-time. Be very careful if you change the order of this
// enumeration - search for all uses of these enumerated values
// first. There is code in ui_abook.c which relies on tbPrint
// being in front of tbAction.
enum _Toolbar { tbNew=0, tbProperties, tbDelete, tbFind, tbPrint, tbAction, //upto this many on the toolbar
tbAddToWAB, tbCopy, //these on the context menu
tbPaste, tbNewEntry, tbNewGroup, tbNewFolder, tbMAX };
enum _AddressModalDialogState // Used in various forms of modal IAB_ADDRESS dialogs
{ STATE_SELECT_RECIPIENTS = 0, STATE_PICK_USER, STATE_BROWSE, STATE_BROWSE_MODAL };
// Returned values from our Search Dialog Proc
enum _SearchDialogReturnValues { SEARCH_CANCEL=0, SEARCH_OK, SEARCH_ERROR, SEARCH_CLOSE, SEARCH_USE };
//#define VCARD
// **** Keep this enum below in sync with the Main menu structure in CoolUI.RC
enum _MainMenuSubMenus { idmFile = 0, idmEdit, idmView, idmTools, idmHelp };
enum _FileMenu { idmNewContact = 0, idmNewGroup, idmNewFolder, idmFSep1, idmProperties, idmDelete, idmFSep2, idmImport, idmExport, idmFSep3, idmPrint, idmFSep4, #ifdef FUTURE
idmFolders, idmSepFolders, #endif
idmSwitchUsers, idmAllContents, idmFSep5, idmClose, idmFileMax, };
enum _EditMenu { idmCopy=0, idmPaste, idmESep1, idmSelectAll, idmESep2, // idmProfile,
// idmESep3,
idmFindPeople, };
enum _ViewMenus { idmToolBar=0, idmStatusBar, idmGroupsList, idmSepUI, idmLargeIcon, idmSmallIcon, idmList, idmDetails, idmSepListStyle, idmSortBy, idmSepSort, idmRefresh, idmViewMax, };
enum _ToolsMenus { idmAccounts=0, idmSepAccounts, idmOptions, idsSepOptions, idmAction, };
#define WAB_ONEOFF_NOADDBUTTON 0x00000080 // Flag used to surpress AddToWABButton in iAddrBook::Details
#ifdef HM_GROUP_SYNCING
// [PaulHi] Private message to begin a second group synchronization pass to main UI thread
#define WM_USER_SYNCGROUPS WM_USER+102
#endif
// Private message we send to our toolbar container so it can forward it to
// the toolbar.
#define WM_PRVATETOOLBARENABLE WM_USER+101
//////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTE: If you change this, you must change lprgAddrBookColHeaderIDs in
// globals.c!
//
enum _AddrBookColumns { colDisplayName=0, colEmailAddress, colOfficePhone, colHomePhone, NUM_COLUMNS };
//////////////////////////////////////////////////////////////////////////////
//
// This structure is used for storing the address book position and column sizes
// in the registry for persistence
//
typedef struct _AddressBookPosColSize { RECT rcPos; int nColWidth[NUM_COLUMNS]; BOOL bViewToolbar; DWORD dwListViewStyle; int nListViewStyleMenuID; BOOL bViewStatusBar; int colOrderArray[NUM_COLUMNS]; BOOL bViewGroupList; int nTab; int nTViewWidth; } ABOOK_POSCOLSIZE, * LPABOOK_POSCOLSIZE; //////////////////////////////////////////////////////////////////////////////
extern const TCHAR *g_rgszAdvancedFindAttrs[];
/////////////////////////////////////////////////////////////////////////////
// This represents all the listview boxes in the UI
// Using these tags we can customize the context sensitive menus
// in one sub routine saving code duplication ...
/////////////////////////////////////////////////////////////////////////////
enum _AllTheListViewBoxes { lvMainABView = 0, lvDialogABContents, // Modeless address view LV
lvDialogModalABContents, // Modal addres vuew LV
lvDialogABTo, // To Well LV
lvDialogABCC, // CC Well LV
lvDialogABBCC, // BCC Well LV
lvDialogDistList, // Disttribution list UI LV
lvDialogResolve, // Resolve dialog LV
lvDialogFind, // Find dialog results LV
lvMainABTV, // TreeView in main AB
lvToolBarAction, lvToolBarNewEntry, #ifdef COLSEL_MENU
lvMainABHeader, // column selection viewin main AB
#endif // COLSEL_MENU
};
/////////////////////////////////////////////////////////////////////////////
// These are indexes into the bitmaps to show the little bitmap
// next to each entry - this has to be synchronized with the bmps
/////////////////////////////////////////////////////////////////////////////
enum _ListViewImages { imageMailUser=0, //Common to small and large imagelists
imageDistList, imageSortDescending, imageSortAscending, imageDirectoryServer, imageUnknown, imageMailUserLDAP, imageAddressBook, imageMailUserWithCert, imageMailUserMe, imageFolderClosed, imageFolderOpen, imageMailUserOneOff, imageMax };
//
// cellwidth of LV image lists
//
#define S_BITMAP_WIDTH 16
#define S_BITMAP_HEIGHT 16
#define L_BITMAP_WIDTH 32
#define RGB_TRANSPARENT (COLORREF)0x00FF00FF
//
// UI control spacing - TBD confirm these numbers
//
#define BORDER 3 //pixels
#define CONTROL_SPACING 3
// UI Refresh timer defines
#define WAB_REFRESH_TIMER 14 // timer identifier
#define WAB_REFRESH_TIMEOUT 4000 // time-out value - 4 seconds
/////////////////////////////////////////////////////////////////////////////
// LDAP_SEARCH_PARAMS - specifies parameters for LDAP searches
/////////////////////////////////////////////////////////////////////////////
enum _LDAPSearch { ldspDisplayName, ldspEmail, ldspAddress, ldspPhone, ldspOther, ldspMAX };
typedef struct _LDAPSearchParams { LPADRBOOK lpIAB; TCHAR szContainerName[MAX_UI_STR]; TCHAR szData[ldspMAX][MAX_UI_STR]; BOOL bUseOtherBase; } LDAP_SEARCH_PARAMS, * LPLDAP_SEARCH_PARAMS;
/////////////////////////////////////////////////////////////////////////////
// Stores info about each entry in the list view control
// Each entry in the list view controls has 1 structure corresponding to that
// entry
/////////////////////////////////////////////////////////////////////////////
typedef struct _RecipientInfo { ULONG cbEntryID; LPENTRYID lpEntryID; TCHAR szDisplayName[MAX_DISPLAY_NAME_LENGTH];//The actual text that is displayed
// LPTSTR szDisplayName;
TCHAR szEmailAddress[MAX_DISPLAY_NAME_LENGTH]; TCHAR szHomePhone[MAX_DISPLAY_NAME_LENGTH]; TCHAR szOfficePhone[MAX_DISPLAY_NAME_LENGTH]; TCHAR szByLastName[MAX_DISPLAY_NAME_LENGTH]; // Stores the text preloaded by last name first
TCHAR szByFirstName[MAX_DISPLAY_NAME_LENGTH];// Stores preloaded DisplayName
ULONG ulRecipientType; ULONG ulObjectType; BOOL bHasCert; BOOL bIsMe; ULONG ulOldAdrListEntryNumber; //if this was an element passed into the Address lpAdrList
//we store its original AdrList index here so that we dont
//have to do inefficient searches later ...
// ***VERY IMPORTANT*** Legal values range from 1 to AdrList->cValues (not from 0)
LPTSTR lpByRubyFirstName; LPTSTR lpByRubyLastName; struct _RecipientInfo * lpNext; struct _RecipientInfo * lpPrev; } RECIPIENT_INFO, * LPRECIPIENT_INFO;
//////////////////////////////////////////////////////////////////////////////
// Hack structure used for talking between the Find dialog and the select
// recipients dialog
//////////////////////////////////////////////////////////////////////////////
typedef struct _AdrParmFindInfo { LPADRPARM lpAdrParms; LPRECIPIENT_INFO * lppTo; LPRECIPIENT_INFO * lppCC; LPRECIPIENT_INFO * lppBCC; int DialogState; // identifies where it was called from
int nRetVal; // return code identifies what action closed the dialog
LPENTRYID lpEntryID; ULONG cbEntryID; } ADRPARM_FINDINFO, * LPADRPARM_FINDINFO; //////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// A structure that will contain the LDAP URL subparts ...
typedef struct _LDAPURL { LPTSTR lpszServer; // Server name
LPTSTR lpszBase; // Base <dn>
LPTSTR * ppszAttrib; // Attributes requested
ULONG ulAttribCount; //
ULONG ulScope; // Search scope
LPTSTR lpszFilter; // search filter
LPTSTR lpszExtension; // And extension part of the URL
LPTSTR lpszBindName; // A bindname extension for the URL
BOOL bServerOnly; // Only found a server entry
DWORD dwAuthType; // Authentication Type
LPRECIPIENT_INFO lpList;// used to cache multple query results
} LDAPURL, * LPLDAPURL; //////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// This structure holds information about
// the sort order of a particular list view
/////////////////////////////////////////////////////////////////////////////
typedef struct _SortInfo { int iOldSortCol; int iOlderSortCol; BOOL bSortAscending; BOOL bSortByLastName; } SORT_INFO, *LPSORT_INFO;
/////////////////////////////////////////////////////////////////////////////
// We will subclass some of the child controls on the main Address Book View to
// enable tabbing between the controls - the following
// are used in this subclassing
/////////////////////////////////////////////////////////////////////////////
enum _SubClassedControlIndexs { s_EditQF=0, s_ListAB, s_TV, s_Max };
typedef struct _ToolTipInfo { int iItem; BOOL bActive; TCHAR szTipText[MAX_BUF_STR]; UINT_PTR uTooltipTimer; BOOL bShowTooltip; } TOOLTIP_INFO, * LPTOOLTIPINFO;
typedef struct _TVItemStuff { ULONG ulObjectType; LPSBinary lpsbEID; LPSBinary lpsbParent; HTREEITEM hItemParent; } TVITEM_STUFF, * LPTVITEM_STUFF;
// There may be several property sheets in the final version of the details pane
// Each list will have a seperate set of controls corresponding to different properties
// We want to retrieve the control values and map them into a property-array
// Each dialog will create its own proparray on exiting. The original record will also
// have some properties that never got mapped in the first place and some which may have been
// deleted thru the ui. Hence we look at the old array and the new array and create a merged
// list of props ... all mapped props in the new arrays superscede props in the
// old array
enum _PropSheets{ propSummary = 0, propPersonal, // a list of all the property sheets on this page
propHome, propBusiness, propNotes, propConferencing, propCert, propOrg, propTrident, propFamily, TOTAL_PROP_SHEETS };
enum _DLPropSheets{ propGroup = 0, propGroupOther, propDLMax };
enum _DetailsDialogReturnValues { DETAILS_RESET = 0, //blank return value
DETAILS_OK, DETAILS_CANCEL, DETAILS_ADDTOWAB };
enum { contactHome=0, contactBusiness, groupOther, contactPersonal, };
//////////////////////////////////////////////////////////////////////////////
//
// The PropArrayInfo is used by the property sheets displaying details on
// contacts or groups
//
//////////////////////////////////////////////////////////////////////////////
// Misc flags used here
#define DETAILS_DNisCompanyName 0x00000001
#define DETAILS_DNisNickName 0x00000002
#define DETAILS_DNisFMLName 0x00000004
#define DETAILS_UseRubyPersonal 0x00000008 // Determines if the displayed prop sheet is a RUBY one for Japan/China/Korea
#define DETAILS_Initializing 0x00000010 // Prevents WM_COMMAND triggers during initialization
#define DETAILS_ProgChange 0x00000020 // Diffrentiates between changes in Display Name caused by user and by other parts of the code
#define DETAILS_EditingEmail 0x00000040 // So we can abort the email editing if user cancels
#define DETAILS_HideAddToWABButton 0x00000080 // Hides the add-to-wab button for some one-offs
#define DETAILS_ShowCerts 0x00000100 // Decides whether or not to show certs UI
#define DETAILS_ShowTrident 0x00000200 // Decides whether or not to show Trident in UI
#define DETAILS_ShowNetMeeting 0x00000400 // Decides whether or not to show Netmeeting stuff
#define DETAILS_ShowOrg 0x00000800 // Decides whether or not to show Org UI
#define DETAILS_EditingConf 0x00001000 // Tracks if editing a server/email pair
#define DETAILS_ShowSummary 0x00002000 // Decides whether or not to present summary information
#define DETAILS_EditingOneOff 0x00004000 // Tracks if editing a group one-off
#define DETAILS_DefHomeChanged 0x00008000 // Used to track changes in non-Edit controls on the Home prop sheets
#define DETAILS_DefBusChanged 0x00010000 // Used to track changes in non-Edit controls on the Business prop sheets
#define DETAILS_GenderChanged 0x00020000 // Used to track changes in Gender
#define DETAILS_DateChanged 0x00040000 // Used to track changes in Date-Time fields
#define DETAILS_ChildrenChanged 0x00080000 // Used to track changes in PR_CHILDRENS_NAMES
#define DETAILS_EditingChild 0x00100000 // Tracks if we're in the middle of editing a children name
typedef struct _PropArrayInfo { ULONG cbEntryID; // Entryid of this item
LPENTRYID lpEntryID; ULONG ulOperationType; // SHOW_DETAILS or SHOW_NEW_ENTRY
ULONG ulObjectType; // MAILUSER or DISTLIST
LPMAPIPROP lpPropObj; // Actual object we are displaying
int nRetVal; BOOL bSomethingChanged; // flags changes so we dont waste processing
BOOL bPropSheetOpened[TOTAL_PROP_SHEETS]; ULONG ulFlags; HWND hWndDisplayNameField; // Holds HWND of DN edit field
int ulTridentPageIndex; // index of the trident sheet in case we need to remove it
LPADRBOOK lpIAB; LPIWABDOCHOST lpIWABDocHost; int nDefaultServerIndex; int nBackupServerIndex; LPTSTR szDefaultServerName; // LocalAlloc storage for these and then free them later ..
ULONG cchDefaultServerName; LPTSTR szBackupServerName; ULONG cchBackupServerName; int nConfEditIndex; SBinary sbDLEditingOneOff; HWND hWndComboConf; LPRECIPIENT_INFO lpContentsList; // Used by groups only for member lists
LPCERT_ITEM lpCItem; // Keeps a list of all our cert items ...
int nPropSheetPages; // Total number of propsheets for this item
HPROPSHEETPAGE * lphpages; // An array of all the prop sheets created for this item
LPWABEXTDISPLAY lpWED; // Stores info about extended prop sheets
LPEXTDLLINFO lpExtList; // List of shell extension objects
LPTSTR lpLDAPURL; // Points to the LDAP URL, if any, being displayed
BOOL bIsNTDSURL; // True if the LDAP URL represents an object from an NTDS
LPTSTR lpszOldName; // used for caching the old name of the prop being displayed
int nNTDSPropSheetPages; // Tracks the number of NTDS PropSheet extensions
HPROPSHEETPAGE * lphNTDSpages; // We cache the NTDS extension prop pages seperately since we may need to replace out own pages with these
GUID guidExt; // Used while creating prop sheet extensions for identifying the appropriate extension
} PROP_ARRAY_INFO, * LPPROP_ARRAY_INFO;
#define DL_INFO PROP_ARRAY_INFO
#define LPDL_INFO LPPROP_ARRAY_INFO
//
// The following structure is used to cache various data associated with the
// main browse UI for the WAB
//
typedef struct _tabBrowseWindowInfo { // Following are used in ui_abook.c in the main ui
HWND hWndListAB; // Handle of main list view
HWND hWndBB; // Handle of Button Bar
HWND hWndEditQF; HWND hWndStaticQF; HWND hWndAB; // Handle of the Address Book Window
HWND hWndSB; // Status bar
int iFocus; // Tracks who has the focus
LPRECIPIENT_INFO lpContentsList; LPADRBOOK lpAdrBook; // Hangs on to AdrBook object
LPIAB lpIAB; // Internal version of AdrBook object
WNDPROC fnOldProc[s_Max]; // Subclass some of the control procs
HWND s_hWnd[s_Max]; // HWNDS of subclasses controls
LPFNDISMISS lpfnDismiss;// Context for dismissing in the case of modeless IAdrBook window
LPVOID lpvDismissContext; // Dismiss context as above
HWND hWndTools; // handle of the toolbar window
SORT_INFO SortInfo; // Sort Info
#ifdef TOOLBAR_BACK
HBITMAP hbmBack; // handle of the toolbar background
HPALETTE hpalBkgnd; // handle of the toolbar background palette
#endif
HWND hWndTT; // Tooltip control info in ui_abook.c
TOOLTIP_INFO tti; BOOL bDoQuickFilter; // bobn: brianv says we have to take this out...
//int nCount;
// Used to override automatic notification-fueled refreshes
BOOL bDontRefreshLV; // Related to Treeview in ui_Abook.c
HWND hWndTV; HWND hWndSplitter; // Related to drag and drop
LPIWABDRAGDROP lpIWABDragDrop; // Related to Notifications and updates
LPMAPIADVISESINK lpAdviseSink; ULONG ulAdviseConnection;
BOOL bDeferNotification; // Used to defer next notification request
HTREEITEM hti; //used for caching rt-click items for treeview
LPWABFOLDER lpUserFolder; // Used only to mark the User-Folder being rt-clicked
#ifdef COLSEL_MENU
ULONG iSelColumn; // Used for Column Selection caching
#endif
} BWI, * LPBWI;
#define bwi_lpUserFolder lpbwi->lpUserFolder
#define bwi_hti lpbwi->hti
#define bwi_hWndListAB lpbwi->hWndListAB
#define bwi_hWndBB lpbwi->hWndBB
#define bwi_hWndSB lpbwi->hWndSB
#define bwi_bDoQuickFilter lpbwi->bDoQuickFilter
// bobn: brianv says we have to take this out...
//#define bwi_nCount lpbwi->nCount
#define bwi_bDeferNotification lpbwi->bDeferNotification
#define bwi_SortInfo lpbwi->SortInfo
#define bwi_hWndTT lpbwi->hWndTT
#define bwi_tt_iItem ((lpbwi->tti).iItem)
#define bwi_tt_bActive lpbwi->tti.bActive
#define bwi_tt_szTipText ((lpbwi->tti).szTipText)
#define bwi_tt_TooltipTimer ((lpbwi->tti).uTooltipTimer)
#define bwi_tt_bShowTooltip ((lpbwi->tti).bShowTooltip)
#define bwi_hWndTV (lpbwi->hWndTV)
#define bwi_hWndSplitter (lpbwi->hWndSplitter)
#define bwi_hWndEditQF lpbwi->hWndEditQF
#define bwi_hWndStaticQF lpbwi->hWndStaticQF
#define bwi_hWndAB lpbwi->hWndAB
#define bwi_iFocus lpbwi->iFocus
#define bwi_lpIAB (lpbwi->lpIAB)
#define bwi_lpAdrBook (lpbwi->lpAdrBook)
#define bwi_fnOldProc (lpbwi->fnOldProc)
#define bwi_s_hWnd (lpbwi->s_hWnd)
#define bwi_lpContentsList (lpbwi->lpContentsList)
#define bwi_lpfnDismiss (lpbwi->lpfnDismiss)
#define bwi_lpvDismissContext (lpbwi->lpvDismissContext)
#define bwi_hWndTools (lpbwi->hWndTools)
#ifdef TOOLBAR_BACK
#define bwi_hbmBack (lpbwi->hbmBack)
#define bwi_hpalBkgnd (lpbwi->hpalBkgnd)
#endif
#define bwi_bDontRefreshLV (lpbwi->bDontRefreshLV)
#define bwi_lpIWABDragDrop (lpbwi->lpIWABDragDrop)
#define bwi_lpAdviseSink (lpbwi->lpAdviseSink)
#define bwi_ulAdviseConnection (lpbwi->ulAdviseConnection)
/////////////////////////////////////////////////////////////////////////////
// Each thread can generate a different Address Book window .. need to
// keep the data thread safe ...
/////////////////////////////////////////////////////////////////////////////
typedef struct _tagPerThreadGlobalData { // Persistent search params
LDAP_SEARCH_PARAMS LDAPsp;// Search parameters for LDAP
LPADRBOOK lpIAB; HACCEL hAccTable; // Accelerator TAble
HWND hWndFind; // hWnd of Find dialog so LDAP cancel dialog has a parent
HWND hDlgCancel; // hWnd of the Cancel dialog
BOOL bDontShowCancel; // Dont show the cancel dialog when the find is launched ...
// Used in print dialog
BOOL bPrintUserAbort; HWND hWndPrintAbortDlg;
// Tracks if this is an OpenExSession
BOOL bIsWABOpenExSession; BOOL bIsUnicodeOutlook; // Tracks if this WAB supports Unicode in which case we don't need to do Unicode conversions for it
#ifdef HM_GROUP_SYNCING
LPTSTR lptszHMAccountId; // Keeps Hotmail syncing account ID across two synchronization passes.
#endif
BOOL bDisableParent; // Tracks first run for Directory Service modification
BOOL bFirstRun;
// Default Platform/Dialog Font
HFONT hDefFont; HFONT hDlgFont;
// Caches a cookie for LDAP paged results
struct berval * pCookie;
} PTGDATA, * LPPTGDATA;
#define pt_hDefFont (lpPTGData->hDefFont)
#define pt_hDlgFont (lpPTGData->hDlgFont)
#define pt_pCookie (lpPTGData->pCookie)
#define pt_LDAPsp (lpPTGData->LDAPsp)
#define pt_hWndFind lpPTGData->hWndFind
#define pt_hDlgCancel lpPTGData->hDlgCancel
#define pt_bDontShowCancel lpPTGData->bDontShowCancel
#define pt_bPrintUserAbort (lpPTGData->bPrintUserAbort)
#define pt_hWndPrintAbortDlg (lpPTGData->hWndPrintAbortDlg)
#define pt_bIsWABOpenExSession (lpPTGData->bIsWABOpenExSession)
#define pt_bIsUnicodeOutlook (lpPTGData->bIsUnicodeOutlook)
#define pt_bDisableParent (lpPTGData->bDisableParent)
#define pt_bFirstRun (lpPTGData->bFirstRun)
#define pt_lpIAB (lpPTGData->lpIAB)
#define pt_hAccTable (lpPTGData->hAccTable)
// This is a global
DWORD dwTlsIndex; // index for private thread storage
// for COLSEL_MENU stuff
#ifdef COLSEL_MENU
extern const ULONG MenuToPropTagMap[]; #endif // COLSEL_MENU
/**** MISC UI FUNCTIONS ****/
// Gets a threads storage pointer or creates a new one if none found
LPPTGDATA __fastcall GetThreadStoragePointer();
//This function frees up RECIPIENT_INFO structures
void FreeRecipItem(LPRECIPIENT_INFO * lppItem);
// This function loads a string and allocates space for it.
LPTSTR LoadAllocString(int StringID);
// This function initializes a list view
HRESULT HrInitListView( HWND hWndLV, // List view hWnd
DWORD dwStyle, // Style
BOOL bShowHeaders); // Hide or show column headers
// This function fills a list view from a contents list
HRESULT HrFillListView( HWND hWndLV, LPRECIPIENT_INFO lpContentsList);
// Call to create main view to address book
HWND hCreateAddressBookWindow( LPADRBOOK lpIAB, HWND hWndParent, LPADRPARM lpszCaption);
// Creates a ContentsList from the property store
HRESULT HrGetWABContentsList( LPIAB lpIAB, SORT_INFO SortInfo, LPSPropTagArray lpPTA, LPSPropertyRestriction lpPropRes, ULONG ulFlags, LPSBinary lpsbContainer, BOOL bGetProfileContents, LPRECIPIENT_INFO * lppContentsList);
#define LDAP_USE_ADVANCED_FILTER 0x04000000 // completely made up flag
// for passing a advanced filter
// to the LDAP_FindRow
// Creates ContentsList from an LDAP container
HRESULT HrGetLDAPContentsList( LPADRBOOK lpIAB, ULONG cbContainerEID, LPENTRYID lpContainerEID, SORT_INFO SortInfo, LPSRestriction lpPropRes, LPTSTR lpAdvFilter, LPSPropTagArray lpPTA, ULONG ulFlags, LPRECIPIENT_INFO * lppContentsList);
// Trims leading and trailing spaces from strings
BOOL TrimSpaces(TCHAR * szBuf);
// Sort Call Back funciton for list views
int CALLBACK ListViewSort( LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
// Retrieves the HWND for a list view column header
//HWND GetListViewColumnHeader(HWND hWndLV, DWORD dwPos);
// Paints bmps onto list view column headers
void SetColumnHeaderBmp( HWND hWndLV, SORT_INFO SortInfo);
// Returns TRUE if the current viewed container is the PAB
BOOL CurrentContainerIsPAB(HWND hWndCombo);
// Cleans up the list view and releases the contents list
void ClearListView( HWND hWndLV, LPRECIPIENT_INFO * lppContentsList);
// Deletes the selected items from a list view control and the property store
void DeleteSelectedItems( HWND hWndLV, LPADRBOOK lpIAB, HANDLE hPropertyStore, LPFILETIME lpftLast);
// Calls properties on a list view item
HRESULT HrShowLVEntryProperties( HWND hWndLV, ULONG ulFlags, LPADRBOOK lpIAB, LPFILETIME lpftLast);
// Exports list view items to vCard files
HRESULT VCardExportSelectedItems(HWND hWndLV, LPADRBOOK lpIAB);
// Imports vCard file to property store
HRESULT VCardImport(HWND hWnd, LPADRBOOK lpIAB, LPTSTR szVCardFile, LPSPropValue * lppProp);
// Selects the specified list view item
void LVSelectItem( HWND hWndList, int iItemIndex);
// Given an entryid, reads a single item from the store and creates a list view item
BOOL ReadSingleContentItem( LPADRBOOK lpIAB, ULONG cbEntryID, LPENTRYID lpEntryID, LPRECIPIENT_INFO * lppItem);
// Converts an lpPropArray into a LPRECIPIENT_INFO item
void GetRecipItemFromPropArray( ULONG ulcPropCount, LPSPropValue rgPropVals, LPRECIPIENT_INFO * lppItem);
// Inserts a single RecipientInfo item into a list view
void AddSingleItemToListView( HWND hWndLV, LPRECIPIENT_INFO lpItem);
// Higher level function that takes a WAB entryid and puts it in the list view
// Calls most of the above functions (this function assumes caller has checked that
// the entryid is a valid wab entryid
BOOL AddWABEntryToListView( LPADRBOOK lpIAB, HWND hWndLV, ULONG cbEID, LPENTRYID lpEID, LPRECIPIENT_INFO * lppContentsList);
// Called by the NewContact menu items or buttons
HRESULT AddNewObjectToListViewEx( LPADRBOOK lpIAB, HWND hWndLV, HWND hWndTV, HTREEITEM hSelItem, LPSBinary lpsbContEID, ULONG ulObjectType, SORT_INFO * lpSortInfo, LPRECIPIENT_INFO * lppContentsList, LPFILETIME lpftLast, LPULONG lpcbEID, LPENTRYID * lppEID);
HRESULT AddEntryToContainer(LPADRBOOK lpIAB, ULONG ulObjType, //MAPI_DISTLIST or MAPI_ABCONT
ULONG cbGroupEntryID, LPENTRYID lpGroupEntryID, DWORD cbEID, LPENTRYID lpEID);
// Customizes and displays the context menu for various list views in the UI
int ShowLVContextMenu(int LV, // idicates which list view this is
HWND hWndLV, HWND hWndCombo, LPARAM lParam, // contains the mouse pos info when called from WM_CONTEXTMENU
LPVOID lpVoid, //misc stuff we want to pass in
LPADRBOOK lpIAB, HWND hWndTV);
// Gets the child's coordinates in client units
void GetChildClientRect( HWND hWndChild, LPRECT lprc);
// Finds the item in the LV matching the text in the EditBox
void DoLVQuickFind(HWND hWndEdit, HWND hWndLV);
// Does string searching of one within the other
BOOL SubstringSearch(LPTSTR pszTarget, LPTSTR pszSearch);
// Gets the props from a object
HRESULT HrGetPropArray( LPADRBOOK lpIAB, LPSPropTagArray lpPTA, ULONG cbEntryID, LPENTRYID lpEntryID, ULONG ulFlags, ULONG * lpcValues, LPSPropValue * lppPropArray);
// Calls CreateEntry for a new mailuser/distlist ...
HRESULT HrCreateNewEntry( LPADRBOOK lpIAB, //AdrBook Object
HWND hWndParent, //Hwnd for dialog
ULONG ulCreateObjectType, //MAILUSER or DISTLIST
ULONG cbEIDContainer, LPENTRYID lpEIDContainer, ULONG ulContObjectType, ULONG ulFlags, BOOL bShowBeforeAdding, ULONG cValues, LPSPropValue lpPropArray, ULONG *lpcbEntryID, LPENTRYID *lppEntryID );
HRESULT HrGetWABTemplateID( LPADRBOOK lpIAB, ULONG ulObjectType, ULONG * lpcbEID, LPENTRYID * lppEID);
BOOL CheckForCycle( LPADRBOOK lpAdrBook, LPENTRYID lpEIDChild, ULONG cbEIDChild, LPENTRYID lpEIDParent, ULONG cbEIDParent); //from distlist.c
// Used for sorting columns in various list views ...
void SortListViewColumn( LPIAB lpIAB, HWND hWndLV, //ListView Handle
int iSortCol, //Column to sort by
LPSORT_INFO lpSortInfo, BOOL bUseCurrentSettings); // Sort Info structre specific for each dialog
// Used for storing sort info for persistence between sessions.
BOOL ReadRegistrySortInfo(LPIAB lpIAB, LPSORT_INFO lpSortInfo); BOOL WriteRegistrySortInfo(LPIAB lpIAB, SORT_INFO SortInfo);
// Constructs a localized display name from individual pieces
BOOL SetLocalizedDisplayName( LPTSTR lpszFirstName, LPTSTR lpszMiddleName, LPTSTR lpszLastName, LPTSTR lpszCompanyName, LPTSTR lpszNickName, LPTSTR * lppszBuf, ULONG ulszBuf, BOOL bDNbyLN, LPTSTR lpTemplate, LPTSTR * lppszRetBuf);
// Callback for setting all the children windows to default GUI font ..
#define PARENT_IS_DIALOG 0 // We treat dialog children differently from window children
#define PARENT_IS_WINDOW 1 // so need these LPARAM values to differentiate..
STDAPI_(BOOL) SetChildDefaultGUIFont(HWND hWndChild, LPARAM lParam);
// Used for populating the Combo box with LDAP server names ...
HRESULT PopulateContainerList( LPADRBOOK lpIAB, HWND hWndLV, LPTSTR lpszSelection, LPTSTR lptszPreferredSelection);
// Used for freeing the associated structure in each container List Views
void FreeLVItemParam(HWND hWndLV);
// Gets the EntryID of the current container ...
void GetCurrentContainerEID(HWND hWndLV, LPULONG lpcbContEID, LPENTRYID * lppContEID);
// Shows the LDAP search dialog and creates a restriction
HRESULT HrShowSearchDialog(LPADRBOOK lpIAB, HWND hWndParent, LPADRPARM_FINDINFO lpAPFI, LPLDAPURL lplu, LPSORT_INFO lpSortInfo);
// Gets contents from an LDAP search and container
HRESULT HrSearchAndGetLDAPContents( LDAP_SEARCH_PARAMS LDAPsp, LPTSTR lpAdvFilter, HWND hWndList, LPADRBOOK lpIAB, SORT_INFO SortInfo, LPRECIPIENT_INFO * lppContentsList);
// Gets contents from a WAB local store container
HRESULT HrGetWABContents( HWND hWndList, LPADRBOOK lpIAB, LPSBinary lpsbContainer, SORT_INFO SortInfo, LPRECIPIENT_INFO * lppContentsList);
// Shows UI to modify current list of servers
HRESULT HrShowDirectoryServiceModificationDlg(HWND hWndParent, LPIAB lpIAB);
// Creates a new blank mailuser object
HRESULT HrCreateNewObject(LPADRBOOK lpIAB, LPSBinary lpsbContainer, ULONG ulObjectType, ULONG ulFlags, LPMAPIPROP * lppPropObj);
// Generic message box displayer ...
int ShowMessageBox(HWND hWndParent, int MsgId, int ulFlags); int __cdecl ShowMessageBoxParam(HWND hWndParent, int MsgId, int ulFlags, ...);
// atoi converter
int my_atoi(LPTSTR lpsz);
// Reads the default registry LDAP country name
BOOL ReadRegistryLDAPDefaultCountry(LPTSTR szCountry, DWORD cchCountry, LPTSTR szCountryCode, DWORD cchCountryCode);
#ifdef OLD_STUFF
// Fills a drop down list with the LDAP country names
void FillComboLDAPCountryNames(HWND hWndCombo); // Writes the defaule country name to the registry
BOOL WriteRegistryLDAPDefaultCountry(LPTSTR szCountry); #endif //OLD_STUFF
// Looks at Combo and ListView and determines which options to enable or disable
void GetCurrentOptionsState(HWND hWndCombo, HWND hWndLV, LPBOOL lpbState);
// Adds selected LDAP items to the Address Book
HRESULT HrAddToWAB( LPADRBOOK lpIAB, HWND hWndLV, LPFILETIME lpftLast);
// Coolbar creating function ...
HWND CreateCoolBar(LPBWI lpbwi, HWND hwndParent);
// Directory Services Proeprties property sheet
HRESULT HrShowDSProps(HWND hWndParent,LPTSTR ptszAcct, LPTSTR *pptszName, BOOL bAddNew);
// Saves the modeless dialog size and position to registry for persistence
BOOL WriteRegistryPositionInfo(LPIAB lpIAB, LPABOOK_POSCOLSIZE lpABPosColSize, LPTSTR szKey);
// Retrieves the modeless dialog size and position to registry for persistence
BOOL ReadRegistryPositionInfo(LPIAB lpIAB, LPABOOK_POSCOLSIZE lpABPosColSize, LPTSTR szKey);
// Processes the nmcustomdraw message from the list view
LRESULT ProcessLVCustomDraw(HWND hWnd, LPARAM lParam, BOOL bIsDialog);
// Quick Filter for list view
void DoLVQuickFilter( LPADRBOOK lpIAB, HWND hWndEdit, HWND hWndLV, LPSORT_INFO lpSortInfo, ULONG ulFlags, int nMinLen, LPRECIPIENT_INFO * lppContentsList);
// Sets the objects name in the properties window title
void SetWindowPropertiesTitle(HWND hDlg, LPTSTR lpszName);
void SCS(HWND hwndParent);
// Copies an items (partial) contents into the clipboard
HRESULT HrCopyItemDataToClipboard(HWND hWnd, LPADRBOOK lpIAB, HWND hWndLV);
// Gets the items data and puts it all into 1 long string
HRESULT HrGetLVItemDataString(LPADRBOOK lpIAB, HWND hWndLV, int iItemIndex, LPTSTR * lppszData);
LPTSTR FormatAllocFilter(int StringID1, LPCTSTR lpFilter1, int StringID2, LPCTSTR lpFilter2, int StringID3, LPCTSTR lpFilter3);
// Shellexecutes a "mailto" to selected entry ...
HRESULT HrSendMailToSelectedContacts(HWND hWndLV, LPADRBOOK lpIAB, int nExtEmail);
// Show certificate properties
//HRESULT HrShowCertProps(HWND hWndParent,
// LPCERT_DISPLAY_PROPS lpCDP);
// Shows the Help About dialog box
INT_PTR CALLBACK HelpAboutDialogProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
// Helps truncate DBCS strings correctly
ULONG TruncatePos(LPTSTR lpsz, ULONG nMaxLen);
// Local WAB search
HRESULT HrDoLocalWABSearch( IN HANDLE hPropertyStore, IN LPSBinary lpsbCont, IN LDAP_SEARCH_PARAMS LDAPsp, OUT LPULONG lpulFoundCount, OUT LPSBinary * lprgsbEntryIDs );
// Adds a non-wab entry to the wab
HRESULT HrEntryAddToWAB( LPADRBOOK lpIAB, HWND hWndParent, ULONG cbInputEID, LPENTRYID lpInputEID, ULONG * lpcbOutputEID, LPENTRYID * lppOutputEID);
// Deciphers a vCard File and then shows one off details on it
HRESULT HrShowOneOffDetailsOnVCard( LPADRBOOK lpIAB, HWND hWnd, LPTSTR szvCardFile);
// Checks if the current locale needs Ruby Support
BOOL bIsRubyLocale();
void FreeRecipList(LPRECIPIENT_INFO * lppList);
void SetSBinary(LPSBinary lpsb, ULONG cb, LPBYTE lpb);
HRESULT HrProcessLDAPUrl(LPADRBOOK lpIAB, HWND hWnd, ULONG ulFlags, LPTSTR szLDAPUrl, LPMAILUSER * lppMailUser);
HRESULT VCardRetrieve(LPADRBOOK lpIAB, HWND hWndParent, ULONG ulFlags, LPTSTR lpszFileName, LPSTR lpszBuf, LPMAILUSER * lppMailUser);
HRESULT VCardCreate( LPADRBOOK lpIAB, HWND hWndParent, ULONG ulFlags, LPTSTR lpszFileName, LPMAILUSER lpMailUser);
//void ShellUtil_RunClientRegCommand(HWND hwnd, LPCTSTR pszClient);
HRESULT HrShellExecInternetCall(LPADRBOOK lpIAB, HWND hWndLV);
// Open a vCard and add it to the wab based on file name
HRESULT OpenAndAddVCard(LPBWI lpbwi, LPTSTR szVCardFile);
// removes illegal chars from potential file names
void TrimIllegalFileChars(LPTSTR sz);
// DistList prop sheets
//
INT_PTR CreateDLPropertySheet( HWND hwndOwner, LPDL_INFO lpPropArrayInfo);
// Copies truncated version of Src to Dest
int CopyTruncate(LPTSTR szDest, LPTSTR szSrc, int nMaxLen);
// Adds an item's parent's eid to the item
HRESULT AddFolderParentEIDToItem(LPIAB lpIAB, ULONG cbFolderEntryID, LPENTRYID lpFolderEntryID, LPMAPIPROP lpMU, ULONG cbEID, LPENTRYID lpEID);
// Adds an item's eid to its parent
HRESULT AddItemEIDToFolderParent( LPIAB lpIAB, ULONG cbFolderEntryId, LPENTRYID lpFolderEntryId, ULONG cbEID, LPENTRYID lpEID);
// Adds the specified entry to the specified WAB Profile Folder
HRESULT AddEntryToFolder(LPADRBOOK lpIAB, LPMAPIPROP lpMailUser, ULONG cbFolderEntryId, LPENTRYID lpFolderEntryId, DWORD cbEID, LPENTRYID lpEID);
// imports another WAB file
HRESULT HrImportWABFile(HWND hWnd, LPADRBOOK lpIAB, ULONG ulFlags, LPTSTR lpszFileName);
LPRECIPIENT_INFO GetItemFromLV(HWND hWndLV, int iItem);
// determines what the UI icon for the entry should be..
int GetWABIconImage(LPRECIPIENT_INFO lpItem);
//
// Functions related to using Outlook store
BOOL SetRegistryUseOutlook(BOOL bUseOutlook); BOOL bUseOutlookStore(); BOOL bCheckForOutlookWABDll(LPTSTR lpszDllPath, DWORD cchDllPath);
// Functions used in managing rt-click extensions
void FreeActionItemList(LPIAB lpIAB); HRESULT HrUpdateActionItemList(LPIAB lpIAB); LRESULT ProcessActionCommands(LPIAB lpIAB, HWND hWndLV, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void AddExtendedMenuItems(LPADRBOOK lpIAB, HWND hWndLV, HMENU hMenuAction, BOOL bUpdateStatus, BOOL bAddSendMailItems); void AddExtendedSendMailToItems(LPADRBOOK lpIAB, HWND hWndLV, HMENU hMenuAction, BOOL bAddItems); void GetContextMenuExtCommandString(LPIAB lpIAB, int uCmd, LPTSTR sz, ULONG cbsz);
// Stuff to do with GetMe / SetMe
HRESULT HrGetMeObject(LPADRBOOK lpIAB, ULONG ulFlags, DWORD * lpdwAction, SBinary * lpsbEID, ULONG_PTR ulParam); HRESULT HrSetMeObject(LPADRBOOK lpIAB, ULONG ulFlags, SBinary sbEID, ULONG_PTR ulParam);
// Stuff to do with the print and abort import dialog
void CreateShowAbortDialog(HWND hWndParent, int idsTitle, int idsIcon, int ProgMax, int ProgCurrent); void CloseAbortDlg(); BOOL CALLBACK FAbortProc(HDC hdcPrn, INT nCode); void SetPrintDialogMsg(int idsMsg, int idsFormat, LPTSTR lpszMsg); INT_PTR CALLBACK FAbortDlgProc(HWND hwnd, UINT msg,WPARAM wp, LPARAM lp); BOOL bTimeToAbort();
HRESULT HrSaveHotmailSyncInfoOnDeletion(LPADRBOOK lpAdrBook, LPSBinary lpEID); HRESULT HrAssociateOneOffGroupMembersWithContacts(LPADRBOOK lpAdrBook, LPSBinary lpsbGroupEID, LPDISTLIST lpDistList);
// Stuff used in adding extension property pages to the WAB Prop Sheets
//
typedef HRESULT (_ADDPROPPAGES_) (LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam, int * lpnPage); typedef _ADDPROPPAGES_ FAR *LPFNADDPAGES;
BOOL CALLBACK AddPropSheetPageProc( HPROPSHEETPAGE hpage, LPARAM lParam ); void FreePropExtList(LPEXTDLLINFO lpList); HRESULT GetExtDisplayInfo(LPIAB lpIAB, LPPROP_ARRAY_INFO lpPropArrayInfo, BOOL fReadOnly, BOOL bMailUser); BOOL ChangedExtDisplayInfo(LPPROP_ARRAY_INFO lpPropArrayInfo, BOOL bChanged); void FreeExtDisplayInfo(LPPROP_ARRAY_INFO lpPropArrayInfo);
#ifdef COLSEL_MENU
BOOL ColSel_PropTagToString( ULONG ulPropTag, LPTSTR lpszString, ULONG cchSize); #endif // COLSEL_MENU
BOOL IsWindowOnScreen(LPRECT lprc); // determines if window is onscreen
BOOL IsHTTPMailEnabled(LPIAB lpIAB);
/*********************************************************************/
#ifdef WIN16 // Need WINAPI for 16 bits
typedef BOOL WINAPI (_INITCOMMONCONTROLSEX_)(LPINITCOMMONCONTROLSEX lpiccex); typedef _INITCOMMONCONTROLSEX_ FAR *LP_INITCOMMONCONTROLSEX;
typedef HPROPSHEETPAGE WINAPI (_CREATEPROPERTYSHEETPAGE_)(PROPSHEETPAGE * lppsp); typedef _CREATEPROPERTYSHEETPAGE_ FAR * LP_CREATEPROPERTYSHEETPAGE; typedef BOOL WINAPI (_IMAGELIST_DRAW_)(HIMAGELIST himl, int i, HDC hdcDst,int x, int y, UINT fStyle); typedef _IMAGELIST_DRAW_ FAR * LPIMAGELIST_DRAW;
typedef BOOL WINAPI (_IMAGELIST_DESTROY_)(HIMAGELIST himl); typedef _IMAGELIST_DESTROY_ FAR * LPIMAGELIST_DESTROY;
typedef HIMAGELIST WINAPI (_IMAGELIST_LOADIMAGE_)(HINSTANCE hi, LPTSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags); typedef _IMAGELIST_LOADIMAGE_ FAR *LPIMAGELIST_LOADIMAGE;
typedef COLORREF WINAPI (_IMAGELIST_SETBKCOLOR_)(HIMAGELIST himl, COLORREF clrBk); typedef _IMAGELIST_SETBKCOLOR_ FAR *LPIMAGELIST_SETBKCOLOR;
typedef BOOL WINAPI (_TRACKMOUSEEVENT_)(LPTRACKMOUSEEVENT lpEventTrack); typedef _TRACKMOUSEEVENT_ FAR *LP_TRACKMOUSEEVENT;
typedef int WINAPI (_PROPERTYSHEET_)(LPCPROPSHEETHEADER lppsph); typedef _PROPERTYSHEET_ FAR *LPPROPERTYSHEET; #else // WIN16
typedef BOOL (_INITCOMMONCONTROLSEX_)(LPINITCOMMONCONTROLSEX lpiccex); typedef _INITCOMMONCONTROLSEX_ FAR *LP_INITCOMMONCONTROLSEX;
/*
typedef HPROPSHEETPAGE (_CREATEPROPERTYSHEETPAGE_)(PROPSHEETPAGE * lppsp); typedef _CREATEPROPERTYSHEETPAGE_ FAR * LP_CREATEPROPERTYSHEETPAGE; */ typedef HPROPSHEETPAGE (_CREATEPROPERTYSHEETPAGE_A_)(LPCPROPSHEETPAGEA lppsp); typedef HPROPSHEETPAGE (_CREATEPROPERTYSHEETPAGE_W_)(LPCPROPSHEETPAGEW lppsp);
typedef _CREATEPROPERTYSHEETPAGE_A_ FAR * LP_CREATEPROPERTYSHEETPAGE_A; typedef _CREATEPROPERTYSHEETPAGE_W_ FAR * LP_CREATEPROPERTYSHEETPAGE_W; typedef BOOL (_IMAGELIST_DRAW_)(HIMAGELIST himl, int i, HDC hdcDst,int x, int y, UINT fStyle); typedef _IMAGELIST_DRAW_ FAR * LPIMAGELIST_DRAW;
typedef BOOL (_IMAGELIST_DESTROY_)(HIMAGELIST himl); typedef _IMAGELIST_DESTROY_ FAR * LPIMAGELIST_DESTROY;
/*
typedef HIMAGELIST (_IMAGELIST_LOADIMAGE_)(HINSTANCE hi, LPCSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags); typedef _IMAGELIST_LOADIMAGE_ FAR *LPIMAGELIST_LOADIMAGE; */
typedef HIMAGELIST (_IMAGELIST_LOADIMAGE_A_)(HINSTANCE hi, LPCSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags); typedef HIMAGELIST (_IMAGELIST_LOADIMAGE_W_)(HINSTANCE hi, LPCWSTR lpbmp,int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags);
typedef _IMAGELIST_LOADIMAGE_A_ FAR *LPIMAGELIST_LOADIMAGE_A; typedef _IMAGELIST_LOADIMAGE_W_ FAR *LPIMAGELIST_LOADIMAGE_W;
typedef COLORREF (_IMAGELIST_SETBKCOLOR_)(HIMAGELIST himl, COLORREF clrBk); typedef _IMAGELIST_SETBKCOLOR_ FAR *LPIMAGELIST_SETBKCOLOR;
typedef BOOL (_TRACKMOUSEEVENT_)(LPTRACKMOUSEEVENT lpEventTrack); typedef _TRACKMOUSEEVENT_ FAR *LP_TRACKMOUSEEVENT;
/*
typedef int (_PROPERTYSHEET_)(LPCPROPSHEETHEADER lppsph); typedef _PROPERTYSHEET_ FAR *LPPROPERTYSHEET; */ typedef INT_PTR (_PROPERTYSHEET_A_)(LPCPROPSHEETHEADERA lppsphA); typedef INT_PTR (_PROPERTYSHEET_W_)(LPCPROPSHEETHEADERW lppsphW);
typedef _PROPERTYSHEET_A_ FAR *LPPROPERTYSHEET_A; typedef _PROPERTYSHEET_W_ FAR *LPPROPERTYSHEET_W; #endif
BOOL InitCommonControlLib(void); ULONG DeinitCommCtrlClientLib(void); BOOL __fastcall IsSpace(LPTSTR lpChar); /*********************************************************************/
// The following messages are used for shutting down the WAB when the user changes to modify the locale
// so that the new set of WAB resources can be brought in ..
// These are used in conjunction with MLLoadLibrary
#define PUI_OFFICE_COMMAND (WM_USER + 0x0901)
#define PLUGUI_CMD_SHUTDOWN 0 // wParam value
#define PLUGUI_CMD_QUERY 1 // wParam value
#define OFFICE_VERSION_9 9 // standardized value to return for Office 9 apps
typedef struct _PLUGUI_INFO { unsigned uMajorVersion : 8; // Used to indicate App;s major version number
unsigned uOleServer : 1; // BOOL, TRUE if this is an OLE process
unsigned uUnused : 23; // not used
} PLUGUI_INFO;
typedef union _PLUGUI_QUERY { UINT uQueryVal; PLUGUI_INFO PlugUIInfo; } PLUGUI_QUERY; // End of Pluggable UI section
#endif
|