?? queryview.cpp
字號:
// QueryView.cpp : implementation file
//
#include "stdafx.h"
#include "3d.h"
#include "QueryView.h"
#include "mainfrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CQueryView
IMPLEMENT_DYNCREATE(CQueryView, CFormView)
CQueryView::CQueryView()
: CFormView(CQueryView::IDD)
{
//{{AFX_DATA_INIT(CQueryView)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CQueryView::~CQueryView()
{
}
void CQueryView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CQueryView)
DDX_Control(pDX, IDC_OTHERSTART2, m_bqstartctrl);
DDX_Control(pDX, IDC_OTHERSTART, m_otherstartctrl);
DDX_Control(pDX, IDC_END, m_endctrl);
DDX_Control(pDX, IDC_START, m_startctrl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CQueryView, CFormView)
//{{AFX_MSG_MAP(CQueryView)
ON_BN_CLICKED(IDC_DRAWLINE1, OnDrawline1)
ON_BN_CLICKED(IDC_QUERY1, OnQuery1)
ON_BN_CLICKED(IDC_QUERY3DOTHER, OnQuery3dother)
ON_BN_CLICKED(IDC_QUERY3DBQ, OnQuery3dbq)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQueryView diagnostics
#ifdef _DEBUG
void CQueryView::AssertValid() const
{
CFormView::AssertValid();
}
void CQueryView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CQueryView message handlers
void CQueryView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(1);
((CButton*)GetDlgItem(IDC_RADIO4))->SetCheck(1);
m_visit.OnInit3D();
CString strtmp = "";
int ncount = 0;
while(!m_visit.m_pSet->IsEOF())
{
strtmp.Format ("%d",m_visit.m_pSet->m_ItemNo);
m_startctrl.AddString(strtmp);
m_endctrl.AddString(strtmp);
m_otherstartctrl.AddString(strtmp);
m_bqstartctrl.AddString(strtmp);
m_visit.m_pSet->MoveNext();
ncount++;
}
m_visit.OnClose3D();
m_startctrl.SetCurSel(5);
m_endctrl.SetCurSel(ncount-1);
m_otherstartctrl.SetCurSel(5);
m_bqstartctrl.SetCurSel(5);
}
void CQueryView::OnDrawline1()
{
}
void CQueryView::OnQuery1()
{
//檢查和獲取各個選擇項的狀態及取值
mystate.bstartno = ((CButton*)GetDlgItem(IDC_CHECK1))->GetState();
mystate.bendno = ((CButton*)GetDlgItem(IDC_CHECK2))->GetState();
mystate.bhan = ((CButton*)GetDlgItem(IDC_CHECK3))->GetState();
mystate.bCount = ((CButton*)GetDlgItem(IDC_CHECK4))->GetState();
mystate.bcontinue = ((CButton*)GetDlgItem(IDC_CHECK5))->GetState();
mystate.bsametail = ((CButton*)GetDlgItem(IDC_CHECK6))->GetState();
mystate.bjgq = ((CButton*)GetDlgItem(IDC_CHECK7))->GetState();
mystate.bjl = ((CButton*)GetDlgItem(IDC_CHECK8))->GetState();
mystate.b0 = ((CButton*)GetDlgItem(IDC_CHECK9))->GetState();
mystate.b1 = ((CButton*)GetDlgItem(IDC_CHECK10))->GetState();
mystate.b2 = ((CButton*)GetDlgItem(IDC_CHECK11))->GetState();
mystate.bds = ((CButton*)GetDlgItem(IDC_CHECK12))->GetState();
if(((CButton*)GetDlgItem(IDC_RADIO1))->GetCheck() == 1) //選擇了直選方式
{
((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(0);
((CButton*)GetDlgItem(IDC_RADIO3))->SetCheck(0);
mystate.ustate = 1;
}
if(((CButton*)GetDlgItem(IDC_RADIO2))->GetCheck() == 1) //選擇了組3方式
{
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(0);
((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(0);
mystate.ustate = 2;
}
if(((CButton*)GetDlgItem(IDC_RADIO3))->GetCheck() == 1) //選擇了組6方式
{
((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(0);
((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(0);
mystate.ustate = 3;
}
CString strtmp = "";
int index = ((CComboBox*)GetDlgItem(IDC_START))->GetCurSel();
((CComboBox*)GetDlgItem(IDC_START))->GetLBText( index, strtmp);
mystate.ustartNo = atoi(strtmp);
index = ((CComboBox*)GetDlgItem(IDC_END))->GetCurSel();
((CComboBox*)GetDlgItem(IDC_END))->GetLBText( index, strtmp);
mystate.uendNo = atoi(strtmp);
((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(mystate.strhan);
((CEdit*)GetDlgItem(IDC_EDIT2))->GetWindowText(mystate.strCount);
((CEdit*)GetDlgItem(IDC_EDIT3))->GetWindowText(strtmp);
mystate.ucontinue = atoi(strtmp);
((CEdit*)GetDlgItem(IDC_EDIT4))->GetWindowText(strtmp);
mystate.usametail = atoi(strtmp);
((CEdit*)GetDlgItem(IDC_EDIT5))->GetWindowText(strtmp);
mystate.ujgq = atoi(strtmp);
((CEdit*)GetDlgItem(IDC_EDIT6))->GetWindowText(strtmp);
mystate.ujl = atoi(strtmp);
((CEdit*)GetDlgItem(IDC_EDIT7))->GetWindowText(strtmp);
mystate.ub0 = atoi(strtmp);
((CEdit*)GetDlgItem(IDC_EDIT8))->GetWindowText(strtmp);
mystate.ub1 = atoi(strtmp);
((CEdit*)GetDlgItem(IDC_EDIT9))->GetWindowText(strtmp);
mystate.ub2 = atoi(strtmp);
((CEdit*)GetDlgItem(IDC_EDIT10))->GetWindowText(strtmp);
mystate.uds = atoi(strtmp);
QueryAll(mystate,myarray);
//將查詢到的結果送到歷史數據視
CMainFrame* pmain = (CMainFrame*)AfxGetMainWnd();
HWND m_hwnd;
m_hwnd = (pmain->m_Framework.Get(3))->GetSafeWnd()->m_hWnd;
::PostMessage(m_hwnd,WM_DISPDATA,(WPARAM)&myarray,0);
}
//計算字符串中的參數個數,strDomain為要計算參數個數的字符串,cfgf為分隔符
void fjstrParam(CString strDomain,char cfgf,CStringArray& m_strarray)
{
//首先初始化引用數組
m_strarray.RemoveAll();
int ifirst=0;
int ilen;
int ncount = 0;
strDomain.TrimLeft();
strDomain.TrimRight();
strDomain.MakeUpper();
int i = strDomain.Find(cfgf);
if(i < 0) //類型或值域字符串中僅僅只有一項時
{
m_strarray.Add(strDomain);
return ;
}
CString strtemp;
ilen = strDomain.GetLength();
while(i<ilen)
{
strtemp = strDomain.Mid(ifirst,i);
m_strarray.Add(strtemp);
strDomain = strDomain.Mid(i+1,ilen);
strDomain.TrimLeft();
strDomain.TrimRight();
ilen = strDomain.GetLength();
i = strDomain.Find(cfgf);
if(i<0)
{
//把最后一個數寫入數組
m_strarray.Add(strDomain);
return ;
}
}
}
/////////////////////////////////////////
//一個數組所有元素同尾數最多的個數
int FindSametail(UINT m[])
{
int nmax = 0;
int ntmp = 0;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if((m[i] - m[j]) == 0)
ntmp++;
}
if(nmax < ntmp)
nmax = ntmp;
ntmp = 0;
}
return nmax;
}
//計算字符串中的參數個數,strDomain為要計算參數個數的字符串,cfgf為分隔符
int fjstrtoUint(CString strDomain,char cfgf,CByteArray& barry)
{
barry.RemoveAll();
int ifirst=0;
int ilen;
int ncount = 0;
strDomain.TrimLeft();
strDomain.TrimRight();
strDomain.MakeUpper();
int i = strDomain.Find(cfgf);
if(i < 0) //類型或值域字符串中僅僅只有一項時
{
barry.Add(atoi(strDomain));
ncount++;
return ncount;
}
CString strtmp;
ilen = strDomain.GetLength();
while(i<ilen)
{
strtmp = strDomain.Mid(ifirst,i);
if(strtmp == "*")
barry.Add(99);
else
barry.Add(atoi(strtmp));
ncount++;
strDomain = strDomain.Mid(i+1,ilen);
strDomain.TrimLeft();
strDomain.TrimRight();
ilen = strDomain.GetLength();
i = strDomain.Find(cfgf);
if(i<0)
{
//把最后一個數寫入數組
if(strDomain == "*")
barry.Add(99);
else
barry.Add(atoi(strDomain));
ncount++;
return ncount;
}
}
return 0;
}
//判斷直選下所含號碼時用
int FindSame(UINT m_data[],CByteArray& m)
{
int n = 0;
for(int j=0;j<m.GetSize();j++)
{
if(m[j] == 99)
n++;
if(m_data[j] == m[j])
n++;
}
return n;
}
//判斷組3下所含號碼時用
int FindSamez3(UINT m_data[],CByteArray& m)
{
int n = 0;
for(int j=0;j<m.GetSize();j++)
{
if(m[j] == 99)
n++;
for(int k=0;k<3;k++)
{
if(m_data[k] == m[j] )
{
n++;
continue;
}
}
}
return n;
}
//判斷組6下所含號碼時用
int FindSamez6(UINT m_data[],CByteArray& m)
{
int n = 0;
for(int j=0;j<m.GetSize();j++)
{
if(m[j] == 99)
n++;
for(int k=0;k<3;k++)
{
if(m_data[k] == m[j] )
{
n++;
break;
}
}
}
return n;
}
//根據所給定的所有條件進行查詢,最終結果存放在m_array中
void CQueryView::QueryAll(QUERYSTATE mystate,L3DARRAY& m_array)
{
m_array.RemoveAll();
m_visit.OnInit3D();
UINT m_data[3] = {0,0,0};
UINT m_Count[2] = {0,0};
CStringArray m_strary;
CByteArray m_barry;
fjstrParam(mystate.strhan,' ',m_strary);
for(int i=0;i<m_strary.GetSize();i++)
m_data[i] = atoi(m_strary.GetAt(i));
//所含號碼個數nCount
int nCount = m_strary.GetSize();
//號碼和值
int ncountvalue = 0;
fjstrParam(mystate.strCount,' ',m_strary);
for(i=0;(i<m_strary.GetSize() && i<2);i++)
m_Count[i] = atoi(m_strary.GetAt(i));
int nCountValue = m_strary.GetSize();
L3DDATA myl3Ddata;
bool bstate = 0;
CString strtmp = "";
/////////////////////////////////////
//在開始查詢前限定查詢范圍
while(!m_visit.m_pSet->IsEOF())
{
bstate = (mystate.bhan == 0) && (mystate.bCount == 0) && (mystate.bcontinue == 0) && \
(mystate.bsametail == 0) && (mystate.bds == 0) &&(mystate.b0 == 0) && \
(mystate.b1 == 0) && (mystate.b2 == 0) && (mystate.bjgq == 0) && (mystate.bjl == 0)\
&& (mystate.bstartno == 0) && (mystate.bendno == 0);
if(bstate) //所有條件全部不選擇
{
myl3Ddata.strbsg = "";
myl3Ddata.uItemNo = m_visit.m_pSet->m_ItemNo;
myl3Ddata.uBNo = m_visit.m_pSet->m_BNo;
myl3Ddata.uSNo = m_visit.m_pSet->m_SNo;
myl3Ddata.uGNo = m_visit.m_pSet->m_GNo;
strtmp.Format("%d ",myl3Ddata.uBNo);
myl3Ddata.strbsg += strtmp;
strtmp.Format("%d ",myl3Ddata.uSNo);
myl3Ddata.strbsg += strtmp;
strtmp.Format("%d",myl3Ddata.uGNo);
myl3Ddata.strbsg += strtmp;
myl3Ddata.uCountValue = m_visit.m_pSet->m_BNo + m_visit.m_pSet->m_SNo + m_visit.m_pSet->m_GNo;
m_array.Add(myl3Ddata);
}
bstate = (mystate.bhan == 0) && (mystate.bCount == 0) && (mystate.bcontinue == 0) && \
(mystate.bsametail == 1) && (mystate.bds == 0) &&(mystate.b0 == 0) && \
(mystate.b1 == 0) && (mystate.b2 == 0) && (mystate.bjgq == 0) && (mystate.bjl == 0)\
&& (mystate.bstartno == 1) && (mystate.bendno == 1);
if(bstate && (m_visit.m_pSet->m_ItemNo >= mystate.ustartNo) && (m_visit.m_pSet->m_ItemNo <= mystate.uendNo)) //僅選擇條件6:同尾個數
{
((CEdit*)GetDlgItem(IDC_EDIT4))->GetWindowText(strtmp);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -