📄 pcdmlist.h
字号:
// PCDMList.h : Declaration of the CPCDMList
#ifndef __PCDMLIST_H_
#define __PCDMLIST_H_
#include "resource.h" // main symbols
#include <atlctl.h>
#include "PCDMUICP.h"
/////////////////////////////////////////////////////////////////////////////
// CPCDMList
class ATL_NO_VTABLE CPCDMList :
public CComObjectRootEx<CComSingleThreadModel>,
public IDispatchImpl<IPCDMList, &IID_IPCDMList, &LIBID_PCDMUILib>,
public CComControl<CPCDMList>,
public IPersistStreamInitImpl<CPCDMList>,
public IOleControlImpl<CPCDMList>,
public IOleObjectImpl<CPCDMList>,
public IOleInPlaceActiveObjectImpl<CPCDMList>,
public IViewObjectExImpl<CPCDMList>,
public IOleInPlaceObjectWindowlessImpl<CPCDMList>,
public IConnectionPointContainerImpl<CPCDMList>,
public IPersistStorageImpl<CPCDMList>,
public ISpecifyPropertyPagesImpl<CPCDMList>,
public IQuickActivateImpl<CPCDMList>,
public IDataObjectImpl<CPCDMList>,
public IProvideClassInfo2Impl<&CLSID_PCDMList, &DIID__IPCDMListEvents, &LIBID_PCDMUILib>,
public IPropertyNotifySinkCP<CPCDMList>,
public CComCoClass<CPCDMList, &CLSID_PCDMList>,
public CProxy_IPCDMListEvents< CPCDMList >
{
public:
CPCDMList()
{
// <BOOK_ADDON STEP5 Chapter 7.4.2> *****************************************
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof (INITCOMMONCONTROLSEX);
icex.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx (&icex);
m_hwndLVC=NULL;
m_iLVCID=0;
m_iColCnt=0;
// </BOOK_ADDON STEP5 Chapter 7.4.2> *****************************************
}
DECLARE_REGISTRY_RESOURCEID(IDR_PCDMLIST)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CPCDMList)
COM_INTERFACE_ENTRY(IPCDMList)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IViewObjectEx)
COM_INTERFACE_ENTRY(IViewObject2)
COM_INTERFACE_ENTRY(IViewObject)
COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY(IOleInPlaceObject)
COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
COM_INTERFACE_ENTRY(IOleControl)
COM_INTERFACE_ENTRY(IOleObject)
COM_INTERFACE_ENTRY(IPersistStreamInit)
COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
COM_INTERFACE_ENTRY(IQuickActivate)
COM_INTERFACE_ENTRY(IPersistStorage)
COM_INTERFACE_ENTRY(IDataObject)
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
END_COM_MAP()
BEGIN_PROP_MAP(CPCDMList)
PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
// Example entries
// PROP_ENTRY("Property Description", dispid, clsid)
// PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()
BEGIN_CONNECTION_POINT_MAP(CPCDMList)
CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
CONNECTION_POINT_ENTRY(DIID__IPCDMListEvents)
END_CONNECTION_POINT_MAP()
BEGIN_MSG_MAP(CPCDMList)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
NOTIFY_CODE_HANDLER(NM_CLICK, OnClickLVC)
CHAIN_MSG_MAP(CComControl<CPCDMList>)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
// Handler prototypes:
// LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
// LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
// <BOOK_ADDON STEP5 Chapter 7.4.2> *****************************************
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnClickLVC(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
// </BOOK_ADDON STEP5 Chapter 7.4.2> *****************************************
// IViewObjectEx
DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)
// IPCDMList
public:
STDMETHOD(SendCommand)(long Msg, long wParam, long lParam, long *result);
STDMETHOD(DeleteRow)(long Row);
STDMETHOD(Reset)();
STDMETHOD(GetItem)(long Row, long Column, long lParam, BSTR *Caption);
STDMETHOD(AddItem)(long Row, long Column, long lParam, BSTR Caption);
STDMETHOD(AddColumn)(long Size,BSTR Caption);
HRESULT OnDraw(ATL_DRAWINFO& di)
{
// <BOOK_ADDON STEP5 Chapter 7.4.2> *****************************************
if (m_hwndLVC!=NULL)
{
RECT& rc = *(RECT*)di.prcBounds;
::MoveWindow(m_hwndLVC,rc.left,rc.top,
rc.right, rc.bottom, TRUE);
}
// </BOOK_ADDON STEP5 Chapter 7.4.2> *****************************************
return S_OK;
}
// <BOOK_ADDON STEP5 Chapter 7.4.2> *****************************************
private:
HWND m_hwndLVC;
int m_iLVCID;
int m_iColCnt;
// </BOOK_ADDON STEP5 Chapter 7.4.2> *****************************************
};
#endif //__PCDMLIST_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -