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

📄 infodlg.cpp

📁 《Windows CE 应用程序设计》 书上的第七章第六节实例——火车时刻表查询工具——EVC开发的
💻 CPP
字号:
// InfoDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Crtt_CE.h"
#include "InfoDlg.h"


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

const MaxInfoCount=3;
TCHAR arrInfoName[MaxInfoCount][12]=
{
_T("车站名"),	
_T("到站时间"),	
_T("开车时间")	
};


/////////////////////////////////////////////////////////////////////////////
// CInfoDlg dialog


CInfoDlg::CInfoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CInfoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CInfoDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
m_sTitle=_T("");
m_sNote=_T("");
m_strTo=_T("");
m_bDisplayNote=0;
}


void CInfoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CInfoDlg)
	DDX_Control(pDX, IDC_LIST_INFO, m_InfoCtrl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CInfoDlg, CDialog)
	//{{AFX_MSG_MAP(CInfoDlg)
	ON_WM_LBUTTONDBLCLK()
	ON_WM_DESTROY()
	ON_WM_CLOSE()
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_INFO, OnDblclkListInfo)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CInfoDlg message handlers

BOOL CInfoDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	// TODO: Add extra initialization here
//m_InfoCtrl.SetColumnWidth(-1,-3);
m_InfoCtrl.AddColumn(arrInfoName[0],0);
m_InfoCtrl.SetColumnWidth(0,70);
m_InfoCtrl.AddColumn(arrInfoName[1],1);
m_InfoCtrl.SetColumnWidth(1,70);
m_InfoCtrl.AddColumn(arrInfoName[2],2);
m_InfoCtrl.SetColumnWidth(2,70);
//m_InfoCtrl.AddColumn(_T("备注"),3);
//m_InfoCtrl.SetColumnWidth(3,250);

SetWindowText(m_sTitle+_T(" 次列车的详细信息:"));
//GetDlgItem(IDC_STATIC_NOTE)->SetWindowText(_T("备注:"));
//GetDlgItem(IDC_EDIT_NOTE)->SetWindowText(m_sNote);

m_StationsArray.RemoveAll();
PrepareInfo(m_strTo);
//m_NoteArray.RemoveAll();
//PrepareInfo2(m_sNote);

int num=m_StationsArray.GetSize();
//int num2=m_NoteArray.GetSize();
for(int i=0;i<num;i++)
	{
	m_InfoCtrl.AddItem(i,0,GetStationName(m_StationsArray[i]));
	m_InfoCtrl.AddItem(i,1,GetArriveTime(m_StationsArray[i]));
	m_InfoCtrl.AddItem(i,2,GetStartTime(m_StationsArray[i]));
//	if(i<num2)m_InfoCtrl.AddItem(i,3,m_NoteArray[i]);
	}

return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
/*
BOOL CInfoDlg::PrepareInfo(CString strTo)
{
int len=strTo.GetLength();
int pos=strTo.Find(_T(";"));
if(pos>0)
	{
	strTo=strTo.Right(len-pos-1);
	len=strTo.GetLength();
	pos=strTo.Find(_T(";"));
	}
else
	return 0;
CString s;
CString s2,temp,temp2;
int pos2=0;
while(pos>0)
	{
	s=strTo.Left(pos);
//	AfxMessageBox(s);
	pos2=s.Find(_T("("));
	s2=s.Left(pos2+1);
	s=s.Right(s.GetLength()-pos2-1);
	//AfxMessageBox(s);
	pos2=s.Find(_T(","));
	temp=s.Left(pos2);
	//AfxMessageBox(temp);
	temp2=temp.Left(1);
	len=temp.GetLength();
	s2+=temp.Right(len-1)+temp2;
	//AfxMessageBox(s2);
	s=s2+s.Right(s.GetLength()-pos2);
//	AfxMessageBox(s);
	
	m_StationsArray.Add(s);

	len=strTo.GetLength();
	strTo=strTo.Right(len-pos-1);
	pos=strTo.Find(_T(";"));
	}
return 1;
}
*/
void CInfoDlg::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
		CDialog::OnLButtonDblClk(nFlags, point);
}

BOOL CInfoDlg::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::DestroyWindow();
}

void CInfoDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
	
}

CString  CInfoDlg::GetArriveTime(CString& str)
{
CString sRtn="";
int pos=str.Find(_T(","));
if(pos>0)
	{
	sRtn=str.Left(pos);
	str=str.Right(str.GetLength()-pos-1);
	return sRtn;
	}
else
	return sRtn;
}

CString  CInfoDlg::GetStartTime(CString& str)
{
CString sRtn="";
int pos=str.Find(_T(","));
if(pos>0)
	{
	sRtn=str.Left(pos);
	str=str.Right(str.GetLength()-pos-1);
	return sRtn;
	}
else
	return sRtn;
}
/*
BOOL CInfoDlg::PrepareInfo2(CString sNote)
{
int len=sNote.GetLength();
if(len<1)return 0;
TCHAR* str;
wsprintf(str,_T("%S"),sNote);//char* to TCHAR*
AfxMessageBox(str);
TCHAR* tkn=_T(",。:;");
TCHAR* ptr;
wsprintf(ptr,_T("%S"),sNote);//char* to TCHAR*
ptr=_tcstok(str,tkn);	
while(ptr)
	{
	m_NoteArray.Add(ptr);
	AfxMessageBox(ptr);
	ptr=_tcstok(NULL,tkn);	
	}
return 1;
}
BOOL CInfoDlg::PrepareInfo2(CString sNote)
{
int len=sNote.GetLength();
if(len<1)return 0;
int pos1=sNote.Find(_T"");
TCHAR* str;
wsprintf(str,_T("%S"),sNote);//char* to TCHAR*
AfxMessageBox(str);
TCHAR* tkn=_T(",。:;");
TCHAR* ptr;
wsprintf(ptr,_T("%S"),sNote);//char* to TCHAR*
ptr=_tcstok(str,tkn);	
while(ptr)
	{
	m_NoteArray.Add(ptr);
	AfxMessageBox(ptr);
	ptr=_tcstok(NULL,tkn);	
	}
return 1;
}
*/



void CInfoDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	if(m_bDisplayNote!=1)DisplayNote();
	CDialog::OnClose();
}

void CInfoDlg::OnDblclkListInfo(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	DisplayNote();
	*pResult = 0;
}

void CInfoDlg::DisplayNote()
{
//if(m_bDisplayNote==1)return;
m_bDisplayNote=1;
if(m_sNote!=_T(""))
	MessageBox(m_sNote,m_sTitle+_T(" 次列车的备注信息:"));	
}

/*
BOOL CInfoDlg::PrepareInfo(CString strTo)
{
int len=strTo.GetLength();
int pos=strTo.Find(_T(";"));
if(pos>0)
	{
	strTo=strTo.Right(len-pos-1);
	len=strTo.GetLength();
	pos=strTo.Find(_T(";"));
	}
else
	return 0;
CString s;
while(pos>0)
	{
	s=strTo.Left(pos);
	m_StationsArray.Add(s);
	len=strTo.GetLength();
	strTo=strTo.Right(len-pos-1);
	pos=strTo.Find(_T(";"));
	}
return 1;
}
*/


BOOL CInfoDlg::PrepareInfo(CString strTo)
{
//AfxMessageBox(strTo);
int len=strTo.GetLength();
int pos=strTo.Find(_T(";"));
CString s;

if(pos>0)
	{
	//2000.6.14. add
	s=strTo.Left(pos);
	if(s.Left(1)==_T("("))
		{
		//AfxMessageBox(s);
		//s=s.Right(s.GetLength()-1);
		//s=s.Left(s.GetLength()-1);
//		AfxMessageBox(s);
		m_StationsArray.Add(_T("\r")+s);
		}
	//2000.6.14. add end

	strTo=strTo.Right(len-pos-1);
	len=strTo.GetLength();
	pos=strTo.Find(_T(";"));
	}
else
	return 0;
while(pos>0)
	{
	s=strTo.Left(pos);
	s=s.Right(s.GetLength()-1);//2000.6.14. add

	//AfxMessageBox(s);

	m_StationsArray.Add(s);
	len=strTo.GetLength();
	strTo=strTo.Right(len-pos-1);
	pos=strTo.Find(_T(";"));
	}
return 1;
}

CString  CInfoDlg::GetStationName(CString& str)
{
//	AfxMessageBox(str);
CString sRtn="";
int len=str.GetLength();
int pos;
if(len>3)
	{
	//str=str.Mid(2,str.GetLength()-3);
	//2000.6.14.add
	pos=str.Find(_T("("));
	str=str.Right(str.GetLength()-pos-1);
	str=str.Left(str.GetLength()-1);
	//2000.6.14.add end
	//AfxMessageBox(str);
	}
else
	return str;
pos=str.Find(_T(","));
if(pos>0)
	{
	sRtn=str.Left(pos);
//	AfxMessageBox(sRtn);
	str=str.Right(str.GetLength()-pos-1);
//	AfxMessageBox(sRtn);
	return sRtn;
	}
else
	return sRtn;

}

⌨️ 快捷键说明

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