⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resoursedlg.cpp

📁 一个好的旅游管理系统,分享一下.不错的啊 .
💻 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 + -