⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loadarrivechecknoquery.cpp

📁 码头手持机项目,用于统计集装箱,轮船的情况,手持机采用S3C2440处理器,数据传输采用2.4G无线,上位机用VC编写
💻 CPP
字号:
// LoadArriveCheckNoQuery.cpp : implementation file
//

#include "stdafx.h"
#include "CTSClient.h"
#include "LoadArriveCheckNoQuery.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
extern SOCKET clientSocket;
extern BOOL socketconnect;
/////////////////////////////////////////////////////////////////////////////
extern char recvbuf[10240];
extern char recvbuf2[3072];
extern char rectemp[50];

/////////////////////////////////////////////////////////////////////////////
// LoadArriveCheckNoQuery dialog


LoadArriveCheckNoQuery::LoadArriveCheckNoQuery(CWnd* pParent /*=NULL*/)
: CDialog(LoadArriveCheckNoQuery::IDD, pParent)
{
	//{{AFX_DATA_INIT(LoadArriveCheckNoQuery)
	m_arriveCheckNo = _T("");
	modify = false;
	arriveCheckNo = _T("");
	shipNameC = _T("");
	voyageNo = _T("");
	objectId = _T("");
	//}}AFX_DATA_INIT
}


void LoadArriveCheckNoQuery::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(LoadArriveCheckNoQuery)
	DDX_Control(pDX, IDC_LOAD_ARRIVECHECKNO_LIST, m_load_arriveCheckNo_list);
	DDX_Text(pDX, IDC_EDIT1, m_arriveCheckNo);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(LoadArriveCheckNoQuery, CDialog)
//{{AFX_MSG_MAP(LoadArriveCheckNoQuery)
ON_NOTIFY(NM_CLICK, IDC_LOAD_ARRIVECHECKNO_LIST, OnClickLoadArrivechecknoList)
ON_BN_CLICKED(IDC_BUTTON4, OnOK)
ON_BN_CLICKED(IDC_BUTTON5, OnCancel)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// LoadArriveCheckNoQuery message handlers

void LoadArriveCheckNoQuery::OnOK() 
{
	// TODO: Add your control notification handler code here
	if (!socketconnect)
    {
		MessageBox(_T("与服务器连接中断,请检查网络后重新登录该系统!"),_T("出错提示"));
		return;
    }
	
	int sPos=m_load_arriveCheckNo_list.GetSelectionMark();
    if(sPos==-1){
		MessageBox(_T("请先选择一条记录!!!"),_T("出错提示"));
	}
    else{
		modify = true;
		CDialog::OnOK();
	}
}

void LoadArriveCheckNoQuery::OnCancel() 
{
	// TODO: Add your control notification handler code here
	modify = false;
	CDialog::OnCancel();
}

void LoadArriveCheckNoQuery::InitArriveCheckNoListCaption()
{
    DWORD dwStyle=LVS_EX_HEADERDRAGDROP | LVS_EX_TRACKSELECT|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EDITLABELS;
	m_load_arriveCheckNo_list.SetExtendedStyle(dwStyle);
	
	LV_COLUMN lvc;
	lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT;
	lvc.fmt=LVCFMT_CENTER;
	
	RECT rect;
	m_load_arriveCheckNo_list.GetWindowRect(&rect);
	int wid=rect.right-rect.left;
	
	lvc.iSubItem = 0;
	lvc.pszText = _T("到验号");
	lvc.cx = wid/3;
	m_load_arriveCheckNo_list.InsertColumn(0,&lvc);
	lvc.iSubItem = 1;
	lvc.pszText = _T("中文船名");
	lvc.cx = wid/3;
	m_load_arriveCheckNo_list.InsertColumn(1,&lvc);
	lvc.iSubItem = 2;
	lvc.pszText = _T("航次");
	lvc.cx = wid/3;
	m_load_arriveCheckNo_list.InsertColumn(2,&lvc);
	lvc.iSubItem = 3;
	lvc.pszText = _T("流水号");
	lvc.cx = 1;
	m_load_arriveCheckNo_list.InsertColumn(3,&lvc);
	
	CImageList img;
    img.Create(1,18,ILC_MASK,2,2);
    m_load_arriveCheckNo_list.SetImageList(&img,LVSIL_SMALL);
	
	m_load_arriveCheckNo_list.SetBkColor(RGB(247,247,255));
    m_load_arriveCheckNo_list.SetTextColor(RGB(0,0,255));
    m_load_arriveCheckNo_list.SetTextBkColor(RGB(247,247,255));
}

BOOL LoadArriveCheckNoQuery::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	InitArriveCheckNoListCaption();
	
	/////////////////////////////////////////////////////////////////////////////////////
    if (!socketconnect)
    {
		MessageBox(_T("与服务器连接中断,请检查网络后重新登录该系统!"),_T("出错提示"));
		return false;
    }
	/////////////////////////////////////////////////////////////////////////////////////
	
	UpdateData(true);
	
	CString ACQSQL = _T("");	
	ACQSQL = " select top 6 a.arriveCheckNo,b.shipNameC,a.voyageNo,a.objectId from tallylist a ,ship b where a.shipObjId = b.objectId and a.isLoad = '1' order by arriveCheckNo desc "; 	
    ACQSQL="   "+ACQSQL+'\0';
	
	int iSize = 0;
	char* pszMultiByte;
	iSize = WideCharToMultiByte(CP_ACP, 0, ACQSQL, -1, NULL, 0, NULL, NULL);
    pszMultiByte = (char*)malloc((iSize+1)*sizeof(char));
	WideCharToMultiByte(CP_ACP, 0, ACQSQL, -1, pszMultiByte, iSize, NULL, NULL);
	*pszMultiByte=3;
	pszMultiByte++;
	*pszMultiByte=iSize/256;
    pszMultiByte++;
    *pszMultiByte=iSize%256;
	pszMultiByte=pszMultiByte-2;
	int i = 0,j = 0;
	int totalnum = 0;
	
    int itemcount = m_load_arriveCheckNo_list.GetItemCount();
	for (j=0;j<itemcount;j++)
		m_load_arriveCheckNo_list.DeleteItem(itemcount-1-j);
	int mint=send(clientSocket,pszMultiByte,iSize,0);
	free(pszMultiByte);
	delete pszMultiByte;
	
    int temp1 = 0,temp2 = 0,actint = 0;
	int retint=recv(clientSocket,recvbuf2,sizeof(recvbuf2),0);
	
	if (recvbuf2[0]==8 && retint==1)
	{
        MessageBox(_T("网络传输出错,请重新点击按钮再试一次!!!"),_T("提示"));
		return false;
	}
	
	if (recvbuf2[0]==27)
	{	
		MessageBox(_T("数据库中无装船记录!"),_T("出错提示"),MB_OK);	
		return false;
	}

	temp1=recvbuf2[0];
	if (temp1<0)
		temp1=temp1+256;
	temp2=recvbuf2[1];
	if (temp2<0)
		temp2=temp2+256;
	actint=temp1*256+temp2;
	totalnum=0;
	for (i=0;i<retint;i++)
		recvbuf[totalnum+i]=recvbuf2[i];
    recvbuf[0]=32;
    recvbuf[1]=32;
    totalnum+=retint;
    while(totalnum!=actint)
	{
        retint=recv(clientSocket,recvbuf2,sizeof(recvbuf2),0);
		
		for (i=0;i<retint;i++)
			recvbuf[totalnum+i]=recvbuf2[i];
		totalnum+=retint;
	}
	CString strtemp;
	int rowcount,colcount;
	char* ptch;
	j=0;
	rowcount=0;
	colcount=0;
	strtemp="";
	m_load_arriveCheckNo_list.InsertItem(rowcount,(LPCTSTR)strtemp);
	for (i=0;i<totalnum;i++)
	{
		if (recvbuf[i]!=26 && recvbuf[i]!=27)
		{
			rectemp[j]=recvbuf[i];
			j++;
		}
		if (recvbuf[i]==26 && j!=0)
		{
			rectemp[j]='\0';
			j=0;
			if (colcount==0 && rowcount==0)
				ptch=rectemp+2;
			else
				ptch=rectemp;
			strtemp=ptch;
			m_load_arriveCheckNo_list.SetItemText(rowcount,colcount,strtemp);
			colcount++;
		}
		if (recvbuf[i]==27)
		{
			j=0;
			colcount=0;
			rowcount++;
			if (i!=totalnum-1)
				m_load_arriveCheckNo_list.InsertItem(rowcount,(LPCTSTR)strtemp);
		}
	}
	UpdateData(false);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void LoadArriveCheckNoQuery::OnClickLoadArrivechecknoList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int iPos=m_load_arriveCheckNo_list.GetSelectionMark();
	arriveCheckNo=m_load_arriveCheckNo_list.GetItemText(iPos,0);
	shipNameC=m_load_arriveCheckNo_list.GetItemText(iPos,1);
	voyageNo=m_load_arriveCheckNo_list.GetItemText(iPos,2);
    objectId=m_load_arriveCheckNo_list.GetItemText(iPos,3);
	
	UpdateData(FALSE);
	
	*pResult = 0;
}

void LoadArriveCheckNoQuery::OnButton6() 
{
	// TODO: Add your control notification handler code here
	/////////////////////////////////////////////////////////////////////////////////////
    if (!socketconnect)
    {
		MessageBox(_T("与服务器连接中断,请检查网络后重新登录该系统!"),_T("出错提示"));
		return;
    }
	/////////////////////////////////////////////////////////////////////////////////////
	
	UpdateData(true);
	
	if (m_arriveCheckNo== VT_EMPTY){
		MessageBox(_T("请先输入到验号!"),_T("出错提示"));
		return;
	}
	
	CString ACQSQL = _T("");
	ACQSQL = " select a.arriveCheckNo,b.shipNameC,a.voyageNo,a.objectId from tallylist a ,ship b where a.shipObjId = b.objectId and a.isLoad = '1' "; 	
	if (m_arriveCheckNo != VT_EMPTY){
		ACQSQL = ACQSQL + " and a.arriveCheckNo like \'" + "%" + m_arriveCheckNo + "\'" ;
	}
    ACQSQL="   "+ACQSQL+'\0';
	
	int iSize = 0;
	char* pszMultiByte;
	iSize = WideCharToMultiByte(CP_ACP, 0, ACQSQL, -1, NULL, 0, NULL, NULL);
    pszMultiByte = (char*)malloc((iSize+1)*sizeof(char));
	WideCharToMultiByte(CP_ACP, 0, ACQSQL, -1, pszMultiByte, iSize, NULL, NULL);
	*pszMultiByte=3;
	pszMultiByte++;
	*pszMultiByte=iSize/256;
    pszMultiByte++;
    *pszMultiByte=iSize%256;
	pszMultiByte=pszMultiByte-2;
	int i = 0,j = 0;
	int totalnum = 0;
	
    int itemcount = m_load_arriveCheckNo_list.GetItemCount();
	for (j=0;j<itemcount;j++)
		m_load_arriveCheckNo_list.DeleteItem(itemcount-1-j);
	int mint=send(clientSocket,pszMultiByte,iSize,0);
	free(pszMultiByte);
	delete pszMultiByte;
	
    int temp1 = 0,temp2 = 0,actint = 0;
	int retint=recv(clientSocket,recvbuf2,sizeof(recvbuf2),0);
	
	if (recvbuf2[0]==8 && retint==1)
	{
        MessageBox(_T("网络传输出错,请重新点击按钮再试一次!!!"),_T("提示"));
		return;
	}
	
    if (recvbuf2[0]==27)
	{
		int itemcount = m_load_arriveCheckNo_list.GetItemCount();
		for (j=0;j<itemcount;j++)
			m_load_arriveCheckNo_list.DeleteItem(itemcount-1-j);
		
		m_arriveCheckNo= _T("");
		
		UpdateData(false);
		
		MessageBox(_T("数据库中无装船记录!"),_T("出错提示"),MB_OK);
		
		return;
	}
	
	temp1=recvbuf2[0];
	if (temp1<0)
		temp1=temp1+256;
	temp2=recvbuf2[1];
	if (temp2<0)
		temp2=temp2+256;
	actint=temp1*256+temp2;
	totalnum=0;
	for (i=0;i<retint;i++)
		recvbuf[totalnum+i]=recvbuf2[i];
    recvbuf[0]=32;
    recvbuf[1]=32;
    totalnum+=retint;
    while(totalnum!=actint)
	{
        retint=recv(clientSocket,recvbuf2,sizeof(recvbuf2),0);
		
		for (i=0;i<retint;i++)
			recvbuf[totalnum+i]=recvbuf2[i];
		totalnum+=retint;
	}
	CString strtemp =  _T("");;
	int rowcount = 0,colcount = 0;
	char* ptch;
	m_load_arriveCheckNo_list.InsertItem(rowcount,(LPCTSTR)strtemp);
	for (i=0;i<totalnum;i++)
	{
		if (recvbuf[i]!=26 && recvbuf[i]!=27)
		{
			rectemp[j]=recvbuf[i];
			j++;
		}
		if (recvbuf[i]==26 && j!=0)
		{
			rectemp[j]='\0';
			j=0;
			if (colcount==0 && rowcount==0)
				ptch=rectemp+2;
			else
				ptch=rectemp;
			strtemp=ptch;
			m_load_arriveCheckNo_list.SetItemText(rowcount,colcount,strtemp);
			colcount++;
		}
		if (recvbuf[i]==27)
		{
			j=0;
			colcount=0;
			rowcount++;
			if (i!=totalnum-1)
				m_load_arriveCheckNo_list.InsertItem(rowcount,(LPCTSTR)strtemp);
		}
	}
	UpdateData(false);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -