?? sbtinput.cpp
字號:
// SbtInput.cpp : implementation file
//
#include "stdafx.h"
#include "Ex07b.h"
#include "SbtInput.h"
#include "SbtDoc.h"
extern BOOL m_pmenu;
extern BOOL m_smenu;
extern BOOL m_zmenu;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSbtInput
IMPLEMENT_DYNCREATE(CSbtInput, CFormView)
CSbtInput::CSbtInput()
: CFormView(CSbtInput::IDD)
{
//{{AFX_DATA_INIT(CSbtInput)
m_lyi = 0.0f;
m_lxi = 0.0f;
//}}AFX_DATA_INIT
}
CSbtInput::~CSbtInput()
{
}
void CSbtInput::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSbtInput)
DDX_Text(pDX, IDC_YI, m_lyi);
DDX_Text(pDX, IDC_XI, m_lxi);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSbtInput, CFormView)
//{{AFX_MSG_MAP(CSbtInput)
ON_BN_CLICKED(IDC_SBTADD, OnSbtadd)
ON_BN_CLICKED(IDC_SBTTONGJI, OnSbttongji)
ON_BN_CLICKED(IDC_SBTXG, OnSbtxg)
ON_BN_CLICKED(IDC_SBTNEXT, OnSbtnext)
ON_BN_CLICKED(IDC_SINSERT, OnInsert)
ON_BN_CLICKED(IDC_SREMOVE, OnRemove)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSbtInput diagnostics
#ifdef _DEBUG
void CSbtInput::AssertValid() const
{
CFormView::AssertValid();
}
void CSbtInput::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CSbtInput message handlers
void CSbtInput::OnSbtadd()
{
// TODO: Add your control notification handler code here
m_smenu=true;
UpdateData();
CSbtDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
CSbtsj * pSbtsj;
pSbtsj=new CSbtsj(m_lxi,m_lyi);
if(pDoc->H_min>pSbtsj->Xi)
pDoc->H_min=pSbtsj->Xi;
if (pDoc->H_max<pSbtsj->Xi)
pDoc->H_max=pSbtsj->Xi;
if (pDoc->Z_min>pSbtsj->Yi)
pDoc->Z_min=pSbtsj->Yi;
if (pDoc->Z_max<pSbtsj->Yi)
pDoc->Z_max=pSbtsj->Yi;
pDoc->m_sbtdataList.AddTail(pSbtsj);
pDoc->SetModifiedFlag(TRUE);
pDoc->spos=pDoc->m_sbtdataList.GetHeadPosition();
pDoc->UpdateAllViews(this);
//控制控件的允許,
CWnd *m_Wnd=NULL;
m_Wnd=GetDlgItem(IDC_SBTNEXT);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_SBTXG);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_SINSERT);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_SREMOVE);
m_Wnd->EnableWindow();
}
void CSbtInput::OnSbttongji()
{
// TODO: Add your control notification handler code here
}
#ifdef _DEBUG
CSbtDoc * CSbtInput::GetDocument()
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSbtDoc)));
return (CSbtDoc*)m_pDocument;
}
#endif
void CSbtInput::OnSbtxg()
{
// TODO: Add your control notification handler code here
UpdateData();
CSbtDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDoc->m_sbtdataList.GetPrev(pDoc->spos);
if(pDoc->spos==NULL)
pDoc->spos=pDoc->m_sbtdataList.GetTailPosition();
CSbtsj * pSbtsj=pDoc->m_sbtdataList.GetAt(pDoc->spos);
pSbtsj->Xi=m_lxi;
pSbtsj->Yi=m_lyi;
pDoc->m_sbtdataList.GetNext(pDoc->spos);
if(pDoc->spos==NULL)
pDoc->spos=pDoc->m_sbtdataList.GetHeadPosition();
pDoc->UpdateAllViews(this);
}
void CSbtInput::OnSbtnext()
{
// TODO: Add your control notification handler code here
CSbtDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
if(pDoc->spos!=NULL) //
{
CSbtsj * pSbtsj=pDoc->m_sbtdataList.GetAt(pDoc->spos);
m_lxi=pSbtsj->Xi;
m_lyi=pSbtsj->Yi;
//成員變量的數據傳給控制ID,在對話框中顯示數據
UpdateData(false);
pDoc->m_sbtdataList.GetNext(pDoc->spos);
if(pDoc->spos==NULL)
pDoc->spos=pDoc->m_sbtdataList.GetHeadPosition();
// 為進行下一輪循環做準備
}
else
MessageBox("當前列表中沒有數據!");
pDoc->UpdateAllViews(this);
}
void CSbtInput::OnInitialUpdate()
{
m_smenu=false;
m_zmenu=false;
m_pmenu=false;
CFormView::OnInitialUpdate();
CSbtDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
int m=pDoc->m_sbtdataList.GetCount();
if (m!=0)
{
m_smenu=true;
CSbtsj * pSbtsj=pDoc->m_sbtdataList.GetAt(pDoc->spos);
m_lxi=pSbtsj->Xi;
m_lyi=pSbtsj->Yi;
//成員變量的數據傳給控制ID,在對話框中顯示數據
UpdateData(false);
pDoc->m_sbtdataList.GetNext(pDoc->spos);
if(pDoc->spos==NULL)
pDoc->spos=pDoc->m_sbtdataList.GetHeadPosition();
// 為進行下一輪循環做準備
//控制控件的允許,
CWnd *m_Wnd=NULL;
m_Wnd=GetDlgItem(IDC_SBTNEXT);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_SBTXG);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_SINSERT);
m_Wnd->EnableWindow();
m_Wnd=GetDlgItem(IDC_SREMOVE);
m_Wnd->EnableWindow();
}
// TODO: Add your specialized code here and/or call the base class
//添加數據
m_btnAdd.SubclassDlgItem(IDC_SBTADD,this);
m_btnAdd.SetIcon(IDI_ADD2,IDI_ADD1);
m_btnAdd.SetActiveFgColor(RGB(255,0,0));
m_btnAdd.SetBtnCursor(IDC_HAND);
//修改數據
m_btnXg.SubclassDlgItem(IDC_SBTXG,this);
m_btnXg.SetIcon(IDI_XG1,IDI_XG2);
m_btnXg.SetActiveFgColor(RGB(255,0,0));
m_btnXg.SetBtnCursor(IDC_HAND);
//下一數據
m_btnNext.SubclassDlgItem(IDC_SBTNEXT,this);
m_btnNext.SetIcon(IDI_NEXT1,IDI_NEXT2);
m_btnNext.SetActiveFgColor(RGB(255,0,0));
m_btnNext.SetBtnCursor(IDC_HAND);
//插入數據
m_btnInsert.SubclassDlgItem(IDC_SINSERT,this);
m_btnInsert.SetIcon(IDI_INSERT1,IDI_INSERT2);
m_btnInsert.SetActiveFgColor(RGB(255,0,0));
m_btnInsert.SetBtnCursor(IDC_HAND);
//刪除數據
m_btnDel256.SubclassDlgItem(IDC_SREMOVE, this);
m_btnDel256.SetIcon(IDI_DEL1, IDI_DEL2);
m_btnDel256.SetActiveFgColor(RGB(255,0,0));
m_btnDel256.SetBtnCursor(IDC_HAND);
}
void CSbtInput::OnInsert()
{
// TODO: Add your control notification handler code here
CSbtDoc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
UpdateData();
CSbtsj * pSbtsj;
pSbtsj=new CSbtsj(m_lxi,m_lyi);
pDoc->m_sbtdataList.InsertBefore(pDoc->spos,pSbtsj);
pDoc->SetModifiedFlag();
pDoc->UpdateAllViews(this);
}
void CSbtInput::OnRemove()
{
// TODO: Add your control notification handler code here
CSbtDoc* pDoc=GetDocument();
ASSERT_VALID(pDoc);
CSbtsj *pSbtsj=pDoc->m_sbtdataList.GetPrev(pDoc->spos);
if(pDoc->spos==NULL)
pDoc->spos=pDoc->m_sbtdataList.GetTailPosition();
pDoc->m_sbtdataList.RemoveAt(pDoc->spos);
pDoc->spos=pDoc->m_sbtdataList.GetHeadPosition();
pDoc->SetModifiedFlag();
pDoc->UpdateAllViews(this);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -