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

📄 loadbaynolistinfo.cpp

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

#include "stdafx.h"
#include "CTSClient.h"
#include "LoadBayNoListInfo.h"

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

/////////////////////////////////////////////////////////////////////////////
extern SOCKET clientSocket;
extern BOOL socketconnect;

extern int currentRow;
/////////////////////////////////////////////////////////////////////////////
extern char recvbuf[10240];
extern char recvbuf2[3072];
extern char rectemp[50];
/////////////////////////////////////////////////////////////////////////////
// LoadBayNoListInfo dialog


LoadBayNoListInfo::LoadBayNoListInfo(CWnd* pParent /*=NULL*/)
: CDialog(LoadBayNoListInfo::IDD, pParent)
{
	//{{AFX_DATA_INIT(LoadBayNoListInfo)
	m_containerSize = _T("");
	m_containerStatus = _T("");
	m_containerType = _T("");
	m_cargoWeight = _T("");
	m_dischargePortNameC = _T("");
	m_deliveryPortNameC = _T("");
    bayNoModify = false;
	arriveCheckNo = _T("");
	objectId = _T("");
	bayNo = _T("");
	tallyListItemObjectId = _T("");
	tallyListObjId = _T("");
	//}}AFX_DATA_INIT
}


void LoadBayNoListInfo::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(LoadBayNoListInfo)
	DDX_Control(pDX, IDC_LIST1, m_bayList);
	DDX_Text(pDX, IDC_EDIT1, m_containerSize);
	DDX_Text(pDX, IDC_EDIT2, m_containerStatus);
	DDX_Text(pDX, IDC_EDIT4, m_containerType);
	DDX_Text(pDX, IDC_EDIT8, m_cargoWeight);
	DDX_Text(pDX, IDC_EDIT9, m_dischargePortNameC);
	DDX_Text(pDX, IDC_EDIT10, m_deliveryPortNameC);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(LoadBayNoListInfo, CDialog)
//{{AFX_MSG_MAP(LoadBayNoListInfo)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// LoadBayNoListInfo message handlers

BOOL LoadBayNoListInfo::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
    UpdateData(true);
	
    bayNoModify = false;
	InitBayListCaption();
	
	/////////////////////////////////////////////////////////////////////////////////////
    if (!socketconnect)
    {
		MessageBox(_T("与服务器连接中断,请检查网络后重新登录该系统!"),_T("出错提示"));
		return false;
    }
	////////////////////////////////////////////////////////////////////////////////////
	
	CString LLBLSQL =  _T("");
	LLBLSQL = "select objectId,bayNo from bayplan where arriveCheckNo = '"+arriveCheckNo+"' order by bayNo "; 
	LLBLSQL="   "+LLBLSQL+'\0';
	
	int iSize = 0;
	char* pszMultiByte;
	iSize = WideCharToMultiByte(CP_ACP, 0, LLBLSQL, -1, NULL, 0, NULL, NULL);
	pszMultiByte = (char*)malloc((iSize+1)*sizeof(char));
	WideCharToMultiByte(CP_ACP, 0, LLBLSQL, -1, pszMultiByte, iSize, NULL, NULL);
	*pszMultiByte=3;
	pszMultiByte++;
	*pszMultiByte=iSize/256;
	pszMultiByte++;
	*pszMultiByte=iSize%256;
	pszMultiByte=pszMultiByte-2;
	int i = 0,j = 0;
	int retint = 0;
	int totalnum = 0;
	
	int itemcount = m_bayList.GetItemCount();
	for (j=0;j<itemcount;j++)
		m_bayList.DeleteItem(itemcount-1-j);
	int mint=send(clientSocket,pszMultiByte,iSize,0);
	free(pszMultiByte);
	delete pszMultiByte;
	
	int temp1 = 0,temp2 = 0,actint = 0;
	retint=recv(clientSocket,recvbuf2,sizeof(recvbuf2),0);
	if (recvbuf2[0]==8 && retint==1)
	{
        MessageBox(_T("网络传输出错,请重新点击按钮再试一次!!!"),_T("提示"));
		return false;
	}
	if (recvbuf2[0]==27){
		//code begin
		CString BFOQSQL = _T("");
        BFOQSQL = "select b.objectId from tallylist a,bayframe b where a.shipObjId = b.shipObjId and a.objectId = '"+tallyListObjId+"'";
        BFOQSQL="   "+BFOQSQL+'\0';
		int iSize = 0;
		char* pszMultiByte;
		iSize = WideCharToMultiByte(CP_ACP, 0, BFOQSQL, -1, NULL, 0, NULL, NULL);
		pszMultiByte = (char*)malloc((iSize+1)*sizeof(char));
		WideCharToMultiByte(CP_ACP, 0, BFOQSQL, -1, pszMultiByte, iSize, NULL, NULL); 
		*pszMultiByte=3;
		pszMultiByte++;
		*pszMultiByte=iSize/256;
		pszMultiByte++;
		*pszMultiByte=iSize%256;
		pszMultiByte=pszMultiByte-2;
		send(clientSocket,pszMultiByte,iSize,0);
		free(pszMultiByte);
		delete pszMultiByte;
		retint=recv(clientSocket,recvbuf2,sizeof(recvbuf2),0);
        if (recvbuf2[0]==27){
			MessageBox(_T("该船舶还没有规划分BAY图,请先规划!!!"),_T("出错提示"));
			currentRow = -1;
            UpdateData(false);
			return false;
		}else{
			//insert bayplan begin;	
			LLBLSQL = _T("");
			LLBLSQL = " insert into bayplan (objectId,bayframeObjId,shipObjId,voyageNo,bayNo,tallylistObjId,arriveCheckNo) select a.arriveCheckNo+b.bayNo,b.objectId,a.shipObjId,a.voyageNo,b.bayNo,a.objectId,a.arriveCheckNo from tallylist a,bayframe b where a.shipObjId = b.shipObjId and  a.objectId = '"+tallyListObjId+"'";
			LLBLSQL = "   "+LLBLSQL+'\0';
			
			iSize = WideCharToMultiByte(CP_ACP, 0, LLBLSQL, -1, NULL, 0, NULL, NULL);
			pszMultiByte = (char*)malloc((iSize+1)*sizeof(char));
			WideCharToMultiByte(CP_ACP, 0, LLBLSQL, -1, pszMultiByte, iSize, NULL, NULL); 
			*pszMultiByte=1;
			pszMultiByte++;
			*pszMultiByte=iSize/256;
			pszMultiByte++;
			*pszMultiByte=iSize%256;
			pszMultiByte=pszMultiByte-2;
			send(clientSocket,pszMultiByte,iSize,0);
			free(pszMultiByte);
			delete pszMultiByte;
			retint=recv(clientSocket,recvbuf2,sizeof(recvbuf2), 0);
			if (recvbuf2[0]==8 && retint==1)
			{
				MessageBox(_T("网络传输出错,请重新点击按钮再试一次!!!"),_T("提示"));
				return false;
			}
			//insert bayplan end;
			
			//select bayplan begin;
			LLBLSQL = _T("");
			LLBLSQL = "select objectId,bayNo from bayplan where arriveCheckNo = '"+arriveCheckNo+"'"; 
			LLBLSQL="   "+LLBLSQL+'\0';
			
			iSize = WideCharToMultiByte(CP_ACP, 0, LLBLSQL, -1, NULL, 0, NULL, NULL);
			pszMultiByte = (char*)malloc((iSize+1)*sizeof(char));
			WideCharToMultiByte(CP_ACP, 0, LLBLSQL, -1, pszMultiByte, iSize, NULL, NULL); 
			*pszMultiByte=3;
			pszMultiByte++;
			*pszMultiByte=iSize/256;
			pszMultiByte++;
			*pszMultiByte=iSize%256;
			pszMultiByte=pszMultiByte-2;
			send(clientSocket,pszMultiByte,iSize,0);
			free(pszMultiByte);
			delete pszMultiByte;
			
			int temp1 = 0,temp2 = 0,actint = 0;
			retint=recv(clientSocket,recvbuf2,sizeof(recvbuf2),0);
			if (recvbuf2[0]==8 && retint==1)
			{
				MessageBox(_T("网络传输出错,请重新点击按钮再试一次!!!"),_T("提示"));
				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;
			j=0;
			rowcount=0;
			colcount=0;
			strtemp="";
			m_bayList.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;
					strtemp=rectemp;
					m_bayList.SetItemText(rowcount,colcount,strtemp);
					colcount++;
				}
				if (recvbuf[i]==27)
				{
					j=0;
					colcount=0;
					rowcount++;
					if (i!=totalnum-1)
						m_bayList.InsertItem(rowcount,(LPCTSTR)strtemp);
				}
			}
			m_bayList.SetItemState(currentRow,LVIS_SELECTED,LVIS_SELECTED);
			UpdateData(false);
			//select bayplan end;
		}
		//code end	
	}
	else
	{
		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_bayList.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_bayList.SetItemText(rowcount,colcount,strtemp);
				colcount++;
			}
			if (recvbuf[i]==27)
			{
				j=0;
				colcount=0;
				rowcount++;
				if (i!=totalnum-1)
					m_bayList.InsertItem(rowcount,(LPCTSTR)strtemp);
			}
		}
		m_bayList.SetItemState(currentRow,LVIS_SELECTED,LVIS_SELECTED); 
		UpdateData(false);
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void LoadBayNoListInfo::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int iPos=m_bayList.GetSelectionMark();
	currentRow=iPos;
	
	objectId=m_bayList.GetItemText(iPos,0);
	bayNo=m_bayList.GetItemText(iPos,1);
	UpdateData(false);
	
	*pResult = 0;
}

void LoadBayNoListInfo::OnButton1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int iPos=currentRow;
	objectId=m_bayList.GetItemText(iPos,0);
	bayNo=m_bayList.GetItemText(iPos,1);
	
    if(iPos==-1){
		MessageBox(_T("请先选择一条记录!!!"),_T("出错提示"));
	}
    else
	{
		bayNoModify = true;
		CDialog::OnOK();	
	}
	UpdateData(false);
}

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

void LoadBayNoListInfo::InitBayListCaption()
{
    DWORD dwStyle=LVS_EX_HEADERDRAGDROP | LVS_EX_TRACKSELECT|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EDITLABELS;
	m_bayList.SetExtendedStyle(dwStyle);
	
	LV_COLUMN lvc;
	lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT;
	lvc.fmt=LVCFMT_CENTER;
	
	RECT rect;
	m_bayList.GetWindowRect(&rect);
	int wid=rect.right-rect.left;
	
	lvc.iSubItem = 0;
	lvc.pszText = _T("分BAY图流水号");
	lvc.cx = 1;
	m_bayList.InsertColumn(0,&lvc);
	lvc.iSubItem = 1;
	lvc.pszText = _T("分BAY图编号");
	lvc.cx = wid;
	m_bayList.InsertColumn(1,&lvc);
	
	CImageList img;
    img.Create(1,18,ILC_MASK,2,2);
    m_bayList.SetImageList(&img,LVSIL_SMALL);
	
	m_bayList.SetBkColor(RGB(247,247,255));
    m_bayList.SetTextColor(RGB(0,0,255));
    m_bayList.SetTextBkColor(RGB(247,247,255));
}

⌨️ 快捷键说明

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