www.pudn.com > SendMsgOCX.rar > SendMsgOCXCtl.cpp


// SendMsgOCXCtl.cpp : Implementation of the CSendMsgOCXCtrl ActiveX Control class. 
 
#include "stdafx.h" 
#include "SendMsgOCX.h" 
#include "SendMsgOCXCtl.h" 
#include "SendMsgOCXPpg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
 
IMPLEMENT_DYNCREATE(CSendMsgOCXCtrl, COleControl) 
 
 
///////////////////////////////////////////////////////////////////////////// 
// Message map 
 
BEGIN_MESSAGE_MAP(CSendMsgOCXCtrl, COleControl) 
	//{{AFX_MSG_MAP(CSendMsgOCXCtrl) 
	ON_WM_TIMER() 
	//}}AFX_MSG_MAP 
	ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties) 
	ON_MESSAGE(COMM_NOTIFY_MESSAGE,OnCommNotifyMsg) 
END_MESSAGE_MAP() 
 
 
///////////////////////////////////////////////////////////////////////////// 
// Dispatch map 
 
BEGIN_DISPATCH_MAP(CSendMsgOCXCtrl, COleControl) 
	//{{AFX_DISPATCH_MAP(CSendMsgOCXCtrl) 
	DISP_FUNCTION(CSendMsgOCXCtrl, "OpenCom", OpenCom, VT_I2, VTS_I2) 
	DISP_FUNCTION(CSendMsgOCXCtrl, "SendMessage", SendMessage, VT_I2, VTS_BSTR VTS_I2 VTS_PBSTR VTS_I4) 
	DISP_FUNCTION(CSendMsgOCXCtrl, "SetSMSCenter", SetSMSCenter, VT_I2, VTS_BSTR) 
	//}}AFX_DISPATCH_MAP 
	DISP_FUNCTION_ID(CSendMsgOCXCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE) 
END_DISPATCH_MAP() 
 
 
///////////////////////////////////////////////////////////////////////////// 
// Event map 
 
BEGIN_EVENT_MAP(CSendMsgOCXCtrl, COleControl) 
	//{{AFX_EVENT_MAP(CSendMsgOCXCtrl) 
	EVENT_CUSTOM("MsgAnswer", FireMsgAnswer, VTS_I4  VTS_BSTR) 
	EVENT_CUSTOM("MsgAnswer1", FireMsgAnswer1, VTS_I4  VTS_BSTR) 
	//}}AFX_EVENT_MAP 
END_EVENT_MAP() 
 
 
///////////////////////////////////////////////////////////////////////////// 
// Property pages 
 
// TODO: Add more property pages as needed.  Remember to increase the count! 
BEGIN_PROPPAGEIDS(CSendMsgOCXCtrl, 1) 
	PROPPAGEID(CSendMsgOCXPropPage::guid) 
END_PROPPAGEIDS(CSendMsgOCXCtrl) 
 
 
///////////////////////////////////////////////////////////////////////////// 
// Initialize class factory and guid 
 
IMPLEMENT_OLECREATE_EX(CSendMsgOCXCtrl, "SENDMSGOCX.SendMsgOCXCtrl.1", 
	0xa8e11689, 0xea8f, 0x403d, 0xb1, 0x44, 0xae, 0xf9, 0xe9, 0xf8, 0xc2, 0x5b) 
 
 
///////////////////////////////////////////////////////////////////////////// 
// Type library ID and version 
 
IMPLEMENT_OLETYPELIB(CSendMsgOCXCtrl, _tlid, _wVerMajor, _wVerMinor) 
 
 
///////////////////////////////////////////////////////////////////////////// 
// Interface IDs 
 
const IID BASED_CODE IID_DSendMsgOCX = 
		{ 0x6aa45237, 0x9f03, 0x4ead, { 0x96, 0x63, 0xe9, 0xb7, 0xbf, 0x46, 0xf9, 0x35 } }; 
const IID BASED_CODE IID_DSendMsgOCXEvents = 
		{ 0x2c61c23a, 0x20e7, 0x40e7, { 0xae, 0x6c, 0x16, 0x3d, 0xb1, 0x6a, 0x7e, 0xb7 } }; 
 
 
///////////////////////////////////////////////////////////////////////////// 
// Control type information 
 
static const DWORD BASED_CODE _dwSendMsgOCXOleMisc = 
	OLEMISC_ACTIVATEWHENVISIBLE | 
	OLEMISC_SETCLIENTSITEFIRST | 
	OLEMISC_INSIDEOUT | 
	OLEMISC_CANTLINKINSIDE | 
	OLEMISC_RECOMPOSEONRESIZE; 
 
IMPLEMENT_OLECTLTYPE(CSendMsgOCXCtrl, IDS_SENDMSGOCX, _dwSendMsgOCXOleMisc) 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CSendMsgOCXCtrl::CSendMsgOCXCtrlFactory::UpdateRegistry - 
// Adds or removes system registry entries for CSendMsgOCXCtrl 
 
BOOL CSendMsgOCXCtrl::CSendMsgOCXCtrlFactory::UpdateRegistry(BOOL bRegister) 
{ 
	// TODO: Verify that your control follows apartment-model threading rules. 
	// Refer to MFC TechNote 64 for more information. 
	// If your control does not conform to the apartment-model rules, then 
	// you must modify the code below, changing the 6th parameter from 
	// afxRegApartmentThreading to 0. 
 
	if (bRegister) 
		return AfxOleRegisterControlClass( 
			AfxGetInstanceHandle(), 
			m_clsid, 
			m_lpszProgID, 
			IDS_SENDMSGOCX, 
			IDB_SENDMSGOCX, 
			afxRegApartmentThreading, 
			_dwSendMsgOCXOleMisc, 
			_tlid, 
			_wVerMajor, 
			_wVerMinor); 
	else 
		return AfxOleUnregisterClass(m_clsid, m_lpszProgID); 
} 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CSendMsgOCXCtrl::CSendMsgOCXCtrl - Constructor 
 
CSendMsgOCXCtrl::CSendMsgOCXCtrl() 
{ 
	InitializeIIDs(&IID_DSendMsgOCX, &IID_DSendMsgOCXEvents); 
 
	// TODO: Initialize your control's instance data here. 
//	HWND hWnd,hWnd0; 
//	hWnd0=(struct HWND__ *)AfxGetInstanceHandle(); 
//	hWnd=::GetWindow(hWnd0,2); 
//	m_smsLink.SetWinHandleAndNotifyMessage(hWnd, COMM_NOTIFY_MESSAGE); 
 
} 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CSendMsgOCXCtrl::~CSendMsgOCXCtrl - Destructor 
 
CSendMsgOCXCtrl::~CSendMsgOCXCtrl() 
{ 
	// TODO: Cleanup your control's instance data here. 
} 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CSendMsgOCXCtrl::OnDraw - Drawing function 
 
void CSendMsgOCXCtrl::OnDraw( 
			CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) 
{ 
	// TODO: Replace the following code with your own drawing code. 
	pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); 
	pdc->Ellipse(rcBounds); 
	//FireMsgAnswer(1,"13"); 
	//m_smsLink.SetWinHandleAndNotifyMessage(m_hWnd, eventidMsgAnswer); 
} 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CSendMsgOCXCtrl::DoPropExchange - Persistence support 
 
void CSendMsgOCXCtrl::DoPropExchange(CPropExchange* pPX) 
{ 
	ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor)); 
	COleControl::DoPropExchange(pPX); 
 
	// TODO: Call PX_ functions for each persistent custom property. 
 
} 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CSendMsgOCXCtrl::OnResetState - Reset control to default state 
 
void CSendMsgOCXCtrl::OnResetState() 
{ 
	COleControl::OnResetState();  // Resets defaults found in DoPropExchange 
 
	// TODO: Reset any other control state here. 
} 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CSendMsgOCXCtrl::AboutBox - Display an "About" box to the user 
 
void CSendMsgOCXCtrl::AboutBox() 
{ 
	CDialog dlgAbout(IDD_ABOUTBOX_SENDMSGOCX); 
	dlgAbout.DoModal(); 
} 
 
 
LRESULT CSendMsgOCXCtrl::OnCommNotifyMsg(LPARAM wParam, LPARAM lParam) 
{ 
	char *p; 
	LPARAM diaoduNo=wParam; 
	p=(char *)lParam; 
	char cMobileNum[20]; 
	int i=0; 
	do  
	{ 
		cMobileNum[i]=*p; 
		i++; 
		//p++; 
	}while((*p++)!=0); 
 
	FireMsgAnswer1(diaoduNo,cMobileNum); 
	 
 
	return 0; 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CSendMsgOCXCtrl message handlers 
 
short CSendMsgOCXCtrl::OpenCom(short portNo)  
{ 
	// TODO: Add your dispatch handler code here 
	m_smsLink.SetWinHandleAndNotifyMessage(m_hWnd, COMM_NOTIFY_MESSAGE); 
	return m_smsLink.OpenCom(portNo); 
} 
 
short CSendMsgOCXCtrl::SendMessage(LPCTSTR lpcszPhoneNumber, short msgType, BSTR FAR* lpData, long dwDataSize)  
{ 
	// TODO: Add your dispatch handler code here 
 
	return (short)m_smsLink.SendMessage(lpcszPhoneNumber, (unsigned char)msgType, (const BYTE*)((const char*)(*lpData)), dwDataSize); 
} 
 
short CSendMsgOCXCtrl::SetSMSCenter(LPCTSTR lpcszPhoneNumber)  
{ 
	// TODO: Add your dispatch handler code here 
	return (short)m_smsLink.SetSMSCenter(lpcszPhoneNumber); 
	 
} 
 
void CSendMsgOCXCtrl::OnTimer(UINT nIDEvent)  
{ 
	// TODO: Add your message handler code here and/or call default 
	//if (m_smsLink.replymsgcom) 
	//{ 
	//	m_smsLink.replymsgcom=0; 
	//} 
	COleControl::OnTimer(nIDEvent); 
}