1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585 |
- //
- //
- //////////////////////////////////////////////////////////////////////////////
- //
- // Copyright 2015 Autodesk, Inc. All rights reserved.
- //
- // Use of this software is subject to the terms of the Autodesk license
- // agreement provided at the time of installation or download, or which
- // otherwise accompanies this software in either electronic or hard copy form.
- //
- //////////////////////////////////////////////////////////////////////////////
- //
- //
- // dcapi.idl : IDL source for Design Center API
- //
- // NOTES:
- // The methods of IAcDcContentBrowser and IAcDcContentView have disp ids
- // assigned even though they are not dual or derived from IDispatch
- // currently. This is purely for future possibilities.
- //
- // For all VARIANT parameters, the valid data member is given in
- // parenthesis to indicate the valid member. For example: HRESULT
- // AddPaletteItem(... VARIANT varImageIndex // index of image(VT_I4)..);
- // indicates lVal member of varImageIndex would have valid value.
- //
- // A typical component that wants to provide its content to DesignCenter
- // implements IAcDcContentView and optionally IAcDcContentFinder. Some
- // miscellaneous aspects that a component may have to do:
- //
- // 1. Write a comparison function to sort the items that it gives to DC. This
- // function will be called for each item when DC sorts the items.
- // 2. Correctly handle the errors by returning valid HRESULTs. It may want to
- // return specific custom error codes by implementing an error object that
- // implements IErrorInfo.
- //
- import "oaidl.idl";
- import "ocidl.idl";
- #include "dcconst.idl"
- #include "dcdispid.h"
- [
- object,
- uuid(9F8AB2D8-D57F-11D1-A92C-0060B0A1F6BB),
- helpstring("IAcDcContentBrowser Interface"),
- pointer_default(unique)
- ]
- // IAcDcContentBrowser interface
- interface IAcDcContentBrowser : IUnknown
- {
- //
- // Adds an item to DesignCenter palette.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // bstrText
- // A BSTR that specifies the item text.
- // varImageIndex
- // int nImageIndex = varImageIndex.lVal;
- //
- // A VARIANT that specifies the image index of the icon in the component's
- // image list. The component should have called SetPaletteImageList or
- // SetNavigatorImageList on the given IAcDcContentBrowser object of
- // DesignCenter in Initialize to set its small and large image lists.
- // pvarItemData
- // A pointer to a VARIANT that specifies the component-defined data that
- // has be associated with the item. The component can provide any
- // 32-bit data for the data. This is typically used in sorting the
- // items in the palette with a component defined comparison function.
- // The data contained in this VARIANT is meaningful only to the
- // component. The memory for this has to be allocated on heap so that
- // the data is available at the time of sorting. DesignCenter will
- // supply this pointer back to the component in DeleteItemData method
- // when all the items provided by the component are being deleted. The
- // component should delete all the memory allocated for this variable in
- // that method.
- // pvarAddedItemIndex
- // int nAddedItemIndex = pvarAddedItemIndex->lVal;
- //
- // A pointer a VARIANT that will contain the index of the added item.
- //
- // Components can use this method to add an item to DesignCenter palette. The
- // items will show up with item texts with appropriate icons provided for each
- // item. This function returns the index of the added item in pvarAddedItemIndex.
- //
- [id(DISPID_IAcDcContentBrowser_AddPaletteItem), helpstring("method AddPaletteItem")]
- HRESULT AddPaletteItem(
- [in, string] BSTR bstrText // text of item
- , [in] VARIANT varImageIndex // index of image(VT_I4)
- , [in] VARIANT *pvarItemData // item specific data
- , [out, retval] VARIANT *pvarAddedItemIndex // index of added item(VT_I4)
- );
- //
- // Adds a node in the navigator of DesignCenter. This is valid only in case of
- // components which participate in custom view of DesignCenter.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varhRelativeNode
- // HTREEITEM hItem = (HTREEITEM)(varhRelativeNode.lVal);
- //
- // A VARIANT that specifies the HTREEITEM of a relative node with reference to
- // which DesignCenter should create a new navigator node in the tree.
- // sRelationship
- // A flag that is taken from dcNavNodeRelation enumeration that indicates what
- // type of relationship does the new node would have with reference to
- // varhRelativeNode.
- // bstrText
- // A BSTR that specifies the text of the node.
- // varIconIndex
- // int nIconIndex = varIconIndex.lVal;
- //
- // A VARIANT that specifies the index of the unselected state icon to be used
- // for the new node.
- // varSelectedIconIndex
- // int nSelIconIndex = varSelectedIconIndex.lVal;
- //
- // A VARIANT that specifies the index of the selected state icon to be used for
- // the new node.
- // varbMayhaveChildren
- // bool bMayHaveChildren = varbMayhaveChildren.boolVal;
- //
- // A VARIANT to indicate if the new node may have children or not. If the
- // component plans to add children nodes to the newly created node, this
- // VARIANT should have a TRUE value in boolVal.
- // pvarAddedNodeID
- // HTREEITEM hAddedNode = (HTREEITEM)pvarAddedNodeID->lVal;
- //
- // A pointer a VARIANT that contains the handle to HTREEITEM of the newly
- // created node. This node handle can be used to create other nodes.
- //
- // Components which participate in custom content view typically call this to add
- // nodes to the navigator view of DesignCenter. This function returns a handle to
- // the added node in pvarAddedNodeID.
- //
- [id(DISPID_IAcDcContentBrowser_AddNavigatorNode), helpstring("method AddNavigatorNode")]
- HRESULT AddNavigatorNode(
- [in] VARIANT varhRelativeNode // relative node id(VT_I4)
- , [in] dcNavNodeRelation sRelationship // relationship to relative(lVal)
- , [in, string] BSTR bstrText // text of the node
- , [in] VARIANT varIconIndex // icon index(VT_I4)
- , [in] VARIANT varSelectedIconIndex // selected icon index(VT_I4)
- , [in] VARIANT varbMayhaveChildren // possibly a non-leaf node(VT_BOOL)
- , [out, retval] VARIANT *pvarAddedNodeID // added node id(VT_I4)
- );
- //
- // Gets the handle to the window of DesignCenter frame. This handle is READ-ONLY -
- // it should never be destroyed.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // pvarhFrameWindow
- // HWND hDCFrame = (HWND)(pvarhFrameWindow->lVal);
- //
- // A pointer to a VARIANT that contains the handle to DesignCenter frame
- // window.
- //
- // Components should never destroy the handle returned by this function. This
- // handle is typically used when a component wants to display a context menu for
- // any item that it is displaying in DesignCenter. This function returns the
- // Windows handle of DesignCenter frame in pvarhFrameWindow.
- //
- [id(DISPID_IAcDcContentBrowser_GetDCFrameWindow), helpstring("method GetDCFrameWindow")]
- HRESULT GetDCFrameWindow(
- // handle to DC frame window(VT_I4); typecast it to HWND
- [out, retval] VARIANT *pvarhFrameWindow
- );
- //
- // Sets the description text for an item selected in palette.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // bstrDescription
- // A BSTR that specifies the description of an item that is selected in the
- // palette of DesignCenter
- //
- // Components use this function to show the description of a selected item in the
- // description pane of DesignCenter. The components need to cache the selected
- // item during IAcDcContentView::PaletteMouseDown or
- // IAcDcContentView::PaletteMouseUp notifications. When the user opens the
- // description pane in DesignCenter, the description of the component item would be
- // shown.
- //
- [id(DISPID_IAcDcContentBrowser_SetItemDescription), helpstring("method SetItemDescription")]
- HRESULT SetItemDescription(
- [in, string] BSTR bstrDescription // description
- );
- //
- // Sets the image list which contain icons for items in the palette; this image
- // list will be used by DesignCenter when displaying the images of the contents
- // supplied by a component with calls to AddPaletteItem.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varhImageList
- // HIMAGELIST hImageList = (HImageList)(varhImageList.lVal);
- //
- // A VARIANT that contains a handle to a small/large image list depending on
- // the flag in varbLarge. If varbLarge is TRUE, then the handle is expected to
- // be of large image list of the component. If varbLarge is FALSE, then the
- // handle is expected to be of small image list of the component.
- // varbLarge
- // bool bLargeImageList = varbLarge.boolVal;
- //
- // A VARIANT that specifies whether varhImageList is that of a small or a large
- // image list.
- //
- // Components should call this function before adding any items to the palette of
- // DesignCenter by calls to AddPaletteItem. This enables DesignCenter to fetch the
- // correct icon indices for the items when it displays them.
- //
- [id(DISPID_IAcDcContentBrowser_SetPaletteImageList), helpstring("method SetPaletteImageList")]
- HRESULT SetPaletteImageList(
- [in] VARIANT varhImageList // HIMAGELIST of image list(VT_I4)
- , [in] VARIANT varbLarge // is the image list large?(VT_BOOL)
- );
- //
- // Sets the image list to be used for icons of nodes in the navigator; valid only
- // for components which display their contents in the custom view of DesignCenter.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varhImageList
- // HIMAGELIST hImageList = (HImageList)(varhImageList.lVal);
- //
- // A VARIANT that contains a handle to small image list that contains icons for
- // nodes that the component has added in the DesignCenter custom view.
- // pvarImageListOffset
- // int nImageOffset = pvarImageListOffset->lVal;
- //
- // A VARIANT that will contain the offset of the first icon in varhImageList in
- // the small image list maintained by DesignCenter
- //
- // Components should call this function before adding any nodes to custom view of
- // DesignCenter. The icons in the imagelist would be used to display the nodes in
- // DesignCenter custom view. This function returns the offset of the first icon in
- // varhImageList in pvarImageListOffset. This function has to be called
- // only once(in IAcDcContentView::SetImageLists method).
- //
- [id(DISPID_IAcDcContentBrowser_SetNavigatorImageList), helpstring("method SetNavigatorImageList")]
- HRESULT SetNavigatorImageList(
- [in] VARIANT varhImageList, // HIMAGELIST of image list(VT_I4)
- [out, retval] VARIANT *pvarImageListOffset // offset of the component image
- // list in global image list(VT_I4)
- );
- //
- // Sets the palette of DC to allow selection of multiple items.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varbMultiSelect
- // bool bMultiSelect = (bool)varbMultiSelect.boolVal;
- //
- // A VARIANT that contains a boolean to indicate whether multiple selection
- // should be allowed or not
- //
- // Components can call this function to allow multiple selections of items in the
- // palette of DC. By default, the palette of DC allows selection of only one item
- // at a time.
- //
- [id(DISPID_IAcDcContentBrowser_SetPaletteMultiSelect), helpstring("method SetPaletteMultiSelect")]
- HRESULT SetPaletteMultiSelect(
- [in] VARIANT varbMultiSelect // should allow multi selection(VT_BOOL)
- );
- //
- // Inserts a column in the detail view of palette of DC.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varIndex
- // int nColumnIndex = varIndex.lVal;
- //
- // A VARIANT which contains the index of the column to insert. The column
- // indices should begin with 1.
- // bstrText
- // A BSTR which contains the name of the column. This name would appear as a
- // header of the column being inserted in the detail view of DC.
- // eFormat
- // A flag taken from dcPalColAlignment enums to indicate how the inserted
- // column is to be justified.
- //
- // Components can call this function to insert a column in the details view of DC
- // palette. This column is typically used to show the subitems of an item in DC
- // palette using SetPaletteSubItem().
- //
- [id(DISPID_IAcDcContentBrowser_InsertPaletteColumn), helpstring("method InsertPaletteColumn")]
- HRESULT InsertPaletteColumn(
- [in] VARIANT varIndex // column index(VT_I4)
- , [in] BSTR bstrText // column text
- , [in] dcPalColAlignment eFormat // format: left, right, center aligned(VT_I4)
- );
- //
- // Deletes all the items which are currently shown in DC palette.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // Components can call this function in response to either
- // IAcDcContentView::Refresh() call by DC or any other situation that requires a
- // modification of items that are shown in DC palette. Components should call
- // RestorePaletteSelection after they fill all the new items in DC palette. A
- // typical sequence would be:
- // ...
- // // delete all the items in the palette
- // m_pContentBrowser->DeleteAllPaletteItems();
- // // fill the palette with new items in DC palette(component defined)
- // FillDCPalette(); // refer to an example in NavigatorNodeClick
- // // ask DC to restore the previously selected item
- // m_pContentBrowser->RestorePaletteSelection();
- //
- [id(DISPID_IAcDcContentBrowser_DeleteAllPaletteItems), helpstring("method DeleteAllPaletteItems")]
- HRESULT DeleteAllPaletteItems();
- //
- // Gets the current node text of the current view of DC.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // bstrText
- // A pointer to a BSTR that would contain the text of the currently selected
- // node. The component is responsible for freeing the memory allocated for
- // this variable by calling ::SysFreeString function.
- //
- // Components can call this function to get the complete qualified path of the
- // currently selected node text in the current view of DC. A component typically
- // calls this to make sure the contents of a node for which it is going to refresh
- // the items in is the same as the one it expects. The text is returned in
- // bstrText.
- //
- [id(DISPID_IAcDcContentBrowser_GetSelectedNavNodeText), helpstring("method GetSelectedNavNodeText")]
- HRESULT GetSelectedNavNodeText([out, string] BSTR* bstrText);
- //
- // Gets the current mode of DC.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // psMode
- // A pointer to a dcContentMode enum that indicates the view mode that DC is
- // currently in.
- //
- // Components can call this function to get the current view mode of DC. There are
- // three views of DC -- desktop, open drawings and custom view. The enum values
- // of dcContentMode indicate this modes. The current mode is returned in psMode.
- //
- [id(DISPID_IAcDcContentBrowser_GetCurrentViewMode), helpstring("method GetCurrentViewMode")]
- HRESULT GetCurrentViewMode(
- [out, retval] dcContentMode *psMode // DC mode
- );
- //
- // Sets the subitems of an already existing palette item in DC.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varItemIndex
- // int nItemIndex = varItemIndex.lVal;
- //
- // A VARIANT that contains the index of the item for which the sub item is
- // being set.
- // varColumnIndex
- // int nColumnIndex = varColumnIndex.lVal;
- //
- // A VARIANT that contains the column index the sub item belongs to.
- // bstrSubItemText
- // A BSTR that contains the text of the sub item. This text appears in the
- // column varColumnIndex in details view of DC palette.
- //
- // Components call this function to add sub items to items already added in DC
- // palette via AddPaletteItem(). These sub items will appear in separate columns
- // in detail view of DC.
- //
- // set the subitems of a palette item; this can be used to add sub items to
- // an already existing item via calls to AddPaletteItem.
- //
- [id(DISPID_IAcDcContentBrowser_SetPaletteSubItem), helpstring("method SetPaletteSubItem")]
- HRESULT SetPaletteSubItem(
- [in] VARIANT varItemIndex // item index
- , [in] VARIANT varColumnIndex // column index
- , [in] BSTR bstrSubItemText // sub item text
- );
- //
- // Sorts the palette items according to a component given function.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varpfnFunction
- // PFNLVCOMPARE pfnCompareFunc = (PFNLVCOMPARE)(varpfnFunction.lVal);
- //
- // A VARIANT that contains a 32-bit pointer to the address of a function that
- // has the following signature:
- //
- // int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM
- // lParamSort);
- //
- // This function(CompareFunc) is a function that is similar to Windows List
- // control comparison function.
- //
- // The comparison function must return a negative value if the first item
- // should precede the second, a positive value if the first item should follow
- // the second, or zero if the two items are equivalent.
- //
- // The lParam1 and lParam2 parameters specify the item data for the two items
- // being compared. The lParamSort parameter is the same as varSortData
- // explained next.
- //
- // See NavigatorNodeClick for an example of this function.
- // varSortData
- // A VARIANT that contains the component defined 32-bit data that is meaningful
- // to the comparison function. This is typically used to indicate whether the
- // sorting needs to happen in ascending or descending manner. But it can also
- // be a pointer to a structure that contains this sorting information as well
- // as the column index for which the sorting has to happen.
- //
- // Components can call this function to ask DC to sort the items that are displayed
- // in DC palette.
- //
- [id(DISPID_IAcDcContentBrowser_SortPaletteItems), helpstring("method SortPaletteItems")]
- HRESULT SortPaletteItems(
- [in] VARIANT varpfnFunction // pointer to function(PFNLVCOMPARE)(VT_I4)
- , [in] VARIANT varSortData // sort data(VT_I4)
- );
- //
- // Restores previously selected item selection in the palette.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // This can be used to ask the DesignCenter to restore the selection state of a
- // previously selected item. If a component clears/refreshes its contents in DC
- // palette, it can ask the DC to try to restore the previous selection since DC
- // maintains a cache of previous selection. This function should be called after
- // filling the palette with items because this would update the status bar of DC of
- // the selected item.
- //
- [id(DISPID_IAcDcContentBrowser_RestorePaletteSelection), helpstring("method RestorePaletteSelection")]
- HRESULT RestorePaletteSelection();
- //
- // Gets the handle to the status bar of DC frame; READ-ONLY.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // pvarhStatusBar
- // HWND hDCStatusBar = (HWND)(pvarhStatusBar->lVal);
- //
- // A pointer to a VARIANT that contains the handle to DC status bar window.
- //
- // Components can call this function to obtain the Windows handle to the status bar
- // of DC. This handle should never be destroyed. The returned handle can be used
- // in updating the status bar during preview/description display to keep the user
- // informed of the task the component is performing. The handle is returned in
- // pvarhStatusBar.
- //
- [id(DISPID_IAcDcContentBrowser_GetDCStatusBar), helpstring("method GetDCStatusBar")]
- HRESULT GetDCStatusBar(
- // handle to DC status bar window(VT_I4); typecast it to HWND
- [out, retval] VARIANT *pvarhStatusBar
- );
- //
- // Gets the DC panes' info.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // ePane
- // A flag from dcPane enum to describe the pane for which the information is
- // requested.
- // pvarWidth
- // int nWidth = pvarWidth->lVal;
- //
- // A pointer to a VARIANT that contains the width of the requested pane in
- // pixels.
- // pvarHeight
- // int nHeight = pvarHeight->lVal;
- //
- // A pointer to a VARIANT that contains the height of the requested pane in
- // pixels.
- //
- // This function can be used to get the width and height of DC panes. DC has three
- // panes: navigator pane, preview pane and description pane. Returns width and height
- // and height of requested pane in pvarWidth and pvarHeight.
- //
- // An example:
- // ...
- // dcPane ePane = dcPreview;
- // _variant_t varWidth, varHeight;
- // HRESULT hRes = m_spContentBrowser->GetPaneInfo(ePane, &varWidth, &varHeight);
- // ...
- //
- [id(DISPID_IAcDcContentBrowser_GetPaneInfo), helpstring("method GetPaneInfo")]
- HRESULT GetPaneInfo(
- [in] dcPane ePane // pane for which info is needed
- , [out] VARIANT *pvarWidth // width of the pane (VT_I4)
- , [out] VARIANT *pvarHeight // height of the pane (VT_I4)
- );
- //
- // Sets the DC palette view type.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // eViewType
- // A flag from dcPalViewType enum that contains the view type of the palette to
- // be set.
- //
- // Components can call this function to change the view types of palette of DC.
- // The view types of the palette are list, details, small and large icon view.
- //
- [id(DISPID_IAcDcContentBrowser_SetPaletteViewType), helpstring("method SetPaletteViewType")]
- HRESULT SetPaletteViewType(
- [in] dcPalViewType eViewType // palette view type
- );
- //
- // Makes the DC navigate to the given path in given view.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // eViewMode
- // A flag from dcContentMode enum that indicates the view mode the DC is
- // requested to navigate to.
- // bstrPath
- // A BSTR that contains the exact fully qualified path that is meaningful in
- // eViewMode. Fully qualified paths are different in different modes of DC: in
- // desktop, they are of the form, "<actual file/directory path on disk>"; in
- // open drawings, the are of the from, "Open Drawings\<name of dwg>\<name of
- // content type>;in custom view, they are of the form, "<application
- // name>\<application defined subnode>\...".
- //
- // For example, in desktop, the path can be "c:\winnt"; in open drawings, the
- // path can be "open drawings\foo.dwg\Blocks"; in custom view, the path can be
- // "aec\doors".
- //
- // Components can request DC to navigate to a valid given path in a given view
- // using this function. This function is currently supported only for custom view.
- //
- [id(DISPID_IAcDcContentBrowser_NavigateTo), helpstring("method NavigateTo")]
- HRESULT NavigateTo(
- [in] dcContentMode eViewMode
- , [in] BSTR bstrPath
- );
- }; // interface IAcDcContentBrowser
- [
- object,
- uuid(625cecb0-a722-11d1-9715-92a923000000),
- helpstring("IAcDcContentView interface"),
- pointer_default(unique)
- ]
- // IAcDcContentView interface
- interface IAcDcContentView : IUnknown
- {
- //
- // Called by DC to initialize the registered component.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varBrowser
- // IUnknown *pBrowser = varBrowser.punkVal;
- //
- // A pointer to IUnknown interface of the browser object implemented by DC.
- // varReserved
- // Reserved parameter.
- //
- // DesignCenter calls this function first to initialize the component. It
- // also gives the IUnknown pointer of the browser object that implements
- // IAcDcContentBrowser interface in varBrowser. This browser interface
- // pointer should be cached by the component and can be used to interact
- // with DesignCenter by calling methods in IAcDcContentBrowser interface.
- //
- //
- [id(DISPID_IAcDcContentView_Initialize), helpstring("Initializes the content")]
- HRESULT Initialize(
- [in] VARIANT varBrowser // Back pointer to IAcDcContentBrowser(VT_UNKNOWN)
- , [in] VARIANT varReserved // Reserved
- );
- //
- // Requested by DC to the component to ask it to set its image lists on DC.
- // The image lists provided by the component will be used by the DC palette
- // when it displays the contents of the component.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // DesignCenter calls this function immediately after
- // IAcDcContentView::Initialize. The component should call
- // IAcDcContentBrowser::SetPaletteImageList with its small and large image
- // lists that were created in IAcDcContentView::Initialize.
- //
- // In addition to this, the components that participate in custom view mode
- // of DC should call IAcDcContentBrowser::SetNavigatorImageList to set the
- // image list to be used for navigator nodes in custom view.
- //
- [id(DISPID_IAcDcContentView_SetImageLists), helpstring("Sets the image lists")]
- HRESULT SetImageLists();
- //
- // DesignCenter calls this function whenever "Refresh" context menu in the
- // palette background of DC is chosen by the user.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // If applicable, the component should clear the palette, refill the palette
- // with changed/new items, and then restore the selection of previously
- // selected item by calling appropriate methods on the browser object. The
- // node for which the component is displaying the content should have been
- // cached in IAcDcContentView::NavigatorNodeClick method and the content of
- // that node should be refilled in response to this function.
- //
- [id(DISPID_IAcDcContentView_Refresh), helpstring("Refreshes the content")]
- HRESULT Refresh();
- //
- // Called by DC when a navigator node is expanding.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varhNode
- // HTREEITEM hExpandingNode = (HTREEITEM)(varhNode.lVal);
- //
- // A VARIANT that contains the handle to the navigator node which needs
- // expanding.
- // bstrNodeText
- // A BSTR that contains the fully qualified path of the expanding node.
- //
- // Currently, this applies only to components which are participating in
- // custom view of DC.
- // The component is expected to create children of the node that is expanding.
- //
- [id(DISPID_IAcDcContentView_NavigatorNodeExpanding), helpstring("Event fired when a navigator node is clicked")]
- HRESULT NavigatorNodeExpanding(
- [in] VARIANT varhNode // expanding node id(VT_I4)
- , [in, string] BSTR bstrNodeText // full text of the node
- );
- //
- // Called by DC when a navigator node is collapsing.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varhNode
- // HTREEITEM hCollapsingNode = (HTREEITEM)(varhNode.lVal);
- //
- // A VARIANT that contains the handle to the navigator node which needs
- // collapsing.
- // bstrNodeText
- // A BSTR that contains the fully qualified path of the collapsing node.
- //
- // Currently, this applies only to components which are participating in
- // custom view of DC.
- //
- [id(DISPID_IAcDcContentView_NavigatorNodeCollapsing), helpstring("Event fired when a navigator node is collapsed")]
- HRESULT NavigatorNodeCollapsing(
- [in] VARIANT varhNode // collapsing node id(VT_I4)
- , [in, string] BSTR bstrNodeText // full text of the node
- );
- //
- // Called by DC when the content of a node needs to be filled in the palette.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varhNode
- // HTREEITEM hClickedNode = (HTREEITEM)(varhNode.lVal);
- //
- // A VARIANT that contains the handle to the navigator node that is clicked by
- // the user.
- // bstrNodeText
- // A BSTR that contains the fully qualified path of the node.
- //
- // DC calls this function on the component whenever:
- //
- // 1. the user single/double clicks(with left mouse button) or chooses
- // "Explore" context
- // menu item on a file which the component has registered as a container(in
- // desktop and open drawings mode).
- // 2. the user single/double clicks(with left mouse button) or chooses
- // "Explore" context
- // menu item on a place holder which the component has registered as a place
- // holder of a file(in desktop and open drawings mode).
- // 3. the user single/double clicks(with left mouse button) or chooses "Explore"
- // context menu item by right clicking on a shortcut file(.lnk extension) that
- // points to a file which the component has registered as a container(in desktop
- // view).
- // 4. the user single/double clicks(with left mouse button) in a node that is
- // registered and handled by the component(in custom view).
- //
- // A component typically does the following:
- // 1. Optionally enables the multi-item selection of palette items in DC by calling
- // IAcDcContentBrowser::SetPaletteMultiSelect.
- // 2. Cache the fully qualified path of the node.
- // 3. Iterates through a collection of items that it wants to display in DC
- // palette.
- // 4. Creates some data to associate with each item that it can use to sort
- // the items when asked by DC.
- // 5. Calls IAcDcContentBrowser::AddPaletteItem for each item.
- // 6. Calls IAcDcContentBrowser::SortPaletteItems to sort all the items it
- // added.
- //
- // Components which participate in both desktop and open drawings mode of DC should
- // always make sure that, at the time of adding the items, the DC mode is indeed in
- // the mode that they are expecting DC to be in by calling
- // IAcDcContentBrowser::GetCurrentViewMode since the user may have changed the
- // modes between Autocad event calls(for example, reactor notification calls).
- //
- [id(DISPID_IAcDcContentView_NavigatorNodeClick), helpstring("Event fired when a navigator node is clicked")]
- HRESULT NavigatorNodeClick(
- [in] VARIANT varhNode // node id(VT_I4)
- , [in, string] BSTR bstrNodeText // full text of the node
- );
- //
- // Called by DC when the mouse is released in the navigator.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varhNode
- // HTREEITEM hClickedNode = (HTREEITEM)(varhNode.lVal);
- //
- // A VARIANT that contains the handle to the navigator node on which the mouse
- // has been released.
- // bstrNodeText
- // A BSTR that contains the fully qualified path of the clicked node.
- // varX
- // int nMouseX = varX.lVal;
- //
- // A VARIANT that contains the x coordinate(in screen coordinates, in pixels)
- // of the mouse when it was released.
- // varY
- // int nMouseY = varY.lVal;
- //
- // A VARIANT that contains the y coordinate(in screen coordinates, in pixels)
- // of the mouse when it was released.
- //
- // Components can respond to this event by popping up a context menu that is
- // meaningful for the given node at the mouse coordinates supplied. Currently,
- // this event is only sent to components participating in custom view of DC.
- //
- [id(DISPID_IAcDcContentView_NavigatorMouseUp), helpstring("Event fired when the mouse is released in navigator")]
- HRESULT NavigatorMouseUp(
- [in] VARIANT varhNode // node id(VT_I4)
- , [in, string] BSTR bstrNodeText // full text of the node
- , [in] VARIANT varX // x position of mouse(VT_I4)
- , [in] VARIANT varY // y position of mouse(VT_I4)
- );
- //
- // Called by DC when a palette item is clicked(single click) by the user.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // bstrItemText
- // A BSTR that contains fully qualified path of the item that is clicked.
- //
- // If applicable, components should respond to this by displaying the description
- // of the clicked item by calling IAcDcContentBrowser::SetItemDescription. The
- // component should first check if the description pane of DC is exposed by calling
- // IAcDcContentBrowser::GetPaneInfo before calling
- // IAcDcContentBrowser::SetItemDescription. Also, the preview pane should be
- // rendered with the visual thumbnail sketch of the clicked item. However, this is
- // done via RenderPreviewWindow call from DC. DC calls RenderPreviewWindow on the
- // component whenever the preview pane is up and needs rendering and there is a
- // selected item in the palette.
- //
- [id(DISPID_IAcDcContentView_PaletteItemClick), helpstring("Event fired when palette items are selected")]
- HRESULT PaletteItemClick(
- [in, string] BSTR bstrItemText // full text of the item
- );
- //
- // Called by DC when a palette item is double clicked. A typical component
- // may initiate an "Insert" type of action in AutoCAD's current active
- // document.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // bstrItemText
- // A BSTR that contains fully qualified path of the item that is clicked.
- //
- // Components should do an "insert" action in AutoCAD for the item that is double
- // clicked.
- //
- [id(DISPID_IAcDcContentView_PaletteItemDblClick), helpstring("Event fired when a palette item is double clicked")]
- HRESULT PaletteItemDblClick(
- [in, string] BSTR bstrItemText // full text of item
- );
- //
- // Called by DC when the user has clicked the right mouse button on item(s) in the
- // palette.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varButton
- // int nButton = varButton.lVal;
- //
- // A VARIANT that contains a value that indicates which button was pressed.
- // The component should only respond if nButton == 2(right mouse button).
- // varItemTexts
- // SAFEARRAY *psaItemTexts = varItemTexts.parray;
- //
- // A VARIANT that contains a pointer to a SAFEARRAY of BSTRs that represent the
- // names of the items being selected in the palette of DC when the mouse up
- // happened.
- // varX
- // int nMouseX = varX.lVal;
- //
- // A VARIANT that contains the x coordinate(in screen coordinates, in pixels)
- // of the mouse when it was released.
- //
- // varY
- // int nMouseY = varY.lVal;
- //
- // A VARIANT that contains the y coordinate(in screen coordinates, in pixels)
- // of the mouse when it was released.
- //
- // If applicable, the component should display a context menu in response to this
- // event. It is recommended that a window owned by the component be made the owner
- // of the context menu for displaying the help texts for each menu item by calling
- // SetWindowText on DC status bar which can be obtained by calling
- // IAcDcContentBrowser::GetDcstatusbar.
- //
- [id(DISPID_IAcDcContentView_PaletteColumnClick), helpstring("Event fired when a column is clicked in the palette")]
- HRESULT PaletteColumnClick(
- [in] VARIANT varIndex // index of column(VT_I4)
- );
- //
- // Called by DC when the user has clicked the right mouse button on item(s) in the
- // palette.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varButton
- // int nButton = varButton.lVal;
- //
- // A VARIANT that contains a value that indicates which button was pressed.
- // The component should only respond if nButton == 2(right mouse button).
- // varItemTexts
- // SAFEARRAY *psaItemTexts = varItemTexts.parray;
- //
- // A VARIANT that contains a pointer to a SAFEARRAY of BSTRs that represent the
- // names of the items being selected in the palette of DC when the mouse up
- // happened.
- // varX
- // int nMouseX = varX.lVal;
- //
- // A VARIANT that contains the x coordinate(in screen coordinates, in pixels)
- // of the mouse when it was released.
- //
- // varY
- // int nMouseY = varY.lVal;
- //
- // A VARIANT that contains the y coordinate(in screen coordinates, in pixels)
- // of the mouse when it was released.
- //
- // If applicable, the component should display a context menu in response to this
- // event. It is recommended that a window owned by the component be made the owner
- // of the context menu for displaying the help texts for each menu item by calling
- // SetWindowText on DC status bar which can be obtained by calling
- // IAcDcContentBrowser::GetDcstatusbar.
- //
- [id(DISPID_IAcDcContentView_PaletteMouseUp), helpstring("Event fired when the mouse is released in palette")]
- HRESULT PaletteMouseUp(
- [in] VARIANT varButton // button that is pressed(VT_I4)
- , [in] VARIANT varItemTexts // item texts (VT_ARRAY)
- , [in] VARIANT varX // x position of mouse(VT_I4)
- , [in] VARIANT varY // y position of mouse(VT_I4)
- );
- //
- // Called by DC when the mouse is pressed down in the palette.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varButton
- // int nButton = varButton.lVal;
- //
- // A VARIANT that contains a value that indicates which button was pressed.
- // bstrItemText
- // A BSTR that contains the fully qualified path of the item.
- // varX
- // int nMouseX = varX.lVal;
- //
- // A VARIANT that contains the x coordinate(in screen coordinates, in pixels)
- // of the mouse when it was pressed.
- // varY
- // int nMouseY = varY.lVal;
- //
- // A VARIANT that contains the y coordinate(in screen coordinates, in pixels)
- // of the mouse when it was pressed.
- //
- // Components can take whatever action that is meaningful in response to this
- // event.
- //
- [id(DISPID_IAcDcContentView_PaletteMouseDown), helpstring("Event fired when the mouse is pressed in palette")]
- HRESULT PaletteMouseDown(
- [in] VARIANT varButton // button that is pressed(VT_I4)
- , [in, string] BSTR bstrItemText // full text of the item
- , [in] VARIANT varX // x position of mouse(VT_I4)
- , [in] VARIANT varY // y position of mouse(VT_I4)
- );
- //
- // Called by DC when the preview window size is changing or is redrawn and an item
- // is selected in the palette of DC.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // bstrItemText
- // A BSTR that contains the fully qualified path of the selected item in the
- // palette of DC.
- // varhPreviewWindow
- // HWND hDCPreviewWnd = (HWND)(varhPreviewWindow.lVal);
- //
- // A VARIANT that contains the Windows handle to the preview window of DC.
- //
- // If applicable, components should render the visual representation of the
- // selected item in the preview pane of DC. The handle to the preview window
- // itself is provided as a parameter. This handle can be used to determine the
- // extent of the rendering and for rendering itself on a device context created for
- // this window.
- //
- [id(DISPID_IAcDcContentView_RenderPreviewWindow), helpstring("Event fired when the preview window is redrawn")]
- HRESULT RenderPreviewWindow(
- [in, string] BSTR bstrItemText // full text of the item
- , [in] VARIANT varhPreviewWindow // HWND of preview window(VT_I4)
- );
- //
- // Called by DC when a right mouse click happens in preview window.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varButton
- // int nButton = varButton.lVal;
- //
- // A VARIANT that contains a value that indicates which button was pressed.
- // The component should only respond if nButton == 2(right mouse button).
- // varX
- // int nMouseX = varX.lVal;
- //
- // A VARIANT that contains the x coordinate(in screen coordinates, in pixels)
- // varY
- // int nMouseY = varY.lVal;
- //
- // A VARIANT that contains the y coordinate(in screen coordinates, in pixels)
- //
- // If applicable, the component should display a context menu in response to this
- // event. The component is responsible for handling the menu selections.
- //
- [id(DISPID_IAcDcContentView_PreviewMouseUp), helpstring("Event fired when the mouse is relased in preview")]
- HRESULT PreviewMouseUp(
- [in] VARIANT varButton // button that is pressed(VT_I4)
- , [in] VARIANT varX // x position of mouse(VT_I4)
- , [in] VARIANT varY // y position of mouse(VT_I4)
- );
- //
- // Called by DC when the user begins to drag item(s) from DC palette.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varbstrItemTexts
- // SAFEARRAY *psaItemTexts = varItemTexts.parray;
- //
- // A VARIANT that contains a pointer to a SAFEARRAY of BSTRs that represent the
- // names of the items being selected in the palette of DC when the mouse up
- // happened.
- // varX
- // int nMouseX = varX.lVal;
- //
- // A VARIANT that contains the x coordinate(in screen coordinates, in pixels)
- // varY
- // int nMouseY = varY.lVal;
- //
- // A VARIANT that contains the y coordinate(in screen coordinates, in pixels)
- //
- // A component should call DoDragDrop to start the drag and drop and should
- // handle the OLE drag and drop until the process of dragging is over.
- //
- [id(DISPID_IAcDcContentView_PaletteBeginDrag), helpstring("Event fired when items are dragged in palette")]
- HRESULT PaletteBeginDrag(
- [in] VARIANT varbstrItemTexts // array of item texts(VT_ARRAY)
- , [in] VARIANT varX // x mouse position(VT_I4)
- , [in] VARIANT varY // y mouse position(VT_I4)
- );
- //
- // Called by DC to request the component for releasing its interface pointer
- // addrefed by the component in IAcDcContentBrowser::Initialize.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // Component is expected to release the IAcDcContentBrowser pointer in this method.
- //
- [id(DISPID_IAcDcContentView_ReleaseBrowser), helpstring("Request to release IAcDcContentBrowser")]
- HRESULT ReleaseBrowser();
- //
- // Called by DC when user right clicks on a container file in the palette.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varhMenu
- // HMENU hDCContextMenu = (HMENU)(varhMenu.lVal);
- //
- // A VARIANT that contains the Windows handle to a context menu DC is going to
- // display for the selected container file. This is read-only. Components
- // should not destroy this handle.
- // varIndex
- // int nIndex = varIndex.lVal;
- //
- // A VARIANT that contains the zero-based index at which to insert the first
- // menu item.
- // varCmdFirst
- // int nCmdFirst = varCmdFirst.lVal;
- //
- // A VARIANT that contains the minimum value for a menu item identifier.
- // varCmdLast
- // int nCmdLast = varCmdLast.lVal;
- //
- // A VARIANT that contains the maximum value for a menu item identifier.
- // varItemTexts
- // SAFEARRAY *psaItemTexts = varItemTexts.parray;
- //
- // A VARIANT that contains a pointer to a SAFEARRAY of BSTRs that represent the
- // names of the items being selected in the palette of DC when the mouse up
- // happened.
- //
- // This event is applicable only to files which are registered as containers by the
- // component. It is not applicable to right click event on item(s) which are
- // displayed by a component in the DC palette. A component is expected to add its
- // own menu items(if it chooses to) which are meaningful to the container file to
- // the given context menu. When the user selects a menu item that the component
- // has put in the context menu, InvokeCommand method is called.
- //
- [id(DISPID_IAcDcContentView_QueryContextMenu), helpstring("Queries for a context menu")]
- HRESULT QueryContextMenu(
- [in] VARIANT varhMenu // handle of DC menu
- , [in] VARIANT varIndex // index of first menu item
- , [in] VARIANT varCmdFirst // min. value of menu item id
- , [in] VARIANT varCmdLast // max. value of menu item id
- , [in] VARIANT varItemTexts // item texts
- );
- //
- // Called by DC when a context menu item put in by the component in response to
- // QueryContextMenu is selected by user.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varMenuItemID
- // int nMenuID = varMenuItemID.lVal;
- //
- // A VARIANT that contains the menu identifier of the item the user selected.
- //
- // Components should respond to this event if they responded to QueryContextMenu
- // method by providing a menu item of their own.
- //
- [id(DISPID_IAcDcContentView_InvokeCommand), helpstring("Handler for context menu item")]
- HRESULT InvokeCommand(
- [in] VARIANT varMenuItemID // menu ID
- );
- //
- // Called by DC to know if the given item can be expanded.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // bstrItemText
- // A BSTR that contains the fully qualified path of the item.
- // pvarIsExpandable
- // bool bIsExpandable = (VARIANT_BOOL)(pvarIsExpandable->boolVal);
- //
- // A VARIANT that contains a pointer to a boolean to indicate if the item is
- // expandable.
- //
- // DC calls this to see if an item is expandable in custom view mode. This is
- // applicable only for components who participate in custom view mode of DC.
- //
- [id(DISPID_IAcDcContentView_IsExpandable), helpstring("Ask if an item can be expanded")]
- HRESULT IsExpandable(
- [in, string] BSTR bstrItemText, // full text of item
- [out, retval] VARIANT *pvarIsExpandable // 0 or 1 (VT_I4)
- );
- //
- // Called by DC for a 32x32 image for a container file. This could be a
- // preview or thumbnail icon of a file that the component chooses to store
- // or generate.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // bstrFileName
- // A BSTR that contains the fully qualified path of the file.
- // pvarhLargeImage
- // HBITMAP hLargeImage = (HBITMAP)(pvarhLargeImage->lVal);
- //
- // A VARIANT that contains a handle to a bitmap(32x32) for the given container
- // file.
- //
- // If the component has a 32x32 thumbnail preview image of the given file, it
- // should return S_OK with pvarhLargeImage->lVal set to HBITMAP of the given file.
- // If the component doesn't have a bitmap for the given file, then it should return
- // S_FALSE. If the component doesn't have image for any file, it should return
- // E_NOTIMPL.
- //
- [id(DISPID_IAcDcContentView_GetLargeIcon), helpstring("Request to give large icon")]
- HRESULT GetLargeImage(
- [in] BSTR bstrFileName // full file name
- , [in, out] VARIANT *pvarhLargeImage // HBITMAP of file (VT_I4)
- );
- //
- // Called by DC to get small image list of a container content.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // bstrFileName
- // A BSTR that contains the fully qualified path of the file.
- // pvarhImageList
- // HIMAGELIST hSmallImageList = (HIMAGELIST)(pvarhImageList->lVal);
- //
- // A VARIANT that contains the handle to small image list for the container
- // file bstrFileName.
- //
- // Components should return the handle to the small image list for the container
- // file. This function is currently not used by DC.
- //
- [id(DISPID_IAcDcContentView_GetSmallImageListForContent), helpstring("Request to get the small image list for a given container")]
- HRESULT GetSmallImageListForContent(
- [in] BSTR bstrFileName // full file name
- , [out, retval] VARIANT *pvarhImageList // small HIMAGELIST (VT_I4)
- );
- //
- // Called by DC to get small image list of a container content.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // bstrFileName
- // A BSTR that contains the fully qualified path of the file.
- // pvarhImageList
- // HIMAGELIST hSmallImageList = (HIMAGELIST)(pvarhImageList->lVal);
- //
- // A VARIANT that contains the handle to large image list for the container
- // file bstrFileName.
- //
- // Components should return the handle to the large image list for the container
- // file. This function is currently not used by DC.
- //
- [id(DISPID_IAcDcContentView_GetLargeImageListForContent), helpstring("Request to get the large image list for a given container")]
- HRESULT GetLargeImageListForContent(
- [in] BSTR bstrFileName // full file name
- , [out, retval] VARIANT *pvarhImageList // large HIMAGELIST (VT_I4)
- );
- //
- // Called by DC to obtain language-independent command string or the help
- // text for a context menu item; this is not used at this time by DC.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // varMenuID
- // int nMenuID = varMenuID.lVal;
- //
- // A VARIANT that contains the menu identifier.
- // dcMenuInfoFlag
- // A flag taken from dcMenuInfoFlag to indicate the information to retrieve.
- // Not used currently.
- // pvarReserved
- // Reserved.
- // pbstrName
- // A BSTR that would contain the null-terminated string.
- //
- [id(DISPID_IAcDcContentView_GetCommandString), helpstring("Request to get the command string or the help text for a context menu item")]
- HRESULT GetCommandString(
- [in] VARIANT varMenuID // menu id
- , [in] dcMenuInfoFlag // which information is required
- , [out] VARIANT *pvarReserved // reserved, handlers must ignore this
- , [out] BSTR *pbstrName // menu information
- );
- //
- // Deletes the component-defined data associated with each item by the
- // component in either the navigator or palette of DesignCenter.
- //
- // * Returns NOERROR on success or an OLE-defined error on failure.
- //
- // dcSrc
- // A flag taken from dcItemDataSource enum that indicates the source of
- // the item data - either the navigator or the palette.
- // varItemDataArray
- // VARIANT varArray = varItemDataArray.parray;
- //
- // A VARIANT that contains a SAFEARRAY of DWORDs which point to a
- // VARIANT that contains component-defined data.
- //
- // DesignCenter calls this function when it is deleting the items provided
- // by the component in either the palette or the navigator. It supplies the
- // data associated with all the items in a SAFEARRAY of DWORDs. These
- // DWORDs actually point to the memory for a VARIANT that contains the
- // actual data that the component supplied when it called AddPaletteItem.
- // This memory for the VARIANT has to be freed by the component for each
- // item in the SAFEARRAY. It is recommended that this memory be allocated
- // by using COM memory allocator interface IMalloc or the OLE-implemented
- // memory task manager.
- //
- [id(DISPID_IAcDcContentView_DeleteItemData), helpstring("Request to delete data associated with each item in navigator or palette")]
- HRESULT DeleteItemData(
- [in] dcItemDataSource dcSrc // navigator or palette
- , [in] VARIANT varItemDataArray // SAFEARRAY of DWORDs (V_I4)
- );
- }; // interface IAcDcContentView
- // structure for passing informations on found items, from the IcontentFinder implementation
- // to the IAcDcContentFinderSite implementation
- typedef struct {
- LPCOLESTR lpObjectName; // name of the object
- LPCOLESTR lpObjectType; // type of the object (ie: "AutoCAD Drawing")
- LPCOLESTR lpCustomValue; // value of the found property, if the property to search is not the default
- LPCOLESTR lpLocation; // object location (usually a folder name for file based object)
- FILETIME ftLastWriteTime; // timestamp of the object
- DWORD nFileSizeHigh; // object size (high order dword)
- DWORD nFileSizeLow; // object size (low order dword)
- short nBitmapIndex; // index of the bitmap which should be used with this object
- short nObjectType; // type of the returned object. ceFinderObjectTypes enum value
- short nObjectTypeEx; // extra information about the object type. custom defined. reserved for future use
- } FINDOBJECTINFO;
- // IUnknown interface for IAcDcContentFinderSite
- //
- [
- object,
- uuid(F6F24140-EC52-11d1-B9C7-0060B0B5E151),
- helpstring("IAcDcContentFinderSite Interface"),
- pointer_default(ref)
- ]
- interface IAcDcContentFinderSite : IUnknown
- {
- //
- // Called by a component during its search process to communicate to the finder site
- // informations about each objet it finds.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // lpObjectInfo
- // Pointer to a FINDOBJECTINFO structure wich contains all the informations about
- // an object.
- // pbContinue
- // Pointer to a boolean value set by the finder site. This value is
- // true if the search should continue and false if the component should
- // stop the search.
- //
- //
- [helpstring("Callback for object information")]
- HRESULT SetObjectInfo (
- [in] FINDOBJECTINFO* lpObjectInfo, // informations about the object
- [out, retval] boolean* pbContinue
- );
- //
- // Called by a component to communicate a message to the finder site while a search
- // is in progress
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // lpMessage
- // Message string
- // pbContinue
- // Pointer to a boolean value set by the finder site. This value is
- // true if the search should continue and false if the component should
- // stop the search.
- //
- // Called by an IAcDcContentFinder implementation to display a message in
- // the finder dialog status bar . Most likely the component will communicate
- // the current folder it is searching in
- //
- [helpstring("Callback for messages")]
- HRESULT SetMessage (
- [in, string] LPCOLESTR lpMessage, // message
- [out, retval] boolean* pbContinue
- );
- //
- // Called by a component in response to a EnumeratePropertyValues() request.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // lpPropertyValue
- // Value that the component communicates to the finder site for the requested
- // property
- // pbContinue
- // Pointer to a boolean value set by the finder site. This value is
- // true if the search should continue and false if the component should
- // stop the search.
- //
- // The finder site will call EnumeratePropertyValues() in the component if a
- // property has been specified in the advanced tab. This apply to the
- // current object that the component returns to the finder site using
- // SetObjectInfo(). When EnumeratePropertyValues() is called the component
- // is supposed to enter a loop and return each value of the requested
- // property using SetPropertyValue()
- //
- [helpstring("Callback for property values")]
- HRESULT SetPropertyValue (
- [in, string] LPCOLESTR lpPropertyValue,
- [out, retval] boolean* pbContinue
- );
- //
- // Called by a component to communicates the 16x16 bitmap that it associates
- // with a given type. The bitmap will be displayed in the search result
- // list of the finder dialog.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // lpTypeName
- // Name of the object type
- // lpPictureDisp
- // Pointer to the picture created by the component
- // pnBitmapIndex
- // Pointer to an index which is attributed by the finder site for the
- // specified image. The component should cache this index and
- // communicates it to the finder site in FINDOBJECTINFO.nBitmapIndex
- // when calling SetObjectInfo()
- //
- [helpstring("Set the searched type bitmap")]
- HRESULT SetTypeBitmap (
- [in, string] LPCOLESTR lpTypeName,
- [in] IPictureDisp* lpPictureDisp,
- [out] short *pnBitmapIndex
- );
- //
- // Called by a component to ask if the search should continue
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // pbContinue
- // Pointer to a boolean value set by the finder site. This value is
- // true if the search should continue and false if the component should
- // stop the search.
- //
- // This method should be called often because it allows the finder dialog to
- // process its Windows messages. Thus calling it often make the finder
- // dialog more responsive to the user input.
- //
- [helpstring("Ask for continuing. Also allow yield")]
- HRESULT QueryContinueFind (
- [out, retval] boolean* pbContinue
- );
- }; // IAcDcContentFinderSite
- [
- object,
- #if !defined(_WIN64) && !defined (_AC64)
- uuid(B7EE59AE-E9F7-11D1-B9C2-0060B0B5E151),
- #else
- uuid(3B98CCC9-AC84-437D-80FE-1F8199024F18),
- #endif
- helpstring("IAcDcContentFinder Interface"),
- pointer_default(unique)
- ]
- // IUnknown interface for IAcDcContentFinder
- //
- interface IAcDcContentFinder : IUnknown
- {
- //
- // Called by DC to initialize a finder component.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // pClient
- // Back pointer to the finder site. This pointer can be cached by the
- // component and used to call methods of the IAcDcContentFinderSite
- // interface.
- //
- // This method is called by the finder client when it instantiate a finder
- // component for the first time. It's only called once, even if the
- // component supports more than one object types.
- //
- [helpstring("One time initialization for the finder")]
- HRESULT Initialize (
- [in] IAcDcContentFinderSite* pClient
- );
- //
- // Called by DC to start a search.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // pClient
- // Back pointer to the finder site. This pointer can be cached by the
- // component and used to call methods of the IAcDcContentFinderSite
- // interface.
- // lpTypeName
- // Name of the object type to search for.
- // lpDirName
- // Folder where the search must start. This value is supplied for
- // component information: the finder site set the current directory to
- // the folder specified, so the component does not have to take care of
- // it
- // lpFilter
- // Filter specified by the user. In most cases this value is not used
- // by the component. A component knows what type of file(s) search in
- // for the given type, so the filter is ignored.
- // bRecurse
- // Tells if the search should include the subfolders
- // lpPropertyRequested
- // Name of the property specified in the 'In the Field(s)' combobox of
- // the main tab
- // bAdvPropertySearch
- // Reserved. Internal use only
- //
- // The component is supposed to enter an enumeration loop. The component
- // from this loop will: - call SetObjectInfo() for each object found of the
- // given type - call regularly QueryContinueFind() in order to let the user
- // stop the search. The call to QueryContinueFind() must be frequent enough
- // to have a quick response to the user request to stop the search.
- //
- // Note: the finder site pointer is also received in the Initialize()
- // method. If cached at this time, it can be ignored in this function
- //
- [helpstring("Start the enumeration of the objects of a given type")]
- HRESULT EnumerateObjects (
- [in] IAcDcContentFinderSite* pClient,
- [in, string] LPCOLESTR lpTypeName,
- [in, string] LPCOLESTR lpDirName,
- [in, string] LPCOLESTR lpFilter,
- [in] boolean bRecurse,
- [in, string] LPCOLESTR lpPropertyRequested,
- [in] boolean bAdvPropertySearch
- );
- //
- // Called by DC to enumerate the values of an advanced property.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // lpPropertyName
- // name of the advanced property
- //
- // This method is called if an aditionnal search criteria has been specified
- // in the advanced tab. In this case, it is called immediately for each
- // object in response to a call to SetObjectInfo() by the component.
- //
- [helpstring("Advanced property value enumeration")]
- HRESULT EnumeratePropertyValues (
- [in, string] LPCOLESTR lpPropertyName // property name
- );
- //
- // Called by DC to ask if it supports multi selection in the result list for
- // a given type.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // lpTypeName
- // Name of the type
- // pbEnable
- // pointer to a boolean value set by the component to indicate if multiselection
- // is supported
- //
- // If the component replies that the multiselection is enabled, the user
- // will be able to drag and drop or invoke commands involoving multiple
- // objects from multiple files in a single operation
- //
- [helpstring("Ask the component for multiselection")]
- HRESULT IsMultiselectionEnabled (
- [in, string] LPCOLESTR lpTypeName,
- [out, retval] boolean* pbEnable
- );
- //
- // Called by DC to process a selected contextual menu command
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // nCmdId
- // Command identifier. The command value is one of dcFinderCommands
- // (see dcconst.idl)
- // pNames
- // Table of object names involved in the command. Can contain more than
- // one name if the component indicated that multiselection is enabled
- // in the Finder for the given type
- // nObjectType
- // Object type. Reserved for internal use. Object type is implicit. It
- // is the last type the user has requested a search on.
- //
- [helpstring("Pass a command to be executed by the component")]
- HRESULT InvokeCommand (
- [in] int nCmdId,
- [in] SAFEARRAY(BSTR) *pNames,
- [in] int nObjectType
- );
- //
- // Called by DC to indicates that the component should stop any search in
- // progress immediately. If the component keeps database(s) open during the
- // search, these databases should be closed by this function
- //
- [helpstring("Interrupt a search. Searching should stop immediatly")]
- HRESULT Interrupt ();
- //
- // Called by DC to allow a component to add/remove/modify options in the
- // contextual menu. This method is called just before the contextual menu
- // is displayed
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // hMenu
- // HMENU hWinMenuHandle = (HMENU)hMenu
- // handle of the contextual menu
- //
- // The options that the menu contains can be handled usinfg the command ID.
- // Command ID in the menu have the idl values (see dcFinderCommands in
- // dconst.idl) + an offset value of 100 This command is implicitely invoked
- // on the last object type for which a search has been made.
- //
- [helpstring("Give to the component an opportunity to modify the popup menu before it is displayed")]
- HRESULT InitPopupMenu (
- [in] INT_PTR hMenu
- );
- //
- // Called by DC to get the location of an object, as it appears in the
- // DesignCenter tree and palette. This is used to perfom the 'Load into
- // Palette' command.
- //
- // * Returns NOERROR if successful, or an OLE-defined error value otherwise
- //
- // lpObjectName
- // the name of the object as the component supplied it in
- // FINDOBJECTINFO.lpObjectName
- // lpFolderName
- // the name of the object as the component supplied it in
- // FINDOBJECTINFO.lpLocation
- // lpType
- // the name of the object as the component supplied it in
- // FINDOBJECTINFO.lpObjectType
- // lpTreeLocation
- // pointer to an LPOLESTR. This OLE string is allocated by the
- // component, and will be freed by DC. The string must contains the
- // location of the given object, as it appears in the DC tree.
- // lpPaletteItemName
- // pointer to an LPOLESTR. This OLE string is allocated by the
- // component, and will be freed by DC. The string must contains the
- // name of the object, as it appears in the DC palette.
- //
- // In most cases, especially from components displayed in the desktop view,
- // the name returned in lpPaletteItemName will be the name received in
- // lpObjectName. The location returned in lpTreeLocation will be the folder
- // received in lpFolderName if the object is a file, and the folder name +
- // the placeholder name if the object appears in a virtual folder
- //
- HRESULT QueryObjectLocation (
- [in] LPCOLESTR lpObjectName,
- [in] LPCOLESTR lpFolderName,
- [in] LPCOLESTR lpType,
- [in, out] LPOLESTR *lpTreeLocation,
- [in, out] LPOLESTR *lpPaletteItemName
- );
- }; // IAcDcContentFinder
|