www.pudn.com > PosActiveX.rar > PosCtrl.h


//----------------------------------------------------------------------------// 
// Copyright (C) 2002--2003 by GMCC 
// 
// 文件名:PosCtrl.h 
// 功能:对POS机的操作进行封装的ActiveX控件。 
// 作者:马云冬 
// 日期:2002/07/11 
// 当前版本:1.0 
// 修改: 
//----------------------------------------------------------------------------// 
 
#ifndef __POSCTRL_H_ 
#define __POSCTRL_H_ 
 
#include "resource.h"       // main symbols 
#include  
 
 
///////////////////////////////////////////////////////////////////////////// 
// CPosCtrl 
class ATL_NO_VTABLE CPosCtrl : 
	public CComObjectRootEx, 
	public IDispatchImpl, 
	public CComControl, 
	public IPersistStreamInitImpl, 
	public IOleControlImpl, 
	public IOleObjectImpl, 
	public IOleInPlaceActiveObjectImpl, 
	public IViewObjectExImpl, 
	public IOleInPlaceObjectWindowlessImpl, 
	public IConnectionPointContainerImpl, 
	public CComCoClass 
{ 
public: 
	CPosCtrl() 
	{ 
	} 
 
DECLARE_REGISTRY_RESOURCEID(IDR_POSCTRL) 
 
DECLARE_PROTECT_FINAL_CONSTRUCT() 
 
BEGIN_COM_MAP(CPosCtrl) 
	COM_INTERFACE_ENTRY(IPosCtrl) 
	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) 
END_COM_MAP() 
 
BEGIN_PROP_MAP(CPosCtrl) 
	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(CPosCtrl) 
END_CONNECTION_POINT_MAP() 
 
BEGIN_MSG_MAP(CPosCtrl) 
	CHAIN_MSG_MAP(CComControl) 
	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); 
 
 
 
// IViewObjectEx 
	DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE) 
 
// IPosCtrl 
public: 
	STDMETHOD(EmptyPos)(); 
	STDMETHOD(ModifyPosDT)(BSTR bstrDT); 
	STDMETHOD(Init)(short nComNo); 
	STDMETHOD(get_ComNo)(/*[out, retval]*/ short *pVal); 
	STDMETHOD(put_ComNo)(/*[in]*/ short newVal); 
	STDMETHOD(Quit)(); 
 
	HRESULT OnDraw(ATL_DRAWINFO& di) 
	{ 
	//	RECT& rc = *(RECT*)di.prcBounds; 
	//	Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom); 
 
	/*	SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE); 
		LPCTSTR pszText = _T("ATL 3.0 : PosCtrl"); 
		TextOut(di.hdcDraw, 
			(rc.left + rc.right) / 2, 
			(rc.top + rc.bottom) / 2, 
			pszText, 
			lstrlen(pszText));*/ 
 
		return S_OK; 
	} 
private: 
        //清空POS机数据操作; 
	void ClearPos(); 
        //设置POS的系统时间; 
	BOOL SetPosDateTime(char * pchDateTime); 
        //把ASCII码转换成BCD码的函数; 
	void ASCII_TO_BCD(char *cSource,char *cResult,int iSourceLen,int iResultLen); 
	short m_ComNo; 
        //初始化Police.dll动态库功能; 
	void InitDll(); 
        //释放Police.dll动态库功能; 
	void ExitDll(); 
}; 
 
#endif //__POSCTRL_H_