📄 adddlg.cpp
字号:
// ADDdlg.cpp : implementation file
//
#include "stdafx.h"
#include "me.h"
#include "ADDdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CADDdlg dialog
CADDdlg::CADDdlg(CWnd* pParent /*=NULL*/)
: CDialog(CADDdlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CADDdlg)
m_username = _T("");
m_userdepart = _T("");
m_userID = _T("");
m_userCardID = _T("");
m_usertelenumber = _T("");
m_usersex = -1;
//}}AFX_DATA_INIT
}
void CADDdlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CADDdlg)
DDX_Text(pDX, IDC_EDIT1, m_username);
DDX_Text(pDX, IDC_EDIT2, m_userdepart);
DDX_Text(pDX, IDC_EDIT3, m_userID);
DDX_Text(pDX, IDC_EDIT4, m_userCardID);
DDX_Text(pDX, IDC_EDIT5, m_usertelenumber);
DDX_CBIndex(pDX, IDC_COMBO3, m_usersex);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CADDdlg, CDialog)
//{{AFX_MSG_MAP(CADDdlg)
ON_BN_CLICKED(IDC_BUTTON1, Onselectphoto)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CADDdlg message handlers
void CADDdlg::Onselectphoto()
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[] = "BMP Files (*.bmp)|*.bmp||";
CFileDialog fileDlg(TRUE,"BMP",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if(fileDlg.DoModal() == IDOK)
{ flagselect=1;
CString pathname = fileDlg.GetPathName();
// DestroyPhoto();
LoadBMPFile(pathname);
m_hPhotoBitmap = BufferToHBITMAP();
Invalidate();
}
}
HBITMAP CADDdlg::BufferToHBITMAP()
{
HBITMAP hBmp;
LPSTR hDIB,lpBuffer = m_pBMPBuffer;
LPVOID lpDIBBits;
BITMAPFILEHEADER bmfHeader;
DWORD bmfHeaderLen;
//获得位图的头信息
bmfHeaderLen = sizeof(bmfHeader);
strncpy((LPSTR)&bmfHeader,(LPSTR)lpBuffer,bmfHeaderLen);
//根据获得的信息头判断是否是位图
if (bmfHeader.bfType != (*(WORD*)"BM")) return NULL;
//获取位图数据
hDIB = lpBuffer + bmfHeaderLen;
BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB ;
BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ;
lpDIBBits=(lpBuffer)+((BITMAPFILEHEADER *)lpBuffer)->bfOffBits;
//创建位图
CClientDC dc(this);
hBmp = CreateDIBitmap(dc.m_hDC,&bmiHeader,
CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS);
return hBmp;
}
BOOL CADDdlg::LoadBMPFile(const char *pBMPPathname)
{
CFile file;
if( !file.Open( pBMPPathname, CFile::modeRead) )
return FALSE;
m_nFileLen = file.GetLength();
m_pBMPBuffer = new char[m_nFileLen + 1];
if(!m_pBMPBuffer)
return FALSE;
if(file.ReadHuge(m_pBMPBuffer,m_nFileLen) != m_nFileLen)
return FALSE;
return TRUE;
}
void CADDdlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
DrawUserPhoto(46,60,&dc);
CDialog::OnPaint();
// Do not call CDialog::OnPaint() for painting messages
}
void CADDdlg::DrawUserPhoto(int x, int y, CDC *pDC)
{
if(!m_hPhotoBitmap) return;
HBITMAP OldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
OldBitmap=(HBITMAP)MemDC.SelectObject(m_hPhotoBitmap);
pDC->BitBlt(x,y,160,180,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(OldBitmap);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -