📄 bumendlg.cpp
字号:
// BUMENDLG.cpp : implementation file
//
#include "stdafx.h"
#include "zhurui_jk02_人事管理.h"
#include "BUMENDLG.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBUMENDLG dialog
CBUMENDLG::CBUMENDLG(CWnd* pParent /*=NULL*/)
: CDialog(CBUMENDLG::IDD, pParent)
{
//{{AFX_DATA_INIT(CBUMENDLG)
m_NAME = _T("");
//}}AFX_DATA_INIT
}
void CBUMENDLG::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBUMENDLG)
DDX_Control(pDX, IDC_TREE, m_TREE);
DDX_Text(pDX, IDC_EDIT_BUMENNAME, m_NAME);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBUMENDLG, CDialog)
//{{AFX_MSG_MAP(CBUMENDLG)
ON_WM_CTLCOLOR()
ON_WM_NCMOUSEMOVE()
ON_WM_NCLBUTTONDOWN()
ON_WM_PAINT()
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE, OnSelchangedTree)
ON_BN_CLICKED(IDC_EDIT, OnEdit)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBUMENDLG message handlers
HBRUSH CBUMENDLG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_DLG)
{
//返回对话框的颜色
hbr=(HBRUSH)::CreateSolidBrush(RGB(0,255,255));
}
HBRUSH hbr0=(HBRUSH)::GetStockObject(NULL_BRUSH);
if(nCtlColor==CTLCOLOR_STATIC)
{
//让静态文本框透明
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,255,255)); //设置字体颜色天蓝色
HBRUSH hbr0=(HBRUSH)::GetStockObject(NULL_BRUSH);
return hbr0 ;
}
if(nCtlColor==CTLCOLOR_EDIT)
{
//让静态文本框不透明
pDC->SetBkMode(2);
pDC->SetBkColor(RGB(0,0,0));
pDC->SetTextColor(RGB(0,255,255)); //设置字体颜色天蓝色
HBRUSH hbr0=(HBRUSH)::GetStockObject(NULL_BRUSH);
return hbr0 ;
}
return hbr ;
}
void CBUMENDLG::OnNcMouseMove(UINT nHitTest, CPoint point)
{
CRect rc;
this->GetWindowRect(&rc);
CDC* dc;
dc=GetWindowDC();
CDC memdc;
memdc.CreateCompatibleDC(dc);
CRect rc_window,rc_min,rc_close;
GetWindowRect(&rc_window);
rc_min.left=rc_window.right-90;
rc_min.right=rc_window.right-65;
rc_min.top=rc_window.top;
rc_min.bottom=rc_window.top+21;
rc_close.left=rc_window.right-45;
rc_close.right=rc_window.right-7;
rc_close.top=rc_window.top;
rc_close.bottom=rc_window.top+18;
CBitmap bmp,bmp1,*oldbmp;
if(rc_close.PtInRect(point))
{
bmp.LoadBitmap("IDB_CLOSE");
}
else
{
bmp.LoadBitmap("IDB_NORMAL");
}
oldbmp=memdc.SelectObject(&bmp);
dc->BitBlt(rc.Width()-93,0,93,30,&memdc,0,0,SRCCOPY);
bmp1.LoadBitmap("IDB_TOP");
memdc.SelectObject(&bmp1);
dc->BitBlt(0,0,rc.Width()-93,30,&memdc,0,0,SRCCOPY);
memdc.SelectObject(oldbmp);
bmp1.DeleteObject();
bmp.DeleteObject();
ReleaseDC(&memdc);
ReleaseDC(dc);
memdc.DeleteDC();
// dc->DeleteDC();
}
void CBUMENDLG::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
CRect rc_window,rc_min,rc_close;
GetWindowRect(&rc_window);
rc_close.left=rc_window.right-45;
rc_close.right=rc_window.right-7;
rc_close.top=rc_window.top;
rc_close.bottom=rc_window.top+21;
if(rc_close.PtInRect(point))
{
SendMessage(WM_CLOSE);
}
else
{
Default();
}
}
void CBUMENDLG::OnPaint()
{
// TODO: Add your message handler code here
CRect rc,rc_client;
CPaintDC dc0(this); // device context for painting
CDC* dc;
dc=this->GetWindowDC();
CDC memdc;
memdc.CreateCompatibleDC(dc);
CBitmap bmp,bmp1;
bmp.LoadBitmap("IDB_TOP");
memdc.SelectObject(&bmp);
this->GetWindowRect(&rc);
dc->BitBlt(0,0,rc.Width(),30,&memdc,0,0,SRCCOPY);
bmp.DeleteObject();
bmp1.LoadBitmap("IDB_NORMAL");
memdc.SelectObject(&bmp1);
dc->BitBlt(rc.Width()-93,0,93,30,&memdc,0,0,SRCCOPY);
memdc.DeleteDC();
// Do not call CDialog::OnPaint() for painting messages
}
BOOL CBUMENDLG::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_sbtADD.AutoLoad(IDC_ADD,this);
m_sbtEDIT.AutoLoad(IDC_EDIT,this);
m_sbtDELETE.AutoLoad(IDC_DELETE,this);
m_sbtOK.AutoLoad(IDCANCLE,this);
m_sbtADD.m_pbtn=(CSAMBTN*)this->GetDlgItem(IDC_ADD);
m_sbtEDIT.m_pbtn=(CSAMBTN*)this->GetDlgItem(IDC_EDIT);
m_sbtDELETE.m_pbtn=(CSAMBTN*)this->GetDlgItem(IDC_DELETE);
m_sbtOK.m_pbtn=(CSAMBTN*)this->GetDlgItem(IDCANCLE);
InitTree();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CBUMENDLG::InitTree()
{
m_TREE.DeleteAllItems();
m_TREE.SetBkColor(RGB(0,0,0));
m_TREE.SetTextColor(RGB(0,255,255));
HTREEITEM root0=m_TREE.InsertItem("部门预览",0,1,TVI_ROOT,TVI_LAST);
CDatabase db;
db.Open("sam人事管理");
CRecordset rs(&db);
rs.Open(CRecordset::forwardOnly,"select * from 部门");
CString str;
while(!rs.IsEOF())
{
rs.GetFieldValue("NAME",str);
m_TREE.InsertItem(str,0,1,root0,TVI_LAST);
rs.MoveNext();
}
m_TREE.Expand(root0,-1);
}
void CBUMENDLG::OnAdd()
{
// TODO: Add your control notification handler code here
int ADDflag=0;
UpdateData();
if(m_NAME=="")
{
MessageBox("请输入部门名称!");
}
else
{
CDatabase dbtmp;
dbtmp.Open("sam人事管理");
CRecordset rstmp(&dbtmp);
rstmp.Open(CRecordset::forwardOnly,"select NAME from 部门");
CString strtmp;
while (!rstmp.IsEOF())
{
rstmp.GetFieldValue("NAME",strtmp);
strtmp.TrimRight();
m_NAME.TrimRight();
if(m_NAME==strtmp)
{
ADDflag=1;
}
rstmp.MoveNext();
}
rstmp.Close();
if(ADDflag==1)
{
MessageBox("该部门已存在!");
}
else
{
CDatabase db;
db.Open("sam人事管理");
CString strSQL;
strSQL=" insert into 部门 values('','"+m_NAME+"','','')";
db.ExecuteSQL(strSQL);
db.Close();
MessageBox("部门添加成功!");
InitTree();
}
dbtmp.Close();
}
}
CString m_strNAME;
void CBUMENDLG::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
HTREEITEM hsel=m_TREE.GetSelectedItem();
int i =m_TREE.ItemHasChildren(hsel);
if(i==0)
{
m_strNAME=m_TREE.GetItemText(hsel);
m_NAME=m_strNAME;
}
UpdateData(FALSE);
*pResult = 0;
}
void CBUMENDLG::OnEdit()
{
// TODO: Add your control notification handler code here
if(m_NAME=="")
{
MessageBox("请选择部门");
}
else
{
UpdateData();
int EDITflag=0;
CDatabase dbtmp;
dbtmp.Open("sam人事管理");
CRecordset rstmp(&dbtmp);
rstmp.Open(CRecordset::forwardOnly,"select NAME from 部门");
CString strtmp;
while (!rstmp.IsEOF())
{
rstmp.GetFieldValue("NAME",strtmp);
strtmp.TrimRight();
m_NAME.TrimRight();
if(m_NAME==strtmp)
{
EDITflag=1;
}
rstmp.MoveNext();
}
rstmp.Close();
if(EDITflag==1)
{
MessageBox("该部门已存在!");
}
else
if(m_NAME!=m_strNAME)
{
if(IDYES==MessageBox("修改部门名称,该部门所有员工的部门属性也随之改变!\r 确认修改该部门?","确认",MB_YESNO))
{
CDatabase db;
db.Open("sam人事管理");
CString strSQL;
strSQL=" update 部门 set NAME='"+m_NAME+"' where NAME='"+m_strNAME+"' ";
db.ExecuteSQL(strSQL);
strSQL=" update 员工 set DEPARTMENT='"+m_NAME+"' where DEPARTMENT='"+m_strNAME+"' ";
db.ExecuteSQL(strSQL);
db.Close();
MessageBox("部门修改成功,原部门员工已移至新部门");
InitTree();
}
}
dbtmp.Close();
}
}
void CBUMENDLG::OnDelete()
{
// TODO: Add your control notification handler code here
if(m_NAME=="")
{
MessageBox("请选择部门!");
}
else
{
if(IDYES==MessageBox("确认删除该部门?该操作不可恢复","确认",MB_YESNO))
{
CDatabase db;
db.Open("sam人事管理");
CString strSQL;
strSQL=" delete from 部门 where NAME='"+m_strNAME+"' ";
db.ExecuteSQL(strSQL);
MessageBox("部门删除成功\r请重新编辑该部门员工信息");
InitTree();
db.Close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -