📄 atlcontrolsubwin.h
字号:
// ATLControlSubWin.h : Declaration of the CATLControlSubWin
#ifndef __ATLCONTROLSUBWIN_H_
#define __ATLCONTROLSUBWIN_H_
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CATLControlSubWin
class ATL_NO_VTABLE CATLControlSubWin :
public CComObjectRootEx<CComObjectThreadModel>,
public CComCoClass<CATLControlSubWin, &CLSID_ATLControlSubWin>,
public CComControl<CATLControlSubWin>,
public IDispatchImpl<IATLControlSubWin, &IID_IATLControlSubWin, &LIBID_ATLCONTROLLib>,
public IProvideClassInfo2Impl<&CLSID_ATLControlSubWin, NULL, &LIBID_ATLCONTROLLib>,
public IPersistStreamInitImpl<CATLControlSubWin>,
public IPersistStorageImpl<CATLControlSubWin>,
public IQuickActivateImpl<CATLControlSubWin>,
public IOleControlImpl<CATLControlSubWin>,
public IOleObjectImpl<CATLControlSubWin>,
public IOleInPlaceActiveObjectImpl<CATLControlSubWin>,
public IViewObjectExImpl<CATLControlSubWin>,
public IOleInPlaceObjectWindowlessImpl<CATLControlSubWin>,
public IDataObjectImpl<CATLControlSubWin>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<CATLControlSubWin>,
public ISpecifyPropertyPagesImpl<CATLControlSubWin>
{
public:
CContainedWindow m_ctlButton;
CATLControlSubWin() :
m_ctlButton(_T("Button"), this, 1)
{
m_bWindowOnly = TRUE;
}
DECLARE_REGISTRY_RESOURCEID(IDR_ATLCONTROLSUBWIN)
BEGIN_COM_MAP(CATLControlSubWin)
COM_INTERFACE_ENTRY(IATLControlSubWin)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_IMPL(IViewObjectEx)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx)
COM_INTERFACE_ENTRY_IMPL(IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleInPlaceObject, IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleWindow, IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject)
COM_INTERFACE_ENTRY_IMPL(IOleControl)
COM_INTERFACE_ENTRY_IMPL(IOleObject)
COM_INTERFACE_ENTRY_IMPL(IQuickActivate)
COM_INTERFACE_ENTRY_IMPL(IPersistStorage)
COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit)
COM_INTERFACE_ENTRY_IMPL(ISpecifyPropertyPages)
COM_INTERFACE_ENTRY_IMPL(IDataObject)
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
END_COM_MAP()
BEGIN_PROPERTY_MAP(CATLControlSubWin)
// PROP_ENTRY("Description", dispid, clsid)
PROP_PAGE(CLSID_CColorPropPage)
END_PROPERTY_MAP()
BEGIN_CONNECTION_POINT_MAP(CATLControlSubWin)
END_CONNECTION_POINT_MAP()
BEGIN_MSG_MAP(CATLControlSubWin)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_GETDLGCODE, OnGetDlgCode)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
ALT_MSG_MAP(1)
// Replace this with message map entries for subclassed Button
END_MSG_MAP()
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
RECT rc;
GetWindowRect(&rc);
rc.right -= rc.left;
rc.bottom -= rc.top;
rc.top = rc.left = 0;
m_ctlButton.Create(m_hWnd, rc);
return 0;
}
STDMETHOD(SetObjectRects)(LPCRECT prcPos,LPCRECT prcClip)
{
IOleInPlaceObjectWindowlessImpl<CATLControlSubWin>::SetObjectRects(prcPos, prcClip);
int cx, cy;
cx = prcPos->right - prcPos->left;
cy = prcPos->bottom - prcPos->top;
::SetWindowPos(m_ctlButton.m_hWnd, NULL, 0,
0, cx, cy, SWP_NOZORDER | SWP_NOACTIVATE);
return S_OK;
}
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// IViewObjectEx
STDMETHOD(GetViewStatus)(DWORD* pdwStatus)
{
ATLTRACE(_T("IViewObjectExImpl::GetViewStatus\n"));
*pdwStatus = VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE;
return S_OK;
}
// IATLControlSubWin
public:
HRESULT OnDraw(ATL_DRAWINFO& di);
};
#endif //__ATLCONTROLSUBWIN_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -