📄 pbdlg.cpp
字号:
// pbDlg.cpp : implementation file
//
#include "stdafx.h"
#include "cpd.h"
#include "pbDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CpbDlg dialog
CpbDlg::CpbDlg(CWnd* pParent /*=NULL*/)
: CDialog(CpbDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CpbDlg)
m_dmax = 0;
m_dmin = 0;
m_alpa = 0.0;
m_fn = _T("");
m_n = 0;
m_w_u = 0.0;
m_w_6 = 0.0;
//}}AFX_DATA_INIT
}
void CpbDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CpbDlg)
DDX_Text(pDX, IDC_EDIT_DMAX, m_dmax);
DDX_Text(pDX, IDC_EDIT_DMIN, m_dmin);
DDX_Text(pDX, IDC_EDIT_EALPA, m_alpa);
DDX_Text(pDX, IDC_EDIT_FN, m_fn);
DDX_Text(pDX, IDC_EDIT_N, m_n);
DDX_Text(pDX, IDC_EDIT_W_U, m_w_u);
DDX_Text(pDX, IDC_EDIT_WEIGTED_6, m_w_6);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CpbDlg, CDialog)
//{{AFX_MSG_MAP(CpbDlg)
ON_WM_MOVE()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_UPDATAS,Onupdateparam)
ON_MESSAGE(WM_UPVALUES,Onupdatevl)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CpbDlg message handlers
BOOL CpbDlg::OnInitDialog()
{
CDialog::OnInitDialog();
return TRUE;
}
void CpbDlg::PostNcDestroy()
{
delete this ;
CDialog::PostNcDestroy();
}
void CpbDlg::Onupdateparam(WPARAM wParam,LPARAM lParam)
{
m_pcwr=(CWR *)(wParam) ;
if(m_pcwr)
{
m_pcwr->get_fn(m_fn);
m_pcwr->get_b(m_w_6);
m_pcwr->get_u(m_w_u);
m_pcwr->get_n(m_n);
m_pcwr->get_alpa(m_alpa);
m_pcwr->get_dmin(m_dmin);
m_pcwr->get_dmax(m_dmax);
}
UpdateData(false);// update to board
}
void CpbDlg::Onupdatevl(WPARAM wParam,LPARAM lParam)
{
#define DISP2 10
int idx=(int)(wParam);
CWnd * pgragh=GetDlgItem(IDC_STATIC_GRAPH) ;
CDC * pCDC = pgragh->GetDC();
RECT rsize ;
pgragh->GetClientRect(&rsize);
int ox=rsize.right-rsize.left;
int oy=rsize.bottom-rsize.top;
int i ;
CBrush cBG(RGB(212,208,200));
CBrush *pOldBrush =NULL;
pOldBrush=pCDC->SelectObject(&cBG);
pCDC->Rectangle(&rsize);
pCDC->SelectObject(pOldBrush);
double npery=oy/(PI+0.2) ;
int nperx=ox/20 ;
POINT po , pt;
int len=m_pcwr->get_len();
po.x=ox/2+rsize.left;
po.y=rsize.bottom-m_pcwr->get_vl(idx)*npery+DISP2;
CBrush cMayBe(RGB(255,0,0));
CBrush cCenterN(RGB(0,0,255));
pCDC->MoveTo(po);
for(i=1;i<10;i++)
{
pt.x=po.x+nperx*i ;
pt.y=rsize.bottom-m_pcwr->get_vl((idx+i)%len)*npery+DISP2;
pCDC->LineTo(pt);
if(m_pcwr->get_vl((idx+i)%len)*180.0/PI<m_alpa)
{
pOldBrush=pCDC->SelectObject(&cMayBe);
pCDC->Ellipse(pt.x-2,pt.y-2,pt.x+2,pt.y+2);
pCDC->SelectObject(pOldBrush);
}
else
{
pCDC->Ellipse(pt.x-2,pt.y-2,pt.x+2,pt.y+2);
}
}
pCDC->MoveTo(po);
for(i=1;i<10;i++)
{
pt.x=po.x-nperx*i ;
pt.y=rsize.bottom-m_pcwr->get_vl((idx-i+len)%len)*npery+DISP2;
pCDC->LineTo(pt);
if(m_pcwr->get_vl((idx-i+len)%len)*180.0/PI<m_alpa)
{
pOldBrush=pCDC->SelectObject(&cMayBe);
pCDC->Ellipse(pt.x-2,pt.y-2,pt.x+2,pt.y+2);
pCDC->SelectObject(pOldBrush);
}
else
{
pCDC->Ellipse(pt.x-2,pt.y-2,pt.x+2,pt.y+2);
}
}
if(m_pcwr->get_vl(idx)*180.0/PI<m_alpa)
{
pOldBrush=pCDC->SelectObject(&cMayBe);
pCDC->Ellipse(po.x-3,po.y-3,po.x+3,po.y+3);
pCDC->SelectObject(pOldBrush);
}
else
{
pOldBrush=pCDC->SelectObject(&cCenterN);
pCDC->Ellipse(po.x-3,po.y-3,po.x+3,po.y+3);
pCDC->SelectObject(pOldBrush);
}
char str[32];
sprintf(str,"评估值%.3f",m_pcwr->get_vl(idx)*180.0/PI);
GetDlgItem(IDC_STATIC_INFO)->SetWindowText(str);
if(idx==1)
sprintf(str,"%d st",idx) ;
else if(idx==2)
sprintf(str,"%d nd",idx) ;
else if(idx==3)
sprintf(str,"%d rd",idx) ;
else
sprintf(str,"%d th",idx) ;
GetDlgItem(IDC_STATIC_TEMP)->SetWindowText(str) ;
}
void CpbDlg::OnOK()
{
UpdateData(true);
//Enable4Button(false);
//GetDlgItem(IDOK)->EnableWindow(false);
if(m_pcwr)
{
m_pcwr->set_fn(m_fn);
m_pcwr->set_b(m_w_6);
m_pcwr->set_u(m_w_u);
m_pcwr->set_n(m_n);
m_pcwr->set_alpa(m_alpa);
m_pcwr->set_dmin(m_dmin);
m_pcwr->set_dmax(m_dmax);
}
::SendMessage(((CFrameWnd*)::AfxGetApp()
->GetMainWnd())
->m_hWnd,
WM_UPDAATEPARAM,
0,0) ;
}
void CpbDlg::OnCancel()
{
::SendMessage(((CFrameWnd*)::AfxGetApp()
->GetMainWnd())
->m_hWnd,
WM_COMMAND,
ID_WK_PARAM,0) ;
::SendMessage(((CFrameWnd*)::AfxGetApp()
->GetMainWnd())
->m_hWnd,
WM_COMMAND,
IDC_REFRESH ,0) ;
}
void CpbDlg::OnMove(int x, int y)
{
CDialog::OnMove(x, y);
CFrameWnd * pframewnd=((CFrameWnd*)::AfxGetApp()->GetMainWnd()) ;
if(pframewnd==NULL)
return ;
do{
RECT rmain ;
RECT rparam ;
pframewnd->GetWindowRect(&rmain);
GetWindowRect(&rparam) ;
POINT pt ;
pt.x=rparam.left ; pt.y=rparam.top ;
if(PtInRect(&rmain,pt)) break ;
pt.x=rparam.left ; pt.y=rparam.bottom;
if(PtInRect(&rmain,pt)) break ;
pt.x=rparam.right; pt.y=rparam.top;
if(PtInRect(&rmain,pt)) break ;
pt.x=rparam.right; pt.y=rparam.bottom;
if(PtInRect(&rmain,pt)) break ;
return ;
}while(0) ;
::PostMessage(pframewnd->m_hWnd,WM_COMMAND,IDC_REFRESH ,0) ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -