📄 yilufadlg.cpp
字号:
if((Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine])==Number[dr][DestationLine])
{
(*Step)++;
}
else if(bLogarithmicFlag)
{
if(((Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]-5)==Number[dr][DestationLine])||((Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]+5)==Number[dr][DestationLine]))
{
(*Step)++;
}
else break;
}else break;
}
}
if((*Step)>=m_StepLong)
{
if((ssr<=EndPiont+1)&&(sfr<=EndPiont+1)&&(dr<=EndPiont+1))
{
if((ssr==EndPiont+1)||(sfr==EndPiont+1)||(dr==EndPiont+1))
{
if((sfr==EndPiont+1)&&((sfr!=ssr)&&(sfr!=dr)))
{
////////out data sfr
for(UINT k=1;k<=m_OutNumber[SoureFirstLine][0];k++)
{
if(Number[dr][DestationLine]>=Number[ssr][SoureSecondLine])
{
if(m_OutNumber[SoureFirstLine][k]==(Number[dr][DestationLine]-Number[ssr][SoureSecondLine]))
{
m_OutNumber[SoureFirstLine][11]=1;
break;
}
}
else if(m_OutNumber[SoureFirstLine][k]==(Number[dr][DestationLine]+10-Number[ssr][SoureSecondLine]))
{
m_OutNumber[SoureFirstLine][11]=1;
break;
}
}
if(m_OutNumber[SoureFirstLine][11]==0)
{
m_OutNumber[SoureFirstLine][0]++;
m_OutNumber[SoureFirstLine][11]=0;
m_OutNumber[SoureFirstLine][(m_OutNumber[SoureFirstLine][0])]=Number[dr][DestationLine]>=Number[ssr][SoureSecondLine]?Number[dr][DestationLine]-Number[ssr][SoureSecondLine]:Number[dr][DestationLine]+10-Number[ssr][SoureSecondLine];
}
else m_OutNumber[SoureFirstLine][11]=0;
///////End Out data sfr
OutDataMap(SoureFirstRank,SoureFirstLine,SoureSecondRank,SoureSecondLine,DestationRank,DestationLine,(*Step),m_Step);
}
else if((ssr==EndPiont+1)&&((ssr!=sfr)&&(ssr!=dr)))
{
////////out data ssr
for(UINT k=1;k<=m_OutNumber[SoureSecondLine][0];k++)
{
if(Number[dr][DestationLine]>=Number[sfr][SoureFirstLine])
{
if(m_OutNumber[SoureSecondLine][k]==(Number[dr][DestationLine]-Number[sfr][SoureFirstLine]))
{
m_OutNumber[SoureSecondLine][11]=1;
break;
}
}
else if(m_OutNumber[SoureSecondLine][k]==(Number[dr][DestationLine]+10-Number[sfr][SoureFirstLine]))
{
m_OutNumber[SoureSecondLine][11]=1;
break;
}
}
if(m_OutNumber[SoureSecondLine][11]==0)
{
m_OutNumber[SoureSecondLine][0]++;
m_OutNumber[SoureSecondLine][11]=0;
m_OutNumber[SoureSecondLine][(m_OutNumber[SoureSecondLine][0])]=Number[dr][DestationLine]>=Number[sfr][SoureFirstLine]?Number[dr][DestationLine]-Number[sfr][SoureFirstLine]:(Number[dr][DestationLine]+10-Number[sfr][SoureFirstLine]);
}
else m_OutNumber[SoureSecondLine][11]=0;
///////End Out data
OutDataMap(SoureFirstRank,SoureFirstLine,SoureSecondRank,SoureSecondLine,DestationRank,DestationLine,(*Step),m_Step);
}
else if((dr==EndPiont+1)&&((dr!=sfr)&&(dr!=ssr)))
{
/////////////der
for(UINT k=1;k<=m_OutNumber[DestationLine][0];k++)
{
if(10>(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]))
{
if(m_OutNumber[DestationLine][k]==(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]))
{
m_OutNumber[DestationLine][11]=1;
break;
}
}
else if(m_OutNumber[DestationLine][k]==(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine])-10)
{
m_OutNumber[DestationLine][11]=1;
break;
}
}
if(m_OutNumber[DestationLine][11]==0)
{
m_OutNumber[DestationLine][0]++;
m_OutNumber[DestationLine][11]=0;
m_OutNumber[DestationLine][(m_OutNumber[DestationLine][0])]=10>(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine])?(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]):(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine])-10;
}
else m_OutNumber[DestationLine][11]=0;
///////End Out data der
OutDataMap(SoureFirstRank,SoureFirstLine,SoureSecondRank,SoureSecondLine,DestationRank,DestationLine,(*Step),m_Step);
}
}
}
}
}
return 0;
}
else//分析短局二数合一
{
m_Step=4;
for(;m_Step*m_StepLong<=m_MaxRank;m_Step+=4,(*Step)=1)
{
if((m_MaxRank%m_Step)!=0) continue;
for(sfr=SoureFirstRank+m_Step,ssr=SoureSecondRank+m_Step,dr=DestationRank+m_Step;(sfr<=EndPiont)&&(ssr<=EndPiont)&&(dr<=EndPiont);sfr+=m_Step,ssr+=m_Step,dr+=m_Step)
{
if((Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine])>=10)
{
if((Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]-10)==Number[dr][DestationLine])
{
(*Step)++;
}
else if(bLogarithmicFlag)
{
if(((Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]-10)-5==Number[dr][DestationLine])||((Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]-10)+5==Number[dr][DestationLine]))
{
(*Step)++;
}
else break;
}
else break;
}
else
{
if((Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine])==Number[dr][DestationLine])
{
(*Step)++;
}
else if(bLogarithmicFlag)
{
if(((Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]-5)==Number[dr][DestationLine])||((Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]+5)==Number[dr][DestationLine]))
{
(*Step)++;
}
else break;
}else break;
}
}
if((*Step)>=m_StepLong)
{
if((ssr<=EndPiont+1)&&(sfr<=EndPiont+1)&&(dr<=EndPiont+1))
{
if((ssr==EndPiont+1)||(sfr==EndPiont+1)||(dr==EndPiont+1))
{
if((sfr==EndPiont+1)&&((sfr!=ssr)&&(sfr!=dr)))
{
////////out data sfr
for(UINT k=1;k<=m_OutNumber[SoureFirstLine][0];k++)
{
if(Number[dr][DestationLine]>=Number[ssr][SoureSecondLine])
{
if(m_OutNumber[SoureFirstLine][k]==(Number[dr][DestationLine]-Number[ssr][SoureSecondLine]))
{
m_OutNumber[SoureFirstLine][11]=1;
break;
}
}
else if(m_OutNumber[SoureFirstLine][k]==(Number[dr][DestationLine]+10-Number[ssr][SoureSecondLine]))
{
m_OutNumber[SoureFirstLine][11]=1;
break;
}
}
if(m_OutNumber[SoureFirstLine][11]==0)
{
m_OutNumber[SoureFirstLine][0]++;
m_OutNumber[SoureFirstLine][11]=0;
m_OutNumber[SoureFirstLine][(m_OutNumber[SoureFirstLine][0])]=Number[dr][DestationLine]>=Number[ssr][SoureSecondLine]?Number[dr][DestationLine]-Number[ssr][SoureSecondLine]:Number[dr][DestationLine]+10-Number[ssr][SoureSecondLine];
}
else m_OutNumber[SoureFirstLine][11]=0;
///////End Out data sfr
OutDataMap(SoureFirstRank,SoureFirstLine,SoureSecondRank,SoureSecondLine,DestationRank,DestationLine,(*Step),m_Step);
}
else if((ssr==EndPiont+1)&&((ssr!=sfr)&&(ssr!=dr)))
{
////////out data ssr
for(UINT k=1;k<=m_OutNumber[SoureSecondLine][0];k++)
{
if(Number[dr][DestationLine]>=Number[sfr][SoureFirstLine])
{
if(m_OutNumber[SoureSecondLine][k]==(Number[dr][DestationLine]-Number[sfr][SoureFirstLine]))
{
m_OutNumber[SoureSecondLine][11]=1;
break;
}
}
else if(m_OutNumber[SoureSecondLine][k]==(Number[dr][DestationLine]+10-Number[sfr][SoureFirstLine]))
{
m_OutNumber[SoureSecondLine][11]=1;
break;
}
}
if(m_OutNumber[SoureSecondLine][11]==0)
{
m_OutNumber[SoureSecondLine][0]++;
m_OutNumber[SoureSecondLine][11]=0;
m_OutNumber[SoureSecondLine][(m_OutNumber[SoureSecondLine][0])]=Number[dr][DestationLine]>=Number[sfr][SoureFirstLine]?Number[dr][DestationLine]-Number[sfr][SoureFirstLine]:(Number[dr][DestationLine]+10-Number[sfr][SoureFirstLine]);
}
else m_OutNumber[SoureSecondLine][11]=0;
///////End Out data
OutDataMap(SoureFirstRank,SoureFirstLine,SoureSecondRank,SoureSecondLine,DestationRank,DestationLine,(*Step),m_Step);
}
else if((dr==EndPiont+1)&&((dr!=sfr)&&(dr!=ssr)))
{
/////////////der
for(UINT k=1;k<=m_OutNumber[DestationLine][0];k++)
{
if(10>(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]))
{
if(m_OutNumber[DestationLine][k]==(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]))
{
m_OutNumber[DestationLine][11]=1;
break;
}
}
else if(m_OutNumber[DestationLine][k]==(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine])-10)
{
m_OutNumber[DestationLine][11]=1;
break;
}
}
if(m_OutNumber[DestationLine][11]==0)
{
m_OutNumber[DestationLine][0]++;
m_OutNumber[DestationLine][11]=0;
m_OutNumber[DestationLine][(m_OutNumber[DestationLine][0])]=10>(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine])?(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine]):(Number[sfr][SoureFirstLine]+Number[ssr][SoureSecondLine])-10;
}
else m_OutNumber[DestationLine][11]=0;
///////End Out data der
OutDataMap(SoureFirstRank,SoureFirstLine,SoureSecondRank,SoureSecondLine,DestationRank,DestationLine,(*Step),m_Step);
}
}
}
}
}
return 0;
}
}
void CYilufaDlg::OutDataMap(UINT OutSoFiRa, UINT OutSoFiLi, UINT OutSoSeRa, UINT OutSoSeLi, UINT OutDeRa, UINT OutDeLi, UINT Step,UINT StepLong)
{
if(gls<100)
{
m_ScrollB.SetScrollPos(0);
OutLaw[gls][0]=OutSoFiRa;
OutLaw[gls][1]=OutSoFiLi;
OutLaw[gls][2]=OutSoSeRa;
OutLaw[gls][3]=OutSoSeLi;
OutLaw[gls][4]=OutDeRa;
OutLaw[gls][5]=OutDeLi;
OutLaw[gls][6]=Step;
OutLaw[gls][7]=StepLong;
gls++;
m_CurrentLaw=gls;
}
else
{
m_ScrollB.SetScrollPos(0);
OutLaw[99][0]=OutSoFiRa;
OutLaw[99][1]=OutSoFiLi;
OutLaw[99][2]=OutSoSeRa;
OutLaw[99][3]=OutSoSeLi;
OutLaw[99][4]=OutDeRa;
OutLaw[99][5]=OutDeLi;
OutLaw[99][6]=Step;
OutLaw[99][7]=StepLong;
gls++;
}
RollView();
ContrlStop();
}
/////////////////////////////////////////////////////////////////////////////
// CResult dialog
CResult::CResult(CWnd* pParent /*=NULL*/)
: CDialog(CResult::IDD, pParent)
{
//{{AFX_DATA_INIT(CResult)
//}}AFX_DATA_INIT
}
void CResult::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CResult)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CResult, CDialog)
//{{AFX_MSG_MAP(CResult)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CResult message handlers
BOOL CResult::OnInitDialog()
{
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
UINT FindLaw(LPVOID pParam)
{
CYilufaDlg* dlg=(CYilufaDlg*)pParam;
dlg->gls=0;
if(dlg->bOneFlag)
{
dlg->FTwoToOne();
}
/////////////////////////
if(dlg->bCombinationFlag)
{
dlg->FThreeToTwo();
}
/////////////////////////
if(dlg->bTwoToTwo)
{
dlg->FTwoToTwo();
}
/////////
dlg->bFinishFlag=FALSE;
PostThreadMessage(dlg->dw,WM_QUIT,0,0);//stop show step thread
dlg->m_ToWork.EnableWindow(TRUE);
(dlg->GetDlgItem(IDC_LAWLONG))->EnableWindow(TRUE);
dlg->GetDlgItem(IDC_TOWORK)->SetFocus();
return 0;
}
DWORD WINAPI ShowStep(LPVOID pDlg)
{
CYilufaDlg* dlg=(CYilufaDlg*)pDlg;
dlg->bFinishFlag=TRUE;
MSG msg;
int i=0;
while(GetMessage(&msg,NULL,0,0))
{
switch(msg.message)
{
case TM_STEP: i++;
dlg->m_Progress.SetPos(i);
if(i>300) i=0;
break;
default: break;
}
}
/*while(dlg->bFinishFlag)
{
for(int i=0;i<300;i++)
dlg->m_Progress.SetPos(i);
(dlg->GetWindowDC())->TextOut(i,5,"a");
}*/
return 0;
}
void CYilufaDlg::OnStop()
{
UpdateData(TRUE);
if(pThread!=NULL)
{
if(!m_bStopFlag)
{
m_bStopFlag=TRUE;
m_StopButton.SetWindowText("继续分析");
//m_StopButton.text="继续分析";
//m_StopButton.Invalidate(true);
pThread->SuspendThread();
}
else
{
m_bStopFlag=FALSE;
m_StopButton.SetWindowText("暂停分析");
//m_StopButton.text="暂停分析";
//m_StopButton.Invalidate(true);
pThread->ResumeThread();
}
}
}
void CYilufaDlg::OnAddnew()
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -