📄 menudlg.cpp
字号:
// MenuDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MenuManage.h"
#include "MenuDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CMenuManageApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CMenuDlg dialog
CMenuDlg::CMenuDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMenuDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMenuDlg)
m_strFoodName = _T("");
m_nFoodPrice = 0;
m_strFoodType = _T("");
m_strFoodRemark = _T("");
m_nFoodNum = 0;
m_nFoodCost = 0;
//}}AFX_DATA_INIT
}
void CMenuDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMenuDlg)
DDX_Control(pDX, IDC_FOOD_LAST, m_btnLast);
DDX_Control(pDX, IDC_FOOD_FIRST, m_btnFirst);
DDX_Control(pDX, IDC_DELETE_FOOD, m_btnDelete);
DDX_Control(pDX, IDC_SAVE_FOOD, m_btnSave);
DDX_Control(pDX, IDC_FOOD_PIC, m_btnSelPhoto);
DDX_Control(pDX, IDC_FOOD_PREVIEW, m_btnPreview);
DDX_Control(pDX, IDC_FOOD_NEXT, m_btnNext);
DDX_Control(pDX, IDC_FOOD_TYPE, m_editType);
DDX_Control(pDX, IDC_FOOD_REMARK, m_editRemark);
DDX_Control(pDX, IDC_FOOD_PRICE, m_editPrice);
DDX_Control(pDX, IDC_FOOD_NUM, m_editNum);
DDX_Control(pDX, IDC_FOOD_NAME, m_editName);
DDX_Control(pDX, IDC_FOODCOST, m_editFoodCost);
DDX_Text(pDX, IDC_FOOD_NAME, m_strFoodName);
DDX_Text(pDX, IDC_FOOD_TYPE, m_strFoodType);
DDX_Text(pDX, IDC_FOOD_REMARK, m_strFoodRemark);
DDX_Text(pDX, IDC_FOOD_NUM, m_nFoodNum);
DDX_Text(pDX, IDC_FOOD_PRICE, m_nFoodPrice);
DDV_MinMaxInt(pDX, m_nFoodPrice, 0, 1000);
DDX_Text(pDX, IDC_FOODCOST, m_nFoodCost);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMenuDlg, CDialog)
//{{AFX_MSG_MAP(CMenuDlg)
ON_BN_CLICKED(IDC_FOOD_PIC, OnFoodPic)
ON_BN_CLICKED(IDC_FOOD_FIRST, OnFoodFirst)
ON_BN_CLICKED(IDC_FOOD_PREVIEW, OnFoodPreview)
ON_BN_CLICKED(IDC_FOOD_NEXT, OnFoodNext)
ON_BN_CLICKED(IDC_FOOD_LAST, OnFoodLast)
ON_BN_CLICKED(IDC_ADD_FOOD, OnAddFood)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_DELETE_FOOD, OnDeleteFood)
ON_BN_CLICKED(IDC_SAVE_FOOD, OnSaveFood)
ON_EN_CHANGE(IDC_FOOD_NUM, OnChangeFoodNum)
ON_EN_CHANGE(IDC_FOOD_NAME, OnChangeFoodName)
ON_EN_CHANGE(IDC_FOOD_TYPE, OnChangeFoodType)
ON_EN_CHANGE(IDC_FOOD_PRICE, OnChangeFoodPrice)
ON_EN_CHANGE(IDC_FOOD_REMARK, OnChangeFoodRemark)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMenuDlg message handlers
void CMenuDlg::OnFoodPic()
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
CFileDialog dlg(TRUE,"BMP",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if(dlg.DoModal() == IDOK)
{
CString pathname = dlg.GetPathName();
DestroyPhoto();
LoadBMPFile(pathname);
m_hPhotoBitmap = BufferToHBITMAP();
m_bModify = TRUE;
m_btnSave.EnableWindow();
Invalidate();
}
}
void CMenuDlg::OnFoodFirst()
{
// TODO: Add your control notification handler code here
//假如当前记录改动过
if(m_bModify)
{
int nRet = MessageBox("当前信息尚未保存,是否保存?","用户信息",MB_YESNOCANCEL);
switch(nRet)
{
case IDCANCEL:
return;
case IDYES:
OnSaveFood() ;
break;
case IDNO:
default:
break;
}
}
m_pRecordset->MovePrevious();
m_pRecordset->MoveFirst();
ReadData();
ResetControls();
Invalidate();
m_bModify = FALSE;
}
void CMenuDlg::OnFoodPreview()
{
// TODO: Add your control notification handler code here
//假如当前记录改动过
if(m_bModify)
{
int nRet = MessageBox("当前信息尚未保存,是否保存?","用户信息",MB_YESNOCANCEL);
switch(nRet)
{
case IDCANCEL:
return;
case IDYES:
OnSaveFood() ;
break;
case IDNO:
default:
break;
}
}
m_pRecordset->MovePrevious();
if(m_pRecordset->BOF)
m_pRecordset->MoveFirst();
ReadData();
ResetControls();
Invalidate();
m_bModify = FALSE;
}
void CMenuDlg::OnFoodNext()
{
// TODO: Add your control notification handler code here
//假如当前记录改动过
if(m_bModify)
{
int nRet = MessageBox("当前信息尚未保存,是否保存?","用户信息",MB_YESNOCANCEL);
switch(nRet)
{
case IDCANCEL:
return;
case IDYES:
OnSaveFood() ;
break;
case IDNO:
default:
break;
}
}
m_pRecordset->MoveNext();
if(m_pRecordset->adoEOF)
m_pRecordset->MoveLast();
ReadData();
ResetControls();
Invalidate();
m_bModify = FALSE;
}
void CMenuDlg::OnFoodLast()
{
// TODO: Add your control notification handler code here
//假如当前记录改动过
if(m_bModify)
{
int nRet = MessageBox("当前信息尚未保存,是否保存?","用户信息",MB_YESNOCANCEL);
switch(nRet)
{
case IDCANCEL:
return;
case IDYES:
OnSaveFood() ;
break;
case IDNO:
default:
break;
}
}
m_pRecordset->MoveNext();
m_pRecordset->MoveLast();
ReadData();
ResetControls();
Invalidate();
m_bModify = FALSE;
}
BOOL CMenuDlg::OnInitDialog()
{
CDialog::OnInitDialog();
HRESULT hr;
m_bModify = FALSE;
m_bNewRecord = FALSE;
m_hPhotoBitmap = NULL;
m_pBMPBuffer = NULL;
// TODO: Add extra initialization here
//初始化记录集对象
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
//打开记录集
hr = m_pRecordset->Open("SELECT * FROM MenuInfo",_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);
}
catch(_com_error e)///捕捉异常
{
CString temp;
temp.Format("aaa连接数据库错误信息:%s",e.ErrorMessage());
AfxMessageBox(temp);
return 0;
}
if(SUCCEEDED(hr))
{
//读取第一条记录
ReadData();
}
ResetControls();
return TRUE; // return TRUE unless you set the focus to a control
}
void CMenuDlg::OnAddFood()
{
// TODO: Add your control notification handler code here
if(m_bModify)
{
int nRet = MessageBox("当前信息尚未保存,是否保存?","用户信息",MB_YESNOCANCEL);
switch(nRet)
{
case IDCANCEL:
return;
case IDYES:
OnSaveFood() ;
break;
case IDNO:
default:
break;
}
}
m_editName.EnableWindow();
m_editNum.EnableWindow();
m_editType.EnableWindow();
m_editPrice.EnableWindow();
m_editRemark.EnableWindow();
m_editFoodCost.EnableWindow();
m_btnDelete.EnableWindow(FALSE);
m_btnSelPhoto.EnableWindow();
m_strFoodName = "";
m_nFoodNum =0;
m_nFoodPrice = 0;
m_strFoodType ="";
m_strFoodRemark = "";
m_nFoodCost = 0;
m_bNewRecord = TRUE;
m_bModify = FALSE;
UpdateData(FALSE);
DestroyPhoto();
Invalidate();
}
void CMenuDlg::ResetControls()
{
BOOL IsFirstRecord = FirstRecord();
BOOL IsLastRecord = LastRecord();
//如果是第一条记录,“<”不可用
m_btnPreview.EnableWindow(!IsFirstRecord);
m_btnFirst.EnableWindow(!IsFirstRecord);
//如果是最后一条记录,“>”不可用
m_btnNext.EnableWindow(!IsLastRecord);
m_btnLast.EnableWindow(!IsLastRecord);
}
//--------------判断是否是第一个记录---------------//
BOOL CMenuDlg::FirstRecord()
{
if(m_pRecordset->BOF)
{
m_editName.EnableWindow(FALSE);
m_editNum.EnableWindow(FALSE);
m_editType.EnableWindow(FALSE);
m_editPrice.EnableWindow(FALSE);
m_editRemark.EnableWindow(FALSE);
m_editFoodCost.EnableWindow(FALSE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -