// VcDemoDlg.cpp : implementation file
//

#include "stdafx.h"
#include "VcDemo.h"
#include "VcDemoDlg.h"
#include <afxsock.h>//<Winsock2.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//---------------------------------------------------------------------------
typedef char* (__stdcall *FnMongateGetVer)();
typedef int (__stdcall *FnMongateChangePwd)(int sock, const char* pszAccount,
                                            const char* pszOldPwd, const char* pszNewPwd);
typedef int (__stdcall *FnMongateConnect)(const char* pszIP, int iPort, const char* pszAccount,
                                          const char* pszPwd);
typedef void (__stdcall *FnMongateDisconnect)(int sock);
typedef int (__stdcall *FnMongateQueryBalance)(int sock);
typedef int (__stdcall *FnMongateQueryUsed)(int sock);
typedef int (__stdcall *FnMongateSendSms)(int sock, const char* pszMobis, const char* pszMsg);
typedef int (__stdcall *FnMongateConnectSocks4Proxy)(const char* ,int ,const char* ,int ,const char* ,const char* );
typedef int (__stdcall *FnMongateCsGetSms)(SOCKET , char [500][255]);
typedef int (__stdcall *FnMongateVasGetSms)(SOCKET , char [500][255]);
typedef int (__stdcall *FnMongateVasSendSms)(SOCKET , const char* , const char* , const char* , const char* ,const char* , const char* , int );
typedef int (__stdcall *FnMongateCsSendSmsHttp)(SOCKET , const char* ,const char* , int , char* );
typedef int (__stdcall *FnMongateTestConn)(SOCKET );
typedef int (__stdcall *FnMongateCsGetStatusReport)(SOCKET , char [500][255]);
typedef int (__stdcall *FnMongateCsSendSms)(SOCKET , const char* ,const char* , int , char* );
typedef int (__stdcall *FnMongateConnectSocks5Proxy)( const char* , int ,const char* ,const char* ,const char* ,int ,const char* ,const char* );
typedef int (__stdcall *FnMongateConnectHttpProxy)(const char*,int ,const char* ,const char* ,const char* , int , const char* , const char* );
typedef int (__stdcall *FnMongateTestConnHttp)(int);
typedef int (__stdcall *FnMongateCsGetSmsHttp)(SOCKET , char [500][255]);
typedef int (__stdcall *FnMongateCsGetStatusReportHttp)(SOCKET , char [500][255]);
typedef int (__stdcall *FnMongateConnectHttpProxy)(const char* pszProxyIP,
  int iProxyPort,const char* pszProxyAccount,const char* pszProxyPwd,
  const char* pszIP, int iPort, const char* pszAccount, const char* pszPwd);
typedef int (__stdcall *FnMongateTestMsgEx)(SOCKET sock,const char* pStrMessage,char *keywords);
typedef int (__stdcall *FnMongateTestMsgExHttp)(SOCKET sock,const char* pStrMessage,char *keyword);
typedef int (__stdcall *FnMongateCsSPSendSmsNew)(SOCKET sock, const char* pszMobis,
	const char* pszMsg, int iMobiCount,const char* pszSubPort,char* pszSN);

//---------------------------------------------------------------------------
HMODULE g_hDll;
FnMongateGetVer MongateGetVer;
//tcp/ip method
FnMongateTestMsgEx MongateTestMsgEx; 
FnMongateTestMsgExHttp MongateTestMsgExHttp;
FnMongateConnect MongateConnect;
FnMongateDisconnect MongateDisconnect;
FnMongateChangePwd MongateChangePwd;
FnMongateQueryBalance MongateQueryBalance;
FnMongateQueryUsed MongateQueryUsed;
FnMongateSendSms MongateSendSms;
FnMongateCsGetSms MongateCsGetSms;
FnMongateVasGetSms MongateVasGetSms;
FnMongateVasSendSms MongateVasSendSms;
FnMongateTestConn MongateTestConn;
FnMongateCsGetStatusReport MongateCsGetStatusReport;
FnMongateCsSendSms MongateCsSendSms;
FnMongateConnectSocks4Proxy MongateConnectSocks4Proxy;
FnMongateConnectSocks5Proxy MongateConnectSocks5Proxy;
//http method
FnMongateConnect MongateConnectHttp;
FnMongateQueryBalance MongateQueryBalanceHttp;
FnMongateQueryUsed MongateQueryUsedHttp;
FnMongateSendSms MongateSendSmsHttp;
FnMongateChangePwd MongateChangePwdHttp;
FnMongateDisconnect MongateDisconnectHttp;
FnMongateTestConnHttp MongateTestConnHttp;
FnMongateCsSendSmsHttp MongateCsSendSmsHttp;
FnMongateConnectHttpProxy MongateConnectHttpProxy;
FnMongateCsGetSmsHttp MongateCsGetSmsHttp;
FnMongateCsGetStatusReportHttp MongateCsGetStatusReportHttp;
FnMongateCsSPSendSmsNew MongateCsSPSendSmsNew;
/////////////////////////////////////////////////////////////////////////////
// CVcDemoDlg dialog IDC_EDT_NUM
int myflag=0;

CVcDemoDlg::CVcDemoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CVcDemoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CVcDemoDlg)
	m_strSendSms = _T("");
	m_strLoginID = _T("");
	m_strLoginPwd = _T("");
	m_strRecvMobi = _T("");
	m_strServiceNo = _T("");
	m_strFeeCode = _T("");
	m_strLinkID = _T("");
	m_strNewPwd = _T("");
	m_chkboth = FALSE;
	m_kfboth = FALSE;
	m_chksingle = TRUE;
	m_mobicount = 0;
	m_Port = 8018;
	m_ServerIp = _T("");
	m_bProxy = FALSE;
	m_Tcp = FALSE;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  m_hsock = 0;
}

void CVcDemoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CVcDemoDlg)
	DDX_Control(pDX, IDC_BTN_SEND, m_btnSend);
	DDX_Control(pDX, IDC_BTN_CONNECT, m_btnConn);
	DDX_Control(pDX, IDC_LST_SMS, m_listCtrl);
	DDX_Text(pDX, IDC_EDT_SMS, m_strSendSms);
	DDV_MaxChars(pDX, m_strSendSms, 2000);
	DDX_Text(pDX, IDC_EDT_LOGIN_ID, m_strLoginID);
	DDV_MaxChars(pDX, m_strLoginID, 11);
	DDX_Text(pDX, IDC_EDT_LOGIN_PWD, m_strLoginPwd);
	DDV_MaxChars(pDX, m_strLoginPwd, 6);
	DDX_Text(pDX, IDC_EDT_RECV_MOBI, m_strRecvMobi);
	DDX_Text(pDX, IDC_EDT_SERVICE_NO, m_strServiceNo);
	DDX_Text(pDX, IDC_EDT_FEE_CODE, m_strFeeCode);
	DDV_MaxChars(pDX, m_strFeeCode, 6);
	DDX_Text(pDX, IDC_EDT_LINKID, m_strLinkID);
	DDX_Text(pDX, IDC_EDT_NEW_PWD, m_strNewPwd);
	DDX_Check(pDX, IDC_CHK_BOTH, m_chkboth);
	DDX_Check(pDX, IDC_CHK_KFBOTH, m_kfboth);
	DDX_Check(pDX, IDC_CHK_SINGLE, m_chksingle);
	DDX_Text(pDX, IDC_EDT_NUM, m_mobicount);
	DDX_Text(pDX, IDC_EDT_PORT, m_Port);
	DDX_Text(pDX, IDC_EDT_SERVER, m_ServerIp);
	DDX_Check(pDX, IDC_CHK_PROXY, m_bProxy);
	DDX_Check(pDX, IDC_CHECKtcp, m_Tcp);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CVcDemoDlg, CDialog)
//{{AFX_MSG_MAP(CVcDemoDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BTN_CONNECT, OnBtnConnect)
ON_BN_CLICKED(IDC_BTN_RECV, OnBtnRecv)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_BTN_SEND, OnBtnSend)
ON_BN_CLICKED(IDC_BTN_QUERY, OnBtnQuery)
ON_BN_CLICKED(IDC_BTN_Query2, OnBTNQuery2)
ON_BN_CLICKED(IDC_BTN_CHANGE_PWD, OnBtnChangePwd)	
ON_BN_CLICKED(IDC_BTN_TEST_CONN, OnBtnTestConn)
ON_BN_CLICKED(IDC_BTN_GET_STATUS, OnBtnGetStatus)
ON_BN_CLICKED(IDC_CHK_SINGLE, OnChkSingle)
ON_BN_CLICKED(IDC_CHK_BOTH, OnChkBoth)
ON_BN_CLICKED(IDC_CHK_KFBOTH, OnChkKfboth)
	ON_BN_CLICKED(IDC_BTN_DISCONN, OnBtnDisconn)
	ON_BN_CLICKED(IDC_TYPE, OnType)
	ON_BN_CLICKED(IDC_CHK_PROXY, OnChkProxy)
	ON_BN_CLICKED(IDC_CHECKtcp, OnCHECKtcp)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVcDemoDlg message handlers
void LoadMWGateway()
{
	char path[255] = {0};
	::GetCurrentDirectory(255, path);
	strcat(path, "\\LYFZGateway.dll");
	if (NULL == (g_hDll = ::LoadLibrary(path)))
	{
		AfxMessageBox("����LYFZGateway.dllʧ�ܣ�");
		exit(0);
	}

	MongateChangePwd = (FnMongateChangePwd)::GetProcAddress(g_hDll, "MongateChangePwd");
	MongateConnect = (FnMongateConnect)::GetProcAddress(g_hDll, "MongateConnect");
	MongateDisconnect = (FnMongateDisconnect)::GetProcAddress(g_hDll, "MongateDisconnect");
	MongateCsGetSms = (FnMongateCsGetSms)::GetProcAddress(g_hDll, "MongateCsGetSms");
	MongateVasGetSms = (FnMongateVasGetSms)::GetProcAddress(g_hDll, "MongateVasGetSms");
	MongateGetVer = (FnMongateGetVer)::GetProcAddress(g_hDll, "MongateGetVer");
	MongateTestConn = (FnMongateTestConn)::GetProcAddress(g_hDll, "MongateTestConn");
	MongateQueryBalance = (FnMongateQueryBalance)::GetProcAddress(g_hDll, "MongateQueryBalance");
	MongateVasSendSms = (FnMongateVasSendSms)::GetProcAddress(g_hDll, "MongateVasSendSms");
	MongateSendSms = (FnMongateSendSms)::GetProcAddress(g_hDll, "MongateSendSms");
	MongateQueryUsed = (FnMongateQueryUsed)::GetProcAddress(g_hDll, "MongateQueryUsed");
	MongateCsSendSms = (FnMongateCsSendSms)::GetProcAddress(g_hDll, "MongateCsSendSms");
	MongateCsGetStatusReport = (FnMongateCsGetStatusReport)::GetProcAddress(g_hDll, "MongateCsGetStatusReport");
	MongateConnectSocks4Proxy = (FnMongateConnectSocks4Proxy)::GetProcAddress(g_hDll, "MongateConnectSocks4Proxy");
	MongateConnectSocks5Proxy = (FnMongateConnectSocks5Proxy)::GetProcAddress(g_hDll, "MongateConnectSocks5Proxy");
	MongateConnectHttpProxy = (FnMongateConnectHttpProxy)::GetProcAddress(g_hDll, "MongateConnectHttpProxy");

	MongateTestMsgEx = (FnMongateTestMsgEx)::GetProcAddress(g_hDll, "MongateTestMsgEx");
	MongateTestMsgExHttp =(FnMongateTestMsgExHttp)::GetProcAddress(g_hDll, "MongateTestMsgExHttp");
	MongateQueryBalanceHttp = (FnMongateQueryBalance)::GetProcAddress(g_hDll, "MongateQueryBalanceHttp");
	MongateQueryUsedHttp = (FnMongateQueryUsed)::GetProcAddress(g_hDll, "MongateQueryUsedHttp");
	MongateConnectHttp = (FnMongateConnect)::GetProcAddress(g_hDll, "MongateConnectHttp");	
	MongateCsSendSmsHttp = (FnMongateCsSendSms)::GetProcAddress(g_hDll, "MongateCsSendSmsHttp");	
	MongateCsGetSmsHttp = (FnMongateCsGetSmsHttp)::GetProcAddress(g_hDll, "MongateCsGetSmsHttp");	
	MongateCsGetStatusReportHttp = (FnMongateCsGetStatusReport)::GetProcAddress(g_hDll, "MongateCsGetStatusReportHttp");
	MongateChangePwdHttp = (FnMongateChangePwd)::GetProcAddress(g_hDll, "MongateChangePwdHttp");
	MongateTestConnHttp = (FnMongateTestConnHttp)::GetProcAddress(g_hDll, "MongateTestConnHttp");
	MongateConnectHttpProxy = (FnMongateConnectHttpProxy)::GetProcAddress(g_hDll, "MongateConnectHttpProxy");	
	MongateCsSPSendSmsNew = (FnMongateCsSPSendSmsNew)::GetProcAddress(g_hDll, "MongateCsSPSendSmsNew");
	//ASSERT(MongateCsSendSms != NULL);
}

BOOL CVcDemoDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	LoadMWGateway();
	//m_ServerIp="server1.montnets.com";
	//m_ServerIp="61.145.229.26";
// 	m_ServerIp="61.242.89.115";
	m_ServerIp="server1.montnets.com";
	m_strLoginID = "090802";	
	m_strRecvMobi="15858427733";
	m_mobicount=1;
	m_strLoginPwd = "516842";
	m_strSendSms = "�������ز�����Ϣ����ϲ����!!";
	m_Tcp = TRUE;
	UpdateData(FALSE);
	OnUpdateEnables();   
	GetDlgItem(IDC_EDIT_PROXYIP)->EnableWindow(FALSE);
	GetDlgItem(IDC_EDIT_PROXYPORT)->EnableWindow(FALSE);
	GetDlgItem(IDC_EDIT_PROXYID)->EnableWindow(FALSE);
	GetDlgItem(IDC_EDIT_PROXYPWD)->EnableWindow(FALSE);
	CComboBox * list=(CComboBox*)GetDlgItem(IDC_COMBOPROXY);
	list->AddString("Proxy4");
	list->AddString("Proxy5");
	list->AddString("HttpProxy");
	return TRUE;  // return TRUE  unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CVcDemoDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting
		
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
		
		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;
		
		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CVcDemoDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}
//---------------------------------------------------------------------------
void CVcDemoDlg::OnBtnConnect() 
{
	UpdateData(TRUE);
	CString mystr,proxyip,port,id,pwd;
	int pport;
	if (m_hsock == 0)
	{
		if(m_bProxy)
		{
			GetDlgItem(IDC_EDIT_PROXYIP)->GetWindowText(proxyip);
			GetDlgItem(IDC_EDIT_PROXYPORT)->GetWindowText(port);
			GetDlgItem(IDC_EDIT_PROXYID)->GetWindowText(id);
			GetDlgItem(IDC_EDIT_PROXYPWD)->GetWindowText(pwd);
			CComboBox* list = (CComboBox*)GetDlgItem(IDC_COMBOPROXY);
			pport = atoi(port);
			int i = list->GetCurSel();
			switch(i)
			{
			case -1:
				AfxMessageBox("��ѡ��������ͣ�");
				break;
			case 0:
				m_hsock = MongateConnectSocks4Proxy(proxyip,pport,m_ServerIp, m_Port, m_strLoginID,m_strLoginPwd);
				break;
			case 1:
				m_hsock = MongateConnectSocks5Proxy(proxyip,pport,id,pwd,m_ServerIp, m_Port, m_strLoginID,m_strLoginPwd);
				break;
			case 2:
				m_hsock = MongateConnectHttpProxy(proxyip,pport,id,pwd,m_ServerIp, m_Port, m_strLoginID,m_strLoginPwd);
				break;
			}
		}
		else
			if(m_Tcp)
				m_hsock = MongateConnect(m_ServerIp, m_Port, m_strLoginID,m_strLoginPwd);
			else
				m_hsock = MongateConnectHttp(m_ServerIp, m_Port, m_strLoginID,m_strLoginPwd);
		  
		
		if (m_hsock > 0)
		{
			mystr.Format("���ӳɹ�,���ؾ��:%d",m_hsock);
			GetDlgItem(IDC_BTN_CONNECT)->EnableWindow(FALSE);
			GetDlgItem(IDC_BTN_DISCONN)->EnableWindow(TRUE);
			//m_btnConn.SetWindowText("��  ��");	 
		}
		else
		{
			mystr.Format("����ʧ��,����:%d",m_hsock);
			GetDlgItem(IDC_BTN_CONNECT)->EnableWindow(TRUE);
			GetDlgItem(IDC_BTN_DISCONN)->EnableWindow(FALSE);
			m_hsock = 0;
		}
	}
	m_listCtrl.InsertString(0,mystr);
	UpdateData(FALSE);
}
//---------------------------------------------------------------------------
void CVcDemoDlg::OnUpdateEnables() 
{	
	UpdateData(TRUE);		
	BOOL bBoth=m_chkboth||m_kfboth;
	if ((m_chksingle)&&(myflag==1)){
		m_chkboth=FALSE;
		m_kfboth=FALSE;
	}
	if ((m_chkboth)&&(myflag==2)){
		m_chksingle=FALSE;
		m_kfboth=FALSE;
	}	
	
	if ((m_kfboth)&&(myflag==3)){
		m_chkboth=FALSE;
		m_chksingle=FALSE;
	}
	
	if (m_chkboth)	m_btnSend.SetWindowText("��ֵ��Ϣ");
	else if (m_kfboth)	m_btnSend.SetWindowText("�ͷ���Ϣ");	
	else m_btnSend.SetWindowText("������Ϣ");	
	//GetDlgItem(IDC_EDT_SERVICE_NO)->EnableWindow(m_chkboth);
	//GetDlgItem(IDC_EDT_FEE_CODE)->EnableWindow(m_chkboth);	
	GetDlgItem(IDC_EDT_LINKID)->EnableWindow(m_chkboth);
	GetDlgItem(IDC_BTN_GET_STATUS)->EnableWindow(m_kfboth);
	GetDlgItem(IDC_EDT_NUM)->EnableWindow(bBoth);
	GetDlgItem(IDC_BTN_RECV)->EnableWindow(bBoth);
	GetDlgItem(IDC_EDT_SERVICE_NO)->EnableWindow(m_chkboth);
	GetDlgItem(IDC_EDT_FEE_CODE)->EnableWindow(m_chkboth);
	UpdateData(FALSE);
}
//---------------------------------------------------------------------------
void CVcDemoDlg::OnBtnRecv() 
{  
	if (m_hsock<=0) {
		m_listCtrl.InsertString(0,"û�����ӵ�������");  
		return;
	} 
	
	int count =0;
	
	char msg[500][255];	
	CString s,mystr;
	
	if(m_kfboth)
	{
		if(m_Tcp)
		count = MongateCsGetSms(m_hsock, msg);
		else
		count = MongateCsGetSmsHttp(m_hsock, msg);
	}
	else
		count =MongateVasGetSms(m_hsock, msg);

	s=m_chkboth?"��ֵ�˿�":"�ͷ��˿�";
	if (count == 0)
	{
		mystr.Format("%s%s",s,"û����Ϣ�ɶ�");	
	}
	else if (count > 0)
	{
		for (int i = 0; i < count; i++)
		{
			mystr.Format("%s%s%d��%s",s,"����", i+1, msg[i]);			
			m_listCtrl.InsertString(0,mystr);
			MessageBox(msg[i]);
		}
		return;
	}
	else
	{
		mystr.Format("%s%s%d",s,"������Ϣʧ��,���أ�",count);		
	}	
	m_listCtrl.InsertString(0,mystr);
}
//---------------------------------------------------------------------------
void CVcDemoDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	if (m_hsock != 0)
		MongateDisconnect(m_hsock);
}
//---------------------------------------------------------------------------
void CVcDemoDlg::OnBtnSend() 
{
	UpdateData();
	CString mystr;
	if (m_hsock<=0) {
		m_listCtrl.InsertString(0,"û�����ӵ�������");  
		return;
	}
	int res=0;
	char strSN[255] = {0};
	if (m_chkboth)
	{//������ֵ��Ϣ
		if(m_Tcp)
		res = MongateVasSendSms(m_hsock, m_strFeeCode, m_strServiceNo, 
			"00********", m_strLinkID, m_strRecvMobi, m_strSendSms,1);
		else
			res = -1;
		if (res == 1)
			mystr.Format("������ֵ��Ϣ�ɹ�");
		else  
			mystr.Format("������ֵ��Ϣʧ��,����:%d",res); 
	}	
	else if (m_kfboth)
	{//���Ϳͷ���Ϣ
		if(m_Tcp)
		{
			res = MongateTestMsgEx(m_hsock,m_strSendSms.GetBuffer(1200),strSN);
		}
		else
		{
			res = MongateTestMsgExHttp(m_hsock,m_strSendSms.GetBuffer(1200),strSN);
		}
		if (res == -10033)
			mystr.Format("���ؼ���,����:%s",strSN); 
		res = MongateCsSPSendSmsNew(m_hsock,m_strRecvMobi.GetBuffer(2000),m_strSendSms.GetBuffer(1200),m_mobicount,"*",strSN);
// 		if(m_Tcp)
// 		{
// 			res = MongateCsSendSms(m_hsock,m_strRecvMobi.GetBuffer(2000),m_strSendSms.GetBuffer(1200),m_mobicount,strSN); 
// 		}
// 		else
// 		{
// 			res = MongateCsSendSmsHttp(m_hsock,m_strRecvMobi.GetBuffer(2000),m_strSendSms.GetBuffer(1200),m_mobicount,strSN); 
// 		}

		if (res == 1)
			mystr.Format("���Ϳͷ���Ϣ�ɹ�,��Ϣ���:%s",strSN);
		else  
			mystr.Format("���Ϳͷ���Ϣʧ��,����:%d",res); 
	}
	else
	{//���͵�����Ϣ
		res = MongateSendSms(m_hsock,m_strRecvMobi,m_strSendSms);		
		if (res == 1)
			mystr.Format("���͵�����Ϣ�ɹ�%s",strSN);
		else  
			mystr.Format("���͵�����Ϣʧ��,����:%d",res); 
	}
	m_listCtrl.InsertString(0,mystr);
	
}
//---------------------------------------------------------------------------
void CVcDemoDlg::OnBtnQuery() 
{	
	if (m_hsock<=0) {
		m_listCtrl.InsertString(0,"û�����ӵ�������");  
		return;
	}
	CString mystr;
	int m_iLeft;
	if(m_Tcp)
		m_iLeft = MongateQueryBalance(m_hsock);
	else
		m_iLeft = MongateQueryBalanceHttp(m_hsock);
	if (m_iLeft >= 0)
		mystr.Format("��ѯ���ɹ�,ʣ��:%d",m_iLeft);
	else  
		mystr.Format("��ѯ���ʧ��,����:%d",m_iLeft); 
	m_listCtrl.InsertString(0,mystr);
}
//---------------------------------------------------------------------------

void CVcDemoDlg::OnBTNQuery2()
{
	//ASSERT(m_hsock);
	if (m_hsock<=0) {
		m_listCtrl.InsertString(0,"û�����ӵ�������");  
		return;
	}
	CString mystr;
	int  m_iUsed;
	if(m_Tcp)
		m_iUsed= MongateQueryUsed(m_hsock);
	else
		m_iUsed = MongateQueryUsedHttp(m_hsock);
	if (m_iUsed > 0)
		mystr.Format("��ѯʹ�óɹ�,����:%d",m_iUsed);
	else  
		mystr.Format("��ѯʹ��ʧ��,����:%d",m_iUsed); 
	m_listCtrl.InsertString(0,mystr);  
}

void CVcDemoDlg::OnBtnChangePwd()
{
	if (m_hsock<=0) {
		m_listCtrl.InsertString(0,"û�����ӵ�������");  
		return;
	}
	UpdateData();
	CString mystr;

	int res;
	if(m_Tcp)
		res = MongateChangePwd(m_hsock, m_strLoginID, m_strLoginPwd, m_strNewPwd);
	else 
		res = MongateChangePwdHttp(m_hsock, m_strLoginID, m_strLoginPwd, m_strNewPwd);
	if(res==1) mystr.Format("�޸�����ɹ�");
	else
		mystr.Format("�޸�����ʧ��,���أ�%d",res);
	m_listCtrl.InsertString(0,mystr);
}

void CVcDemoDlg::OnBtnTestConn() 
{
	if (m_hsock<=0) {
		m_listCtrl.InsertString(0,"û�����ӵ�������");  
		return;
	}
	CString mystr;
	int res;
	if(m_Tcp)
	{
		res = MongateTestConn(m_hsock);
	}else
		res = MongateTestConnHttp(m_hsock);	
	if(res==1) mystr.Format("�������ӳɹ�");
	else mystr.Format("��������ʧ��,���أ�%d",res);
	m_listCtrl.InsertString(0,mystr);
}

void CVcDemoDlg::OnBtnGetStatus() 
{
	if (m_hsock<=0) {
		m_listCtrl.InsertString(0,"û�����ӵ�������");  
		return;
	}
	char strMsg[500][255] = {0};
	CString mystr;
	int count;
	if(m_Tcp)
	 count= MongateCsGetStatusReport(m_hsock, strMsg);
	else
		count = MongateCsGetStatusReportHttp(m_hsock, strMsg);
	if (count == 0)
	{
		mystr="û����Ϣ�ɶ�";	
	}
	else if (count > 0)
	{
		for (int i=0; i < count; i++)
		{
			mystr.Format("%s%d��%s","״̬����", i+1, strMsg[i]);
			if(i!=count-1) m_listCtrl.InsertString(0,mystr);			
		}
	}
	else
	{
		mystr.Format("%s%d","��ȡ״̬����ʧ��,���أ�",count);		
	}
	m_listCtrl.InsertString(0,mystr);			
}

void CVcDemoDlg::OnChkBoth() 
{
	// TODO: Add your control notification handler code here
	myflag=2;
	OnUpdateEnables();	
}

void CVcDemoDlg::OnChkSingle() 
{
	// TODO: Add your control notification handler code here	
	myflag=1;
	m_btnSend.SetWindowText("������Ϣ");
	OnUpdateEnables();	
}

void CVcDemoDlg::OnChkKfboth() 
{
	// TODO: Add your control notification handler code here
	myflag=3;
	OnUpdateEnables();		
}

void CVcDemoDlg::OnBtnDisconn() 
{
	//UpdateData(TRUE);
	// TODO: Add your control notification handler code here
	if (m_hsock<=0) {
		m_listCtrl.InsertString(0,"û�����ӵ�������");  
		return;
	}
	CString mystr;
	
	// m_hsock = MongateConnect("server1.montnets.com", 8018, m_strLoginID,
	MongateDisconnect(m_hsock);	
	mystr.Format("�Ͽ�����");
	GetDlgItem(IDC_BTN_CONNECT)->EnableWindow(TRUE);
	GetDlgItem(IDC_BTN_DISCONN)->EnableWindow(FALSE);
	m_hsock=0;	 
	
	m_listCtrl.InsertString(0,mystr);		
	//UpdateData(FALSE);
}

void CVcDemoDlg::OnType() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	//int iRet=MongateSetCmdType(m_Port);
}

void CVcDemoDlg::OnChkProxy() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_bProxy)
	{
		GetDlgItem(IDC_EDIT_PROXYIP)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_PROXYPORT)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_PROXYID)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_PROXYPWD)->EnableWindow(TRUE);

	}
	else
	{
		GetDlgItem(IDC_EDIT_PROXYIP)->EnableWindow(FALSE);
		GetDlgItem(IDC_EDIT_PROXYPORT)->EnableWindow(FALSE);
		GetDlgItem(IDC_EDIT_PROXYID)->EnableWindow(FALSE);
		GetDlgItem(IDC_EDIT_PROXYPWD)->EnableWindow(FALSE);
	}
}

void CVcDemoDlg::OnCHECKtcp() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_Tcp)
		GetDlgItem(IDC_CHECKtcp)->SetWindowText("TCP");
	else
		GetDlgItem(IDC_CHECKtcp)->SetWindowText("HTTP");
	
}