?? gcnlfxinput.cpp
字號(hào):
// GcnlfxInput.cpp : implementation file
//
#include "stdafx.h"
#include "Ex07b.h"
#include "GcnlfxInput.h"
#include "SbtDoc.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGcnlfxInput
IMPLEMENT_DYNCREATE(CGcnlfxInput, CFormView)
CGcnlfxInput::CGcnlfxInput()
: CFormView(CGcnlfxInput::IDD)
{
//{{AFX_DATA_INIT(CGcnlfxInput)
m_gmax = 0.0f;
m_gmin = 0.0f;
m_gsj = 0.0f;
//}}AFX_DATA_INIT
}
CGcnlfxInput::~CGcnlfxInput()
{
}
void CGcnlfxInput::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGcnlfxInput)
DDX_Text(pDX, IDC_EDIT1, m_gmax);
DDX_Text(pDX, IDC_EDIT2, m_gmin);
DDX_Text(pDX, IDC_EDIT3, m_gsj);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGcnlfxInput, CFormView)
//{{AFX_MSG_MAP(CGcnlfxInput)
ON_BN_CLICKED(IDC_GCADD, OnGcadd)
ON_BN_CLICKED(IDC_GCTONGJI, OnGctongji)
ON_BN_CLICKED(IDC_GCOK, OnGcok)
ON_BN_CLICKED(IDC_GCXG, OnGcxg)
ON_BN_CLICKED(IDC_GCNEXT, OnGcnext)
ON_BN_CLICKED(IDC_GREMOVE, OnGremove)
ON_BN_CLICKED(IDC_GINSERT, OnGinsert)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGcnlfxInput diagnostics
#ifdef _DEBUG
void CGcnlfxInput::AssertValid() const
{
CFormView::AssertValid();
}
void CGcnlfxInput::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CGcnlfxInput message handlers
void CGcnlfxInput::OnGcadd()
{
// TODO: Add your control notification handler code here
UpdateData();
CSbtDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
CGcsj * pGcsj;
pGcsj=new CGcsj(m_gsj);
pDoc->m_gcdataList.AddTail(pGcsj);
pDoc->SetModifiedFlag(TRUE);
pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();
pDoc->UpdateAllViews(this);
//控制控件的允許,
CWnd *m_Wnd=NULL;
m_Wnd=GetDlgItem(IDC_GCTONGJI);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GCNEXT);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GCXG);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GINSERT);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GREMOVE);
m_Wnd->EnableWindow();
}
void CGcnlfxInput::OnGctongji()
{
// TODO: Add your control notification handler code here
CSbtDoc * pDoc=GetDocument();
//求平均值
POSITION pos=pDoc->m_gcdataList.GetHeadPosition();
float leiji=0;
float i=0;
while (pos!=NULL)
{
CGcsj *pGcsj=pDoc->m_gcdataList.GetNext(pos);
leiji=leiji+pGcsj->m_fgcsj;
i++;
}
pDoc->g_middle=leiji/i;
//求偏差
leiji=0;
pos=pDoc->m_gcdataList.GetHeadPosition();
while(pos!=NULL)
{
CGcsj *pGcsj=pDoc->m_gcdataList.GetNext(pos);
leiji=leiji+(pGcsj->m_fgcsj-pDoc->g_middle)*(pGcsj->m_fgcsj-pDoc->g_middle);
}
pDoc->g_pc=sqrt(leiji/(i-1));
pDoc->g_cp=(pDoc->g_max-pDoc->g_min)/(6*pDoc->g_pc);
pDoc->g_e=fabs((pDoc->g_max-pDoc->g_min)/2-pDoc->g_middle);
pDoc->g_cpk=((pDoc->g_max-pDoc->g_min)-2*pDoc->g_e)/(6*pDoc->g_pc);
pDoc->UpdateAllViews(this);
}
#ifdef _DEBUG
CSbtDoc * CGcnlfxInput::GetDocument()
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSbtDoc)));
return (CSbtDoc*)m_pDocument;
}
#endif
void CGcnlfxInput::OnGcok()
{
UpdateData();
CSbtDoc * pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDoc->g_min=m_gmin;
pDoc->g_max=m_gmax;
}
void CGcnlfxInput::OnGcxg()
{
// TODO: Add your control notification handler code here
UpdateData();
CSbtDoc * pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDoc->m_gcdataList.GetPrev(pDoc->gccurPos);
CGcsj *pGcsj;
pGcsj=pDoc->m_gcdataList.GetAt(pDoc->gccurPos);
pGcsj->m_fgcsj=m_gsj;
pDoc->m_gcdataList.GetNext(pDoc->gccurPos);
pDoc->UpdateAllViews(this);
}
void CGcnlfxInput::OnGcnext()
{
// TODO: Add your control notification handler code here
CSbtDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
if(pDoc->gccurPos!=NULL) //
{
CGcsj *pGcsj=pDoc->m_gcdataList.GetAt(pDoc->gccurPos);
m_gsj=pGcsj->m_fgcsj;
//成員變量的數(shù)據(jù)傳給控制ID,在對(duì)話框中顯示數(shù)據(jù)
UpdateData(false);
pDoc->m_gcdataList.GetNext(pDoc->gccurPos);
if(pDoc->gccurPos==NULL)
pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();
// 為進(jìn)行下一輪循環(huán)做準(zhǔn)備
}
else
MessageBox("當(dāng)前列表中沒有數(shù)據(jù)!");
pDoc->UpdateAllViews(this);
}
void CGcnlfxInput::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
CSbtDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
int m=pDoc->m_gcdataList.GetCount();
if(m!=0)
{
CGcsj *pGcsj=pDoc->m_gcdataList.GetAt(pDoc->gccurPos);
m_gsj=pGcsj->m_fgcsj;
//成員變量的數(shù)據(jù)傳給控制ID,在對(duì)話框中顯示數(shù)據(jù)
m_gmin=pDoc->g_min;
m_gmax=pDoc->g_max;
UpdateData(false);
pDoc->m_gcdataList.GetNext(pDoc->gccurPos);
if(pDoc->gccurPos==NULL)
pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();
//控制控件的允許,
CWnd *m_Wnd=NULL;
m_Wnd=GetDlgItem(IDC_GCTONGJI);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GCNEXT);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GCXG);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GINSERT);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GREMOVE);
m_Wnd->EnableWindow();
}
//創(chuàng)建豐富的按鈕
//確認(rèn)最小單位
m_btnOk.SubclassDlgItem(IDC_GCOK,this);
m_btnOk.SetIcon(IDI_OK);
m_btnOk.SetActiveFgColor(RGB(128,0,128));
m_btnOk.SetBtnCursor(IDC_HAND);
//添加數(shù)據(jù)
m_btnAdd.SubclassDlgItem(IDC_GCADD,this);
m_btnAdd.SetIcon(IDI_ADD2,IDI_ADD1);
m_btnAdd.SetActiveFgColor(RGB(255,0,0));
m_btnAdd.SetBtnCursor(IDC_HAND);
//數(shù)據(jù)統(tǒng)計(jì)
m_btnTongji.SubclassDlgItem(IDC_GCTONGJI,this);
m_btnTongji.SetIcon(IDI_TONGJI1,IDI_TONGJI2);
m_btnTongji.SetActiveFgColor(RGB(255,0,0));
m_btnTongji.SetBtnCursor(IDC_HAND);
//修改數(shù)據(jù)
m_btnXg.SubclassDlgItem(IDC_GCXG,this);
m_btnXg.SetIcon(IDI_XG1,IDI_XG2);
m_btnXg.SetActiveFgColor(RGB(255,0,0));
m_btnXg.SetBtnCursor(IDC_HAND);
//下一數(shù)據(jù)
m_btnNext.SubclassDlgItem(IDC_GCNEXT,this);
m_btnNext.SetIcon(IDI_NEXT1,IDI_NEXT2);
m_btnNext.SetActiveFgColor(RGB(255,0,0));
m_btnNext.SetBtnCursor(IDC_HAND);
//插入數(shù)據(jù)
m_btnInsert.SubclassDlgItem(IDC_GINSERT,this);
m_btnInsert.SetIcon(IDI_INSERT1,IDI_INSERT2);
m_btnInsert.SetActiveFgColor(RGB(255,0,0));
m_btnInsert.SetBtnCursor(IDC_HAND);
//刪除數(shù)據(jù)
m_btnDel256.SubclassDlgItem(IDC_GREMOVE, this);
m_btnDel256.SetIcon(IDI_DEL1, IDI_DEL2);
m_btnDel256.SetActiveFgColor(RGB(255,0,0));
m_btnDel256.SetBtnCursor(IDC_HAND);
}
void CGcnlfxInput::OnGremove()
{
// TODO: Add your control notification handler code here
CSbtDoc * pDoc=GetDocument();
ASSERT_VALID(pDoc);
CGcsj *pGcsj=pDoc->m_gcdataList.GetPrev(pDoc->gccurPos);
if(pDoc->gccurPos==NULL)
pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();
pDoc->m_gcdataList.RemoveAt(pDoc->gccurPos);
pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();
pDoc->SetModifiedFlag();
pDoc->UpdateAllViews(this);
}
void CGcnlfxInput::OnGinsert()
{
// TODO: Add your control notification handler code here
UpdateData();
CSbtDoc * pDoc=GetDocument();
ASSERT_VALID(pDoc);
CGcsj * pGcsj;
pGcsj=new CGcsj(m_gsj);
pDoc->m_gcdataList.InsertBefore(pDoc->gccurPos,pGcsj);
pDoc->SetModifiedFlag();
pDoc->UpdateAllViews(this);
}
BOOL CGcnlfxInput::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN&&pMsg->hwnd==((GetDlgItem(IDC_EDIT3))->m_hWnd))
{
UpdateData();
CSbtDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
CGcsj * pGcsj;
pGcsj=new CGcsj(m_gsj);
pDoc->m_gcdataList.AddTail(pGcsj);
pDoc->SetModifiedFlag(TRUE);
pDoc->gccurPos=pDoc->m_gcdataList.GetHeadPosition();
pDoc->UpdateAllViews(this);
//控制控件的允許,
CWnd *m_Wnd=NULL;
m_Wnd=GetDlgItem(IDC_GCTONGJI);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GCNEXT);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GCXG);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GINSERT);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_GREMOVE);
m_Wnd->EnableWindow();
CEdit * pEdit=(CEdit*)GetDlgItem(IDC_EDIT3);
pEdit->SetSel(0,-1,true);
}
return CFormView::PreTranslateMessage(pMsg);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -