📄 myadodlg.cpp
字号:
// MyAdoDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MyAdo.h"
#include "MyAdoDlg.h"
#include "GridDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyAdoDlg dialog
CMyAdoDlg::CMyAdoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMyAdoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMyAdoDlg)
m_strTel = _T("");
m_strName = _T("");
m_nAge = 0;
m_strSex = _T("");
m_cyMoney = COleCurrency(0, 0);
m_dtDate = COleDateTime::GetCurrentTime();
m_strOther = _T("");
m_fLength = 0.0f;
m_lPostion = 0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMyAdoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMyAdoDlg)
DDX_Text(pDX, IDC_EDIT_TEL, m_strTel);
DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
DDX_Text(pDX, IDC_EDIT_AGE, m_nAge);
DDX_CBString(pDX, IDC_COMBO_SEX, m_strSex);
DDX_Text(pDX, IDC_EDIT_MONEY, m_cyMoney);
DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_BORTH, m_dtDate);
DDX_Text(pDX, IDC_EDIT_OTHER, m_strOther);
DDX_Text(pDX, IDC_EDIT_LEGTH, m_fLength);
DDX_Text(pDX, IDC_EDIT_POSTION, m_lPostion);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMyAdoDlg, CDialog)
//{{AFX_MSG_MAP(CMyAdoDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_BACK, OnButtonBack)
ON_BN_CLICKED(IDC_BUTTON_UPDATE, OnButtonUpdate)
ON_BN_CLICKED(IDC_BUTTON_FORWARD, OnButtonForward)
ON_BN_CLICKED(IDC_BUTTON_UPDATEPHOTO, OnButtonUpdatephoto)
ON_BN_CLICKED(IDC_BUTTON_CANCELUPDATE, OnButtonCancelupdate)
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
ON_BN_CLICKED(IDC_BUTTON_NEW, OnButtonNew)
ON_BN_CLICKED(IDC_BUTTON_BOOKMARK, OnButtonBookmark)
ON_BN_CLICKED(IDC_BUTTON_GOBOOKMARK, OnButtonGobookmark)
ON_BN_CLICKED(IDC_PASS, OnPass)
ON_BN_CLICKED(IDC_SORT, OnSort)
ON_BN_CLICKED(IDC_BUTTON_IMPORT, OnButtonImport)
ON_BN_CLICKED(IDC_BUTTON_EXPORT, OnButtonExport)
ON_BN_CLICKED(IDC_BUTTON_UPDATEINFO, OnButtonUpdateinfo)
ON_BN_CLICKED(IDC_BUTTON_BACK2, OnButtonBack2)
ON_BN_CLICKED(IDC_BUTTON_FORWARD2, OnButtonForward2)
ON_BN_CLICKED(IDC_BUTTON_UPDATEFIELDINFO, OnButtonUpdatefieldinfo)
ON_BN_CLICKED(IDC_BUTTON_UPDATECONNECT, OnButtonUpdateconnect)
ON_BN_CLICKED(IDC_RESET, OnReset)
ON_BN_CLICKED(IDC_FIND, OnFind)
ON_BN_CLICKED(IDC_FINDNEXT, OnFindnext)
ON_BN_CLICKED(IDC_GRID, OnGrid)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyAdoDlg message handlers
BOOL CMyAdoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
if (m_adoConnection.ConnectAccess("database.mdb"))
{
m_adoRecordSet.SetAdoConnection(&m_adoConnection);
m_adoRecordSet.SetCursorLocation();
m_adoRecordSet.Open("ado", adCmdTable);
m_adoConnection.BeginTrans();
UpdateRecord(TRUE);
OnButtonUpdatefieldinfo();
}
else
{
MessageBox("数据库连接失败!");
}
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CMyAdoDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
if (m_Bitmap.GetSafeHandle() != NULL)
{
CDC memDC;
BITMAP bm;
m_Bitmap.GetBitmap(&bm);
memDC.CreateCompatibleDC(&dc);
CBitmap *oldbitmap = memDC.SelectObject(&m_Bitmap);
dc.BitBlt(370, 100, 130, 160, &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(oldbitmap);
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CMyAdoDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
BOOL CMyAdoDlg::UpdateRecord(BOOL bLoad)
{
if (m_adoRecordSet.GetRecordCount() < 1) return FALSE;
if (bLoad)
{
int Sex;
m_adoRecordSet.GetCollect("性别", Sex);
m_strSex = (Sex == -1) ? "男" : "女";
m_Bitmap.DeleteObject();
if (!m_adoRecordSet.GetCollect("姓名", m_strName)
|| !m_adoRecordSet.GetCollect("年龄", m_nAge)
|| !m_adoRecordSet.GetCollect("身高", m_fLength)
|| !m_adoRecordSet.GetCollect("出生年月", m_dtDate)
|| !m_adoRecordSet.GetCollect("总资产", m_cyMoney)
|| !m_adoRecordSet.GetCollect("电话", m_strTel)
|| !m_adoRecordSet.GetChunk("玉照", m_Bitmap))
{
;
}
CRect rect(370, 100, 500, 260);
InvalidateRect(rect);
m_lPostion = m_adoRecordSet.GetAbsolutePosition();
UpdateData(FALSE);
return TRUE;
}
else
{
if (!UpdateData()) return FALSE;
int bSex = 0;
if (m_strSex == "男") bSex = -1;
if (!m_adoRecordSet.PutCollect("年龄", m_nAge)
|| !m_adoRecordSet.PutCollect("身高", m_fLength)
|| !m_adoRecordSet.PutCollect("姓名", m_strName)
|| !m_adoRecordSet.PutCollect("电话", m_strTel)
|| !m_adoRecordSet.PutCollect("总资产", m_cyMoney)
|| !m_adoRecordSet.PutCollect("出生年月", m_dtDate)
|| !m_adoRecordSet.PutCollect("性别", bSex))
{
AfxMessageBox("Error!");
}
return TRUE;
}
}
void CMyAdoDlg::OnButtonBack()
{
try
{
if (m_adoRecordSet.IsBOF()) return;
m_adoRecordSet.MovePrevious();
if (m_adoRecordSet.IsBOF())
{
if (!m_adoRecordSet.IsEOF())
{
m_adoRecordSet.MoveLast();
}
}
m_strPathName = "";
UpdateRecord();
}
catch (...)
{
}
}
void CMyAdoDlg::OnButtonUpdate()
{
if (UpdateRecord(FALSE))
{
m_strPathName = "";
if (!m_adoRecordSet.Update())
{
AfxMessageBox("更新失败,请正确填写相应的信息!");
}
}
}
void CMyAdoDlg::OnButtonForward()
{
if (m_adoRecordSet.IsEOF()) return;
m_adoRecordSet.MoveNext();
if (m_adoRecordSet.IsEOF())
{
if (!m_adoRecordSet.IsBOF())
{
m_adoRecordSet.MoveFirst();
}
}
m_strPathName = "";
UpdateRecord();
}
void CMyAdoDlg::OnOK()
{
m_adoConnection.CommitTrans();
CDialog::OnOK();
}
void CMyAdoDlg::OnButtonUpdatephoto()
{
if (m_adoRecordSet.GetRecordCount() < 1) return ;
static char BASED_CODE szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
CFileDialog dlg(TRUE,"BMP",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if (dlg.DoModal() == IDOK)
{
m_strPathName = dlg.GetPathName();
if (m_strPathName != "")
{
if (m_adoRecordSet.AppendChunk("玉照", LPCTSTR(m_strPathName)))
{
CFile file;
if (file.Open(LPCTSTR(m_strPathName), CFile::modeRead))
{
long length = (long)file.GetLength();
char *pdata = new char[length + 1];
if (file.Read(pdata, length) == (DWORD)length)
{
BITMAPFILEHEADER bmfHeader;
DWORD bmfHeaderLen = sizeof(bmfHeader);
strncpy((LPSTR)&bmfHeader, (LPSTR)pdata, bmfHeaderLen);
if (bmfHeader.bfType == (*(WORD*)"BM") )
{
LPSTR lpDIB = pdata + bmfHeaderLen;
BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)lpDIB;
BITMAPINFO &bmInfo = *(LPBITMAPINFO)lpDIB;
LPVOID lpDIBBits = pdata + ((BITMAPFILEHEADER *)pdata)->bfOffBits;
CWindowDC dc(this);
HBITMAP hBmp = CreateDIBitmap(dc.m_hDC, &bmiHeader, CBM_INIT, lpDIBBits, &bmInfo, DIB_RGB_COLORS);
if (m_Bitmap.GetSafeHandle() != NULL) m_Bitmap.DeleteObject();
m_Bitmap.Attach(hBmp);
Invalidate();
}
}
delete[] pdata;
pdata = NULL;
}
} // if (m_adoRecordSet.AppendChun
} // if (m_strPathName != "")
}
Invalidate();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -