📄 resoursedlg.cpp
字号:
// RESOURSEDLG.cpp : implementation file
//
#include "stdafx.h"
#include "常州旅游管理系统.h"
#include "RESOURSEDLG.h"
#include "ResourseDlgSet.h"
#include "常州旅游管理系统View.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// RESOURSEDLG dialog
RESOURSEDLG::RESOURSEDLG(CWnd* pParent /*=NULL*/)
: CDialog(RESOURSEDLG::IDD, pParent)
{
//{{AFX_DATA_INIT(RESOURSEDLG)
m_address = _T("");
m_rename = _T("");
m_resoursesum = _T("");
m_telephone = _T("");
m_volue = _T("");
m_time = _T("");
m_id = _T("");
isAdd=FALSE;
isEdit=FALSE;
//}}AFX_DATA_INIT
}
void RESOURSEDLG::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(RESOURSEDLG)
DDX_Control(pDX, IDOK, m_ok);
DDX_Control(pDX, IDC_PRE, m_pre);
DDX_Control(pDX, IDC_NEXT, m_next);
DDX_Control(pDX, IDC_LAST, m_last);
DDX_Control(pDX, IDC_FIRST, m_first);
DDX_Control(pDX, IDC_EDIT, m_edit);
DDX_Control(pDX, IDC_DEL, m_del);
DDX_Control(pDX, IDC_ADD, m_add);
DDX_Text(pDX, IDC_ADDRESS, m_address);
DDX_Text(pDX, IDC_RENAME, m_rename);
DDX_Text(pDX, IDC_RESOURCESUMMARY, m_resoursesum);
DDX_Text(pDX, IDC_TELEPHONE, m_telephone);
DDX_Text(pDX, IDC_VOLUE, m_volue);
DDX_Text(pDX, IDC_TIME, m_time);
DDX_Text(pDX, IDC_ID, m_id);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(RESOURSEDLG, CDialog)
//{{AFX_MSG_MAP(RESOURSEDLG)
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_NEXT, OnNext)
ON_BN_CLICKED(IDC_PRE, OnPre)
ON_BN_CLICKED(IDC_FIRST, OnFirst)
ON_BN_CLICKED(IDC_LAST, OnLast)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_DEL, OnDel)
ON_BN_CLICKED(IDC_EDIT, OnEdit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// RESOURSEDLG message handlers
BOOL RESOURSEDLG::OnInitDialog()
{
CDialog::OnInitDialog();
m_database=new CDatabase;
m_database->Open("景点管理",FALSE,FALSE,"ODBC;UID=sa;PWD=",TRUE);
CString strSQL="select * from 景点资料 ";
m_pSet=new ResourseDlgSet(m_database);
m_pSet->Open(CRecordset::snapshot,strSQL);
getdata();
m_pSet->MoveFirst();//第一条记录开始
str="Debug\\中华恐龙园.bmp";
////////////////////////////////////////
CRect rectsize;
//GetClientRect(rectsize);
CMyApp *pcpp=(CMyApp*)AfxGetApp();
CMainFrame *pfrm=(CMainFrame*)(pcpp->m_pMainWnd);
CMyView* pview=(CMyView*)pfrm->m_splitter.GetPane(0,1);
rectsize=pview->viewrect;
SetWindowPos(NULL,rectsize.Width()/3+46,63,rectsize.Width(),rectsize.Height(),TRUE);
////////////////////////////////////////
ShowPicture();
///////////////////////////////////////////////////
bool flag;
flag=pcpp->flagapp;
if(!flag)
{
GetDlgItem(IDC_ADD)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_DEL)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT)->ShowWindow(SW_HIDE);
}
else
{
GetDlgItem(IDC_ADD)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_DEL)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_EDIT)->ShowWindow(SW_SHOW);
}
///////////////////////////////////////////////////
//将景点记录设置为不能更改
SetEdit(TRUE);
return TRUE;
}
HBRUSH RESOURSEDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
pDC->SetTextColor(RGB(0,0,225));
if (nCtlColor != CTLCOLOR_EDIT )
{
pDC->SetBkMode(TRANSPARENT);
HBRUSH B = CreateSolidBrush(RGB(128, 184, 223));
//HBRUSH B = CreateSolidBrush(RGB(0,170,170));
return (HBRUSH) B;
}
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Return a different brush if the default is not desired
return hbr;
}
void RESOURSEDLG::ShowPicture()
{
if( m_bmp.m_hObject != NULL )//判断
{
m_bmp.DeleteObject();
}
/////////载入图片
hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
str, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);
if( hbmp == NULL )
return ;
//////取得加载的BMP的信息//////
m_bmp.Attach( hbmp );
DIBSECTION ds;
BITMAPINFOHEADER &bminfo = ds.dsBmih;
m_bmp.GetObject( sizeof(ds), &ds );
int cx=bminfo.biWidth; //得到图像宽度
int cy=bminfo.biHeight; //得到图像高度
////得到图像宽度和高度,调整控件的大小,让它正好显示一张图片
CRect rect;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);
ScreenToClient(&rect);
GetDlgItem(IDC_STATIC1)->MoveWindow(rect.left,rect.top,cx,cy,true);//调整大小
InvalidateRect(rect,TRUE);
return ;
}
void RESOURSEDLG::getdata()
{
m_id=m_pSet->m_column1;
m_rename=m_pSet->m_column2;
m_volue=m_pSet->m_column3;
m_time=m_pSet->m_column4;
m_resoursesum=m_pSet->m_column5;
m_address=m_pSet->m_column6;
m_rename.TrimRight();
str="Debug\\"+m_rename+".bmp";
m_telephone=m_pSet->m_column7;
UpdateData(FALSE);
}
void RESOURSEDLG::OnNext()
{
str.Empty();
m_pSet->MoveNext();
getdata();
ShowPicture();
SetButtonState();
}
void RESOURSEDLG::OnPre()
{
m_pSet->MovePrev();
getdata();
ShowPicture();
SetButtonState();
}
////////////////////////////////////////////////////////////////
//blSet=TRUE,显示"确定"和"取消"按钮,隐藏"修改"按钮,
//blSet=FALSE,显示"添加"和"删除"按钮,显示"修改"按钮;
void RESOURSEDLG::SetButtonState()
{
if(IsFirstRecord())
{
GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
GetDlgItem(IDC_PRE)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_FIRST)->EnableWindow(TRUE);
GetDlgItem(IDC_PRE)->EnableWindow(TRUE);
}
if(IsLastRecord())
{
GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_NEXT)->EnableWindow(TRUE);
GetDlgItem(IDC_LAST)->EnableWindow(TRUE);
}
}
////////////////////////////////////////////////////////////////
//用来判断当前记录是否是记录集的第一条记录
BOOL RESOURSEDLG::IsFirstRecord()
{
if(m_pSet->IsBOF()&&m_pSet->IsEOF())
{
return TRUE;
}
else if(m_pSet->IsBOF())
{
m_pSet->MoveFirst();
return TRUE;
}
else
return FALSE;
}
//用来判断当前记录是否记录集的最后一条记录
BOOL RESOURSEDLG::IsLastRecord()
{
if(m_pSet->IsBOF()&&m_pSet->IsEOF())
{
return TRUE;
}
else if(m_pSet->IsEOF())
{
m_pSet->MoveLast();
return TRUE;
}
else
return FALSE;
}
void RESOURSEDLG::OnFirst()
{
m_pSet->MoveFirst();
OnPre();
}
void RESOURSEDLG::OnLast()
{
m_pSet->MoveLast();
OnNext();
}
void RESOURSEDLG::OnPaint()
{
CPaintDC dc(GetDlgItem(IDC_STATIC1)); //用此句,得到picture控件的DC,图像将被绘制在控件上
CRect rcclient;
GetDlgItem(IDC_STATIC1)->GetClientRect(&rcclient);
CDC memdc;
memdc.CreateCompatibleDC(&dc);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc, rcclient.Width(), rcclient.Height());
memdc.SelectObject( &bitmap );
CWnd::DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0);
CDC maskdc;
maskdc.CreateCompatibleDC(&dc);
CBitmap maskbitmap;
maskbitmap.CreateBitmap(rcclient.Width(), rcclient.Height(), 1, 1, NULL);
maskdc.SelectObject( &maskbitmap );
maskdc.BitBlt( 0, 0, rcclient.Width(), rcclient.Height(), &memdc,
rcclient.left, rcclient.top, SRCCOPY);
CBrush brush;
brush.CreatePatternBrush(&m_bmp);
dc.FillRect(rcclient, &brush);
dc.BitBlt(rcclient.left, rcclient.top, rcclient.Width(), rcclient.Height(),
&memdc, rcclient.left, rcclient.top,SRCPAINT);
brush.DeleteObject();
// Do not call CDialog::OnPaint() for painting messages
}
//设置编辑框是否可以更改
void RESOURSEDLG::SetEdit(bool bFlag)
{
CEdit *pedit1=(CEdit*)GetDlgItem(IDC_ID);
pedit1->SetReadOnly(bFlag);
CEdit *pedit2=(CEdit*)GetDlgItem(IDC_RENAME);
pedit2->SetReadOnly(bFlag);
CEdit *pedit3=(CEdit*)GetDlgItem(IDC_VOLUE);
pedit3->SetReadOnly(bFlag);
CEdit *pedit4=(CEdit*)GetDlgItem(IDC_TIME);
pedit4->SetReadOnly(bFlag);
CEdit *pedit5=(CEdit*)GetDlgItem(IDC_RESOURCESUMMARY);
pedit5->SetReadOnly(bFlag);
CEdit *pedit6=(CEdit*)GetDlgItem(IDC_ADDRESS);
pedit6->SetReadOnly(bFlag);
CEdit *pedit7=(CEdit*)GetDlgItem(IDC_TELEPHONE);
pedit7->SetReadOnly(bFlag);
}
//把当前编辑框中的值赋给记录集对应的成员变量
void RESOURSEDLG::SetValue()
{
UpdateData(TRUE);
m_pSet->m_column1=m_id;
m_pSet->m_column2=m_rename;
m_pSet->m_column3=m_volue;
m_pSet->m_column4=m_time;
m_pSet->m_column5=m_resoursesum;
m_pSet->m_column6= m_address;
m_pSet->m_column7= m_telephone;
}
//将编辑框中的内容清空或设置为0
void RESOURSEDLG::Clear()
{
m_id=_T("");
m_rename=_T("");
m_volue=_T("");
m_time=_T("");
m_resoursesum=_T("");
m_address=_T("");
m_telephone=_T("");
UpdateData(FALSE);
}
//设置按钮是否隐藏
void RESOURSEDLG::SetNavButtonVisible(int isVisible)
{
GetDlgItem(IDC_FIRST)->ShowWindow(isVisible);
GetDlgItem(IDC_PRE)->ShowWindow(isVisible);
GetDlgItem(IDC_NEXT)->ShowWindow(isVisible);
GetDlgItem(IDC_LAST)->ShowWindow(isVisible);
GetDlgItem(IDOK)->ShowWindow(isVisible);
}
void RESOURSEDLG::SetButtonText(BOOL blSet)
{
if(blSet)
{
GetDlgItem(IDC_EDIT)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_ADD)->SetWindowText(_T("确 定"));
GetDlgItem(IDC_DEL)->SetWindowText(_T("取 消"));
}
else
{
GetDlgItem(IDC_EDIT)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_ADD)->SetWindowText(_T("添加"));
GetDlgItem(IDC_DEL)->SetWindowText(_T("删除"));
}
}
void RESOURSEDLG::SetNoRecordBtnState()
{
GetDlgItem(IDC_FIRST)->EnableWindow(FALSE);
GetDlgItem(IDC_PRE)->EnableWindow(FALSE);
GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);
GetDlgItem(IDC_LAST)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT)->EnableWindow(FALSE);
GetDlgItem(IDC_DEL)->EnableWindow(FALSE);
Clear();
}
//添加新记录功能 && 确定按钮事件
void RESOURSEDLG::OnAdd()
{
if(isAdd||isEdit)
{
try
{
DestroyPhoto();
if(!UpdateData(TRUE)) return;
if(m_id.IsEmpty())
{
MessageBox("[景点编号] 字段必须填写内容!","注意",MB_ICONINFORMATION|MB_OK);
return;
}
SetValue();
m_pSet->Update();
if(isAdd)
{
m_pSet->Requery();
m_pSet->MoveLast();
}
SetNavButtonVisible(SW_SHOW);
SetButtonText(FALSE);
SetEdit(TRUE);
isAdd=FALSE;
isEdit=FALSE;
getdata();
SetButtonState();
}
catch(CDBException* pEx)
{
pEx->ReportError();
}
}
else
{
if(m_pSet->CanAppend())
{
SetNavButtonVisible(SW_HIDE);
SetButtonText(TRUE);
m_pSet->AddNew();
if(isEmpty())
{
GetDlgItem(IDC_EDIT)->EnableWindow(TRUE);
GetDlgItem(IDC_DEL)->EnableWindow(TRUE);
}
SetEdit(FALSE);
Clear();
isAdd=TRUE;
}
else
{
AfxMessageBox("Can't Append New Record");
}
}
ShowPicture();
}
void RESOURSEDLG::DestroyPhoto()
{
CRect rect;
GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect(rect,TRUE);
UpdateWindow();
}
//删除记录功能 && 取消功能
void RESOURSEDLG::OnDel()
{
if(isAdd||isEdit)
{
m_pSet->CancelUpdate();
SetNavButtonVisible(SW_SHOW);
SetButtonText(FALSE);
SetEdit(TRUE);
if(isEmpty())
SetNoRecordBtnState();
else
getdata();
isEdit=FALSE;
isAdd=FALSE;
}
else
if(MessageBox("确定要删除这条记录吗?","删除记录",MB_YESNO|MB_ICONINFORMATION) == IDYES)
{
m_pSet->Delete();
try
{
OnNext();
if(isEmpty())
{
SetNoRecordBtnState();
return;
}
SetButtonState();
getdata();
}
catch(CDBException* pEx)
{
pEx->ReportError();
}
}
ShowPicture();
}
BOOL RESOURSEDLG::isEmpty()
{
if(m_pSet->IsBOF() && m_pSet->IsEOF())
{
return TRUE;
}
else
return FALSE;
}
void RESOURSEDLG::OnEdit()
{
if(m_pSet->CanAppend())
{
SetNavButtonVisible(SW_HIDE);
SetButtonText(TRUE);
SetEdit(FALSE);
m_pSet->Edit();
isEdit=TRUE;
}
else
{
AfxMessageBox("Can't Modify the Record");
}
}
void RESOURSEDLG::OnOK()
{
new CFaderWnd(this,2000);//实现渐隐效果
EndDialog(IDOK);//关闭对话框
//CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -