📄 afxctl.h
字号:
STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
STDMETHOD(Update)();
STDMETHOD(IsUpToDate)();
STDMETHOD(GetUserClassID)(CLSID*);
STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
STDMETHOD(SetExtent)(DWORD, LPSIZEL);
STDMETHOD(GetExtent)(DWORD, LPSIZEL);
STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
STDMETHOD(Unadvise)(DWORD);
STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
STDMETHOD(SetColorScheme)(LPLOGPALETTE);
END_INTERFACE_PART(OleObject)
// IViewObjectEx
BEGIN_INTERFACE_PART(ViewObject, IViewObjectEx)
INIT_INTERFACE_PART(COleControl, ViewObject)
STDMETHOD(Draw)(DWORD, LONG, void*, DVTARGETDEVICE*, HDC, HDC,
LPCRECTL, LPCRECTL, BOOL (CALLBACK*)(DWORD), DWORD);
STDMETHOD(GetColorSet)(DWORD, LONG, void*, DVTARGETDEVICE*,
HDC, LPLOGPALETTE*);
STDMETHOD(Freeze)(DWORD, LONG, void*, DWORD*);
STDMETHOD(Unfreeze)(DWORD);
STDMETHOD(SetAdvise)(DWORD, DWORD, LPADVISESINK);
STDMETHOD(GetAdvise)(DWORD*, DWORD*, LPADVISESINK*);
STDMETHOD(GetExtent) (DWORD, LONG, DVTARGETDEVICE*, LPSIZEL);
STDMETHOD(GetRect)(DWORD, LPRECTL);
STDMETHOD(GetViewStatus)(DWORD*);
STDMETHOD(QueryHitPoint)(DWORD, LPCRECT, POINT, LONG, DWORD*);
STDMETHOD(QueryHitRect)(DWORD, LPCRECT, LPCRECT, LONG, DWORD*);
STDMETHOD(GetNaturalExtent)(DWORD, LONG, DVTARGETDEVICE*, HDC,
DVEXTENTINFO*, LPSIZEL);
END_INTERFACE_PART(ViewObject)
// IDataObject
BEGIN_INTERFACE_PART(DataObject, IDataObject)
INIT_INTERFACE_PART(COleControl, DataObject)
STDMETHOD(GetData)(LPFORMATETC, LPSTGMEDIUM);
STDMETHOD(GetDataHere)(LPFORMATETC, LPSTGMEDIUM);
STDMETHOD(QueryGetData)(LPFORMATETC);
STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC, LPFORMATETC);
STDMETHOD(SetData)(LPFORMATETC, LPSTGMEDIUM, BOOL);
STDMETHOD(EnumFormatEtc)(DWORD, LPENUMFORMATETC*);
STDMETHOD(DAdvise)(LPFORMATETC, DWORD, LPADVISESINK, LPDWORD);
STDMETHOD(DUnadvise)(DWORD);
STDMETHOD(EnumDAdvise)(LPENUMSTATDATA*);
END_INTERFACE_PART_STATIC(DataObject)
// IOleInPlaceObject
BEGIN_INTERFACE_PART(OleInPlaceObject, IOleInPlaceObjectWindowless)
INIT_INTERFACE_PART(COleControl, OleInPlaceObject)
STDMETHOD(GetWindow)(HWND*);
STDMETHOD(ContextSensitiveHelp)(BOOL);
STDMETHOD(InPlaceDeactivate)();
STDMETHOD(UIDeactivate)();
STDMETHOD(SetObjectRects)(LPCRECT, LPCRECT);
STDMETHOD(ReactivateAndUndo)();
STDMETHOD(OnWindowMessage)(UINT msg, WPARAM wParam, LPARAM lparam,
LRESULT* plResult);
STDMETHOD(GetDropTarget)(IDropTarget **ppDropTarget);
END_INTERFACE_PART(OleInPlaceObject)
// IOleInPlaceActiveObject
BEGIN_INTERFACE_PART(OleInPlaceActiveObject, IOleInPlaceActiveObject)
INIT_INTERFACE_PART(COleControl, OleInPlaceActiveObject)
STDMETHOD(GetWindow)(HWND*);
STDMETHOD(ContextSensitiveHelp)(BOOL);
STDMETHOD(TranslateAccelerator)(LPMSG);
STDMETHOD(OnFrameWindowActivate)(BOOL);
STDMETHOD(OnDocWindowActivate)(BOOL);
STDMETHOD(ResizeBorder)(LPCRECT, LPOLEINPLACEUIWINDOW, BOOL);
STDMETHOD(EnableModeless)(BOOL);
END_INTERFACE_PART(OleInPlaceActiveObject)
// IOleCache
BEGIN_INTERFACE_PART(OleCache, IOleCache)
INIT_INTERFACE_PART(COleControl, OleCache)
STDMETHOD(Cache)(LPFORMATETC, DWORD, LPDWORD);
STDMETHOD(Uncache)(DWORD);
STDMETHOD(EnumCache)(LPENUMSTATDATA*);
STDMETHOD(InitCache)(LPDATAOBJECT);
STDMETHOD(SetData)(LPFORMATETC, STGMEDIUM*, BOOL);
END_INTERFACE_PART_STATIC(OleCache)
// IOleControl
BEGIN_INTERFACE_PART(OleControl, IOleControl)
INIT_INTERFACE_PART(COleControl, OleControl)
STDMETHOD(GetControlInfo)(LPCONTROLINFO pCI);
STDMETHOD(OnMnemonic)(LPMSG pMsg);
STDMETHOD(OnAmbientPropertyChange)(DISPID dispid);
STDMETHOD(FreezeEvents)(BOOL bFreeze);
END_INTERFACE_PART(OleControl)
// IProvideClassInfo2
BEGIN_INTERFACE_PART(ProvideClassInfo, IProvideClassInfo2)
INIT_INTERFACE_PART(COleControl, ProvideClassInfo)
STDMETHOD(GetClassInfo)(LPTYPEINFO* ppTypeInfo);
STDMETHOD(GetGUID)(DWORD dwGuidKind, GUID* pGUID);
END_INTERFACE_PART_STATIC(ProvideClassInfo)
// ISpecifyPropertyPages
BEGIN_INTERFACE_PART(SpecifyPropertyPages, ISpecifyPropertyPages)
INIT_INTERFACE_PART(COleControl, SpecifyPropertyPages)
STDMETHOD(GetPages)(CAUUID*);
END_INTERFACE_PART_STATIC(SpecifyPropertyPages)
// IPerPropertyBrowsing
BEGIN_INTERFACE_PART(PerPropertyBrowsing, IPerPropertyBrowsing)
INIT_INTERFACE_PART(COleControl, PerPropertyBrowsing)
STDMETHOD(GetDisplayString)(DISPID dispid, BSTR* lpbstr);
STDMETHOD(MapPropertyToPage)(DISPID dispid, LPCLSID lpclsid);
STDMETHOD(GetPredefinedStrings)(DISPID dispid,
CALPOLESTR* lpcaStringsOut, CADWORD* lpcaCookiesOut);
STDMETHOD(GetPredefinedValue)(DISPID dispid, DWORD dwCookie,
VARIANT* lpvarOut);
END_INTERFACE_PART_STATIC(PerPropertyBrowsing)
// IPropertyNotifySink for font updates (not exposed via QueryInterface)
BEGIN_INTERFACE_PART(FontNotification, IPropertyNotifySink)
INIT_INTERFACE_PART(COleControl, FontNotification)
STDMETHOD(OnChanged)(DISPID dispid);
STDMETHOD(OnRequestEdit)(DISPID dispid);
END_INTERFACE_PART_STATIC(FontNotification)
// IQuickActivate
BEGIN_INTERFACE_PART(QuickActivate, IQuickActivate)
STDMETHOD(QuickActivate)(QACONTAINER *pQAContainer, QACONTROL *pqacontrol);
STDMETHOD(SetContentExtent)(LPSIZEL lpsizel);
STDMETHOD(GetContentExtent)(LPSIZEL lpsizel);
END_INTERFACE_PART_STATIC(QuickActivate)
// IPointerInactive
BEGIN_INTERFACE_PART(PointerInactive, IPointerInactive)
STDMETHOD(GetActivationPolicy)(DWORD* pdwPolicy);
STDMETHOD(OnInactiveSetCursor)(LPCRECT lprcBounds, long x, long y,
DWORD dwMouseMsg, BOOL bSetAlways);
STDMETHOD(OnInactiveMouseMove)(LPCRECT lprcBounds, long x, long y,
DWORD dwKeyState);
END_INTERFACE_PART_STATIC(PointerInactive)
DECLARE_INTERFACE_MAP()
// Connection maps
protected:
// Connection point for events
BEGIN_CONNECTION_PART(COleControl, EventConnPt)
virtual void OnAdvise(BOOL bAdvise);
virtual REFIID GetIID();
virtual LPUNKNOWN QuerySinkInterface(LPUNKNOWN pUnkSink);
END_CONNECTION_PART(EventConnPt)
// Connection point for property notifications
BEGIN_CONNECTION_PART(COleControl, PropConnPt)
CONNECTION_IID(IID_IPropertyNotifySink)
END_CONNECTION_PART(PropConnPt)
DECLARE_CONNECTION_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// Registry functions
enum AFX_REG_FLAGS
{
afxRegDefault = 0x0000,
afxRegInsertable = 0x0001,
afxRegApartmentThreading = 0x0002,
};
BOOL AFXAPI AfxOleRegisterTypeLib(HINSTANCE hInstance, REFGUID tlid,
LPCTSTR pszFileName = NULL, LPCTSTR pszHelpDir = NULL);
BOOL AFXAPI AfxOleUnregisterTypeLib(REFGUID tlid, WORD wVerMajor = 0,
WORD wVerMinor = 0, LCID lcid = 0);
BOOL AFXAPI AfxOleRegisterControlClass(HINSTANCE hInstance, REFCLSID clsid,
LPCTSTR pszProgID, UINT idTypeName, UINT idBitmap, int nRegFlags,
DWORD dwMiscStatus, REFGUID tlid, WORD wVerMajor, WORD wVerMinor);
BOOL AFXAPI AfxOleUnregisterClass(REFCLSID clsid, LPCTSTR pszProgID);
BOOL AFXAPI AfxOleRegisterPropertyPageClass(HINSTANCE hInstance,
REFCLSID clsid, UINT idTypeName);
BOOL AFXAPI AfxOleRegisterPropertyPageClass(HINSTANCE hInstance,
REFCLSID clsid, UINT idTypeName, int nRegFlags);
/////////////////////////////////////////////////////////////////////////////
// Licensing functions
BOOL AFXAPI AfxVerifyLicFile(HINSTANCE hInstance, LPCTSTR pszLicFileName,
LPCOLESTR pszLicFileContents, UINT cch=-1);
/////////////////////////////////////////////////////////////////////////////
// CPropExchange - Abstract base class for property exchange
#ifdef _AFXDLL
class CPropExchange
#else
class AFX_NOVTABLE CPropExchange
#endif
{
// Operations
public:
BOOL IsLoading();
DWORD GetVersion();
BOOL IsAsynchronous();
// FALSE -> Do Sync stuff, and start async stuff if possible
// TRUE -> Do not do Sync stuff. Always start Async stuff
virtual BOOL ExchangeVersion(DWORD& dwVersionLoaded, DWORD dwVersionDefault,
BOOL bConvert);
virtual BOOL ExchangeProp(LPCTSTR pszPropName, VARTYPE vtProp,
void* pvProp, const void* pvDefault = NULL) = 0;
virtual BOOL ExchangeBlobProp(LPCTSTR pszPropName, HGLOBAL* phBlob,
HGLOBAL hBlobDefault = NULL) = 0;
virtual BOOL ExchangeFontProp(LPCTSTR pszPropName, CFontHolder& font,
const FONTDESC* pFontDesc,
LPFONTDISP pFontDispAmbient) = 0;
virtual BOOL ExchangePersistentProp(LPCTSTR pszPropName,
LPUNKNOWN* ppUnk, REFIID iid, LPUNKNOWN pUnkDefault) = 0;
// Implementation
protected:
CPropExchange();
BOOL m_bLoading;
BOOL m_bAsync;
DWORD m_dwVersion;
};
/////////////////////////////////////////////////////////////////////////////
// Property-exchange (PX_) helper functions
BOOL AFX_CDECL PX_Short(CPropExchange* pPX, LPCTSTR pszPropName, short& sValue);
BOOL AFX_CDECL PX_Short(CPropExchange* pPX, LPCTSTR pszPropName, short& sValue,
short sDefault);
BOOL AFX_CDECL PX_UShort(CPropExchange* pPX, LPCTSTR pszPropName, USHORT& usValue);
BOOL AFX_CDECL PX_UShort(CPropExchange* pPX, LPCTSTR pszPropName, USHORT& usValue,
USHORT usDefault);
BOOL AFX_CDECL PX_Long(CPropExchange* pPX, LPCTSTR pszPropName, long& lValue);
BOOL AFX_CDECL PX_Long(CPropExchange* pPX, LPCTSTR pszPropName, long& lValue,
long lDefault);
BOOL AFX_CDECL PX_ULong(CPropExchange* pPX, LPCTSTR pszPropName, ULONG& ulValue);
BOOL AFX_CDECL PX_ULong(CPropExchange* pPX, LPCTSTR pszPropName, ULONG& ulValue,
ULONG ulDefault);
BOOL AFX_CDECL PX_Color(CPropExchange* pPX, LPCTSTR pszPropName, OLE_COLOR& clrValue);
BOOL AFX_CDECL PX_Color(CPropExchange* pPX, LPCTSTR pszPropName, OLE_COLOR& clrValue,
OLE_COLOR clrDefault);
BOOL AFX_CDECL PX_Bool(CPropExchange* pPX, LPCTSTR pszPropName, BOOL& bValue);
BOOL AFX_CDECL PX_Bool(CPropExchange* pPX, LPCTSTR pszPropName, BOOL& bValue,
BOOL bDefault);
BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue);
BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue,
const CString& strDefault);
BOOL AFX_CDECL PX_String(CPropExchange* pPX, LPCTSTR pszPropName, CString& strValue,
LPCTSTR lpszDefault);
BOOL AFX_CDECL PX_Currency(CPropExchange* pPX, LPCTSTR pszPropName, CY& cyValue);
BOOL AFX_CDECL PX_Currency(CPropExchange* pPX, LPCTSTR pszPropName, CY& cyValue,
CY cyDefault);
BOOL AFX_CDECL PX_Float(CPropExchange* pPX, LPCTSTR pszPropName, float& floatValue);
BOOL AFX_CDECL PX_Float(CPropExchange* pPX, LPCTSTR pszPropName, float& floatValue,
float floatDefault);
BOOL AFX_CDECL PX_Double(CPropExchange* pPX, LPCTSTR pszPropName, double& doubleValue);
BOOL AFX_CDECL PX_Double(CPropExchange* pPX, LPCTSTR pszPropName, double& doubleValue,
double doubleDefault);
BOOL AFX_CDECL PX_Blob(CPropExchange* pPX, LPCTSTR pszPropName, HGLOBAL& hBlob,
HGLOBAL hBlobDefault = NULL);
BOOL AFX_CDECL PX_Font(CPropExchange* pPX, LPCTSTR pszPropName, CFontHolder& font,
const FONTDESC* pFontDesc = NULL,
LPFONTDISP pFontDispAmbient = NULL);
BOOL AFX_CDECL PX_Picture(CPropExchange* pPX, LPCTSTR pszPropName,
CPictureHolder& pict);
BOOL AFX_CDECL PX_Picture(CPropExchange* pPX, LPCTSTR pszPropName,
CPictureHolder& pict, CPictureHolder& pictDefault);
BOOL AFX_CDECL PX_IUnknown(CPropExchange* pPX, LPCTSTR pszPropName, LPUNKNOWN& pUnk,
REFIID iid, LPUNKNOWN pUnkDefault = NULL);
BOOL AFX_CDECL PX_VBXFontConvert(CPropExchange* pPX, CFontHolder& font);
BOOL AFX_CDECL PX_DataPath(CPropExchange* pPX, LPCTSTR pszPropName,
CDataPathProperty& dataPathProp, LPCTSTR pszDefault = NULL);
BOOL AFX_CDECL PX_DataPath(CPropExchange* pPX, LPCTSTR pszPropName,
CDataPathProperty& dataPathProp, const CString& strDefault);
/////////////////////////////////////////////////////////////////////////////
// Structures used by COlePropertyPage
typedef struct tagAFX_PPFIELDSTATUS
{
UINT nID;
BOOL bDirty;
} AFX_PPFIELDSTATUS;
/////////////////////////////////////////////////////////////////////////////
// Property Page Dialog Class
#ifdef _AFXDLL
class COlePropertyPage : public CDialog
#else
class AFX_NOVTABLE COlePropertyPage : public CDialog
#endif
{
DECLARE_DYNAMIC(COlePropertyPage)
// Constructors
public:
COlePropertyPage(UINT idDlg, UINT idCaption);
// Operations
LPDISPATCH* GetObjectArray(ULONG* pnObjects);
void SetModifiedFlag(BOOL bModified = TRUE);
BOOL IsModified();
LPPROPERTYPAGESITE GetPageSite();
void SetDialogResource(HGLOBAL hDialog);
void SetPageName(LPCTSTR lpszPageName);
void SetHelpInfo(LPCTSTR lpszDocString, LPCTSTR lpszHelpFile = NULL,
DWORD dwHelpContext = 0);
BOOL GetControlStatus(UINT nID);
BOOL SetControlStatus(UINT nID, BOOL bDirty);
void IgnoreApply(UINT nID);
int MessageBox(LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
UINT nType = MB_OK);
// note that this is a non-virtual override of CWnd::MessageBox()
// Overridables
virtual void OnSetPageSite();
virtual void OnObjectsChanged();
virtual BOOL OnHelp(LPCTSTR lpszHelpDir);
virtual BOOL OnInitDialog();
virtual BOOL OnEditProperty(DISPID dispid);
// Implementation
// DDP_ property get/set helper routines
BOOL SetPropText(LPCTSTR pszPropName, BYTE &Value);
BOOL GetPropText(LPCTSTR pszPropName, BYTE* pValue);
BOOL SetPropText(LPCTSTR pszPropName, short &Value);
BOOL GetPropText(LPCTSTR pszPropName, short* pValue);
BOOL SetPropText(LPCTSTR pszPropName, int &Value);
BOOL GetPropText(LPCTSTR pszPropName, int* pValue);
BOOL SetPropText(LPCTSTR pszPropName, UINT &Value);
BOOL GetPropText(LPCTSTR pszPropName, UINT* pValue);
BOOL SetPropText(LPCTSTR pszPropName, long &Value);
BOOL GetPropText(LPCTSTR pszPropName, long* pValue);
BOOL SetPropText(LPCTSTR pszPropName, DWORD &Value);
BOOL GetPropText(LPCTSTR pszPropName, DWORD* pValue);
BOOL SetPropText(LPCTSTR pszPropName, CString &Value);
BOOL GetPropText(LPCTSTR pszPropName, CString* pValue);
BOOL SetPropText(LPCTSTR pszPropName, float &Value);
BOOL GetPropText(LPCTSTR pszPropName, float* pValue);
BOOL SetPropText(LPCTSTR pszPropName, double &Value);
BOOL GetPropText(LPCTSTR pszPropName, double* pValue);
BOOL SetPropCheck(LPCTSTR pszPropName, int Value);
BOOL GetPropCheck(LPCTSTR pszPropName, int* pValue);
BOOL SetPropRadio(LPCTSTR pszPropName, int Value);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -