📄 pagedeptinfo.cpp
字号:
// PageDeptInfo.cpp : implementation file
//
#include "stdafx.h"
#include "personelmanage.h"
#include "PageDeptInfo.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPageDeptInfo property page
IMPLEMENT_DYNCREATE(CPageDeptInfo, CResizablePage)
CPageDeptInfo::CPageDeptInfo() : CResizablePage(CPageDeptInfo::IDD)
{
//{{AFX_DATA_INIT(CPageDeptInfo)
m_strEmail = _T("");
m_strLoginName = _T("");
m_strName = _T("");
//}}AFX_DATA_INIT
m_pPicture = NULL;
m_nFileLen = 0;
m_pPicBuffer = NULL;
m_psp.dwFlags &= (~PSP_HASHELP);
m_psp.dwFlags |= ( PSP_USEHICON );
HICON hIconTab = AfxGetApp()->LoadIcon(IDI_PERSON);
m_psp.hIcon = hIconTab;
}
CPageDeptInfo::~CPageDeptInfo()
{
if(m_pPicture)
m_pPicture->Release();
if(m_pPicBuffer)
delete [] m_pPicBuffer;
m_pPicture = NULL;
m_pPicBuffer = NULL;
}
void CPageDeptInfo::DoDataExchange(CDataExchange* pDX)
{
CResizablePage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPageDeptInfo)
DDX_Control(pDX, IDC_LIST_EMPINFO, m_ctrlEmp);
DDX_Control(pDX, IDC_COMBO_DEPT, m_cmbDept);
DDX_Text(pDX, IDC_EDIT_EMAIL, m_strEmail);
DDX_Text(pDX, IDC_EDIT_LOGINNAME, m_strLoginName);
DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPageDeptInfo, CResizablePage)
//{{AFX_MSG_MAP(CPageDeptInfo)
ON_CBN_DROPDOWN(IDC_COMBO_DEPT, OnDropdownComboDept)
ON_CBN_SELCHANGE(IDC_COMBO_DEPT, OnSelchangeComboDept)
ON_NOTIFY(LVN_ITEMCHANGING, IDC_LIST_EMPINFO, OnItemchangingListEmpinfo)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPageDeptInfo message handlers
BOOL CPageDeptInfo::OnInitDialog()
{
CResizablePage::OnInitDialog();
// TODO: Add extra initialization here
AddAnchor(IDC_GRP, TOP_LEFT);
AddAnchor(IDC_COMBO_DEPT, TOP_LEFT);
AddAnchor(IDC_STATIC_EMPCOUNT, TOP_LEFT);
AddAnchor(IDC_GRP1, TOP_LEFT);
AddAnchor(IDC_PIC, TOP_LEFT);
AddAnchor(IDC_STATIC_NAME, TOP_LEFT);
AddAnchor(IDC_STATIC_LOGINNAME, TOP_LEFT);
AddAnchor(IDC_STATIC_EMAIL, TOP_LEFT);
AddAnchor(IDC_EDIT_NAME, TOP_LEFT);
AddAnchor(IDC_EDIT_LOGINNAME, TOP_LEFT);
AddAnchor(IDC_EDIT_EMAIL, TOP_LEFT);
AddAnchor(IDC_LIST_EMPINFO, TOP_LEFT, BOTTOM_RIGHT);
DWORD dwStyle = m_ctrlEmp.GetExtendedStyle();
dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT;
m_ctrlEmp.SetExtendedStyle(dwStyle);
m_ctrlEmp.InsertColumn(0, "员工编号", LVCFMT_LEFT, 128);
m_ctrlEmp.InsertColumn(1, "姓名", LVCFMT_LEFT, 128);
m_ctrlEmp.InsertColumn(2, "登录名", LVCFMT_LEFT, 128);
m_ctrlEmp.InsertColumn(3, "电子邮件", LVCFMT_LEFT, 128);
m_ctrlEmp.InsertColumn(4, "职位", LVCFMT_LEFT, 128);
m_ctrlEmp.InsertColumn(5, "电话号码", LVCFMT_LEFT, 128);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CPageDeptInfo::FillDept()
{
CString query = "SELECT [DeptName] FROM [tblDepartment]";
CString strDeptName;
CADODatabase *pDb = new CADODatabase;
try
{
if(pDb->Open())
{
CADORecordset *pRs = new CADORecordset(pDb);
if(pRs->Open(query, CADORecordset::openQuery))
{
m_cmbDept.ResetContent();
while(!pRs->IsEOF())
{
pRs->GetFieldValue("DeptName", strDeptName);
m_cmbDept.AddString(strDeptName);
pRs->MoveNext();
}
pRs->Close();
}
delete pRs;
pDb->Close();
}
delete pDb;
}
catch(CADOException)
{
}
}
void CPageDeptInfo::OnDropdownComboDept()
{
// TODO: Add your control notification handler code here
FillDept();
}
void CPageDeptInfo::OnSelchangeComboDept()
{
// TODO: Add your control notification handler code here
int nItem = -1;
int count = 0;
CString strCount;
CString strDeptName;
nItem = m_cmbDept.GetCurSel();
m_cmbDept.GetLBText(nItem, strDeptName);
strDeptName.TrimRight();
CString strEmployeeID, strName, strLoginName, strEmail, strTitle, strTelephone;
if(strDeptName.GetLength() > 0)
{
CADODatabase *pDb = new CADODatabase;
try
{
if(pDb->Open())
{
CADORecordset *pRs = new CADORecordset(pDb);
CADOParameter pInDeptName(CADORecordset::typeWChar, sizeof(WCHAR) * 10, CADOParameter::paramInput);
pInDeptName.SetValue(strDeptName);
CADOCommand pCmd(pDb, "spwinGetEmpbyDeptName", CADOCommand::typeCmdStoredProc);
pCmd.AddParameter(&pInDeptName);
if(pRs->Execute(&pCmd))
{
count = pRs->GetRecordCount();
strCount.Format("员工统计: %d", count);
GetDlgItem(IDC_STATIC_EMPCOUNT)->SetWindowText(strCount);
m_ctrlEmp.DeleteAllItems();
int cur = 0;
while(!pRs->IsEOF())
{
pRs->GetFieldValue("员工编号", strEmployeeID);
m_ctrlEmp.InsertItem(cur, strEmployeeID);
pRs->GetFieldValue("姓名", strName);
m_ctrlEmp.SetItemText(cur, 1, strName);
pRs->GetFieldValue("登录名", strLoginName);
m_ctrlEmp.SetItemText(cur, 2, strLoginName);
pRs->GetFieldValue("电子邮件", strEmail);
m_ctrlEmp.SetItemText(cur, 3, strEmail);
pRs->GetFieldValue("职位", strTitle);
m_ctrlEmp.SetItemText(cur, 4, strTitle);
pRs->GetFieldValue("电话号码", strTelephone);
m_ctrlEmp.SetItemText(cur, 5, strTelephone);
cur++;
pRs->MoveNext();
}
pRs->Close();
}
delete pRs;
pDb->Close();
}
delete pDb;
}
catch(CADOException)
{
}
}
}
void CPageDeptInfo::OnItemchangingListEmpinfo(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
m_strName = m_ctrlEmp.GetItemText(pNMListView->iItem, 1);
m_strLoginName = m_ctrlEmp.GetItemText(pNMListView->iItem, 2);
m_strEmail = m_ctrlEmp.GetItemText(pNMListView->iItem, 3);
CString strEmpID = m_ctrlEmp.GetItemText(pNMListView->iItem, 0);
strEmpID.TrimRight();
long empID = _ttoi(strEmpID);
CString query;
query.Format("SELECT [PhotoImage] FROM [tblEmployee] WHERE EmployeeID = %d", empID);
CADODatabase *pDb = new CADODatabase;
try
{
if(pDb->Open())
{
CADORecordset *pRs = new CADORecordset(pDb);
if(pRs->Open(query, CADORecordset::openQuery))
{
if(pRs->GetRecordCount() > 0)
{
//清除原有数据
if(m_pPicBuffer)
{
delete [] m_pPicBuffer;
m_pPicBuffer = NULL;
}
if(m_pPicture)
{
m_pPicture->Release();
m_pPicture = NULL;
}
m_nFileLen = 0;
//以下得到照片数据
m_nFileLen = pRs->GetRecordset()->GetFields()->GetItem("PhotoImage")->GetActualSize();
if(m_nFileLen > 0)
{
m_pPicBuffer = new BYTE[m_nFileLen];
if(m_pPicBuffer)
{
if(pRs->GetChunk("PhotoImage", (LPVOID)m_pPicBuffer))
LoadPicFromBuffer(); //加载图片
}
}
}
pRs->Close();
}
delete pRs;
pDb->Close();
}
delete pDb;
}
catch(CADOException)
{
}
UpdateData(FALSE);
Invalidate();
*pResult = 0;
}
void CPageDeptInfo::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
if(m_pPicture)
{
CWnd *pWnd = GetDlgItem(IDC_PIC);
CRect rect;
pWnd->GetClientRect(&rect);
CDC *pDC = pWnd->GetDC();
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
m_pPicture->get_Width(&hmWidth);
m_pPicture->get_Height(&hmHeight);
m_pPicture->Render(*pDC, 0, 0, rect.Width(), rect.Height(), 0, hmHeight, hmWidth, -hmHeight, NULL);
}
// Do not call CResizablePage::OnPaint() for painting messages
}
BOOL CPageDeptInfo::LoadPicFromBuffer()
{
BOOL bResult = FALSE;
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, m_nFileLen);
LPVOID pData = GlobalLock(hGlobal);
memcpy(pData, m_pPicBuffer, m_nFileLen);
GlobalUnlock(hGlobal);
IStream * pStream = NULL;
if(CreateStreamOnHGlobal(hGlobal, TRUE, &pStream) == S_OK)
{
//此处注意参数形式
if(OleLoadPicture(pStream, m_nFileLen, FALSE, IID_IPicture, (LPVOID *)&m_pPicture) == S_OK)
bResult = TRUE;
pStream->Release();
}
return bResult;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -