📄 logdlg.cpp
字号:
// LogDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Demo03.h"
#include "LogDlg.h"
//引用声明
#include "LogDaoSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLogDlg dialog
CLogDlg::CLogDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLogDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLogDlg)
//}}AFX_DATA_INIT
}
void CLogDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLogDlg)
DDX_Control(pDX, IDC_LIST_LOG, m_ctrList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLogDlg, CDialog)
//{{AFX_MSG_MAP(CLogDlg)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_LOG, OnDblclkListLog)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLogDlg message handlers
BOOL CLogDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//初始化对话框中的内容
//设置column名称
m_ctrList.InsertColumn(0,"操作类型",LVCFMT_LEFT,80);
m_ctrList.InsertColumn(1,"记录内容",LVCFMT_LEFT,120);
m_ctrList.InsertColumn(2,"有无图片",LVCFMT_LEFT,50);
m_ctrList.InsertColumn(3,"访问时间",LVCFMT_LEFT,150);
//创建CLogDaoSet的实例
CLogDaoSet m_LogDaoSet;
//记录用户序号
int i = 0;
CString m_strSQL,strTemp;
try
{
if(m_LogDaoSet.IsOpen())
m_LogDaoSet.Close();
//设置查询条件
m_LogDaoSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"select * from pLog order by LogID DESC",0);
//输出匹配上查询条件用户记录,直到记录为空
while(!m_LogDaoSet.IsEOF())
{
//将LogType转换
switch(m_LogDaoSet.m_LogType)
{
case 2:
{
m_ctrList.InsertItem(i,"访问非法网址");
break;
;
}
default:
{
m_ctrList.InsertItem(i,"未知操作");
break;
;
}
}
m_ctrList.SetItemText(i,1,m_LogDaoSet.m_LogInfo);
//记录游标移到下一条记录
switch(m_LogDaoSet.m_LogPicFlag)
{
case 0:
{
m_ctrList.SetItemText(i,2,"无图片");
break;
;
}
default:
{
m_ctrList.SetItemText(i,2,"有图片");
break;
;
}
}
strTemp.Format("%d年%2d月%2d日%2d时%2d分",m_LogDaoSet.m_LogTime.GetYear(),
m_LogDaoSet.m_LogTime.GetMonth(),m_LogDaoSet.m_LogTime.GetDay(),
m_LogDaoSet.m_LogTime.GetHour(),m_LogDaoSet.m_LogTime.GetMinute());
m_ctrList.SetItemText(i,3,strTemp);
m_LogDaoSet.MoveNext();
i++;
}
//关闭记录集
if(m_LogDaoSet.IsOpen())
m_LogDaoSet.Close();
}
//意外捕获
catch(CDaoException*e)
{
e->ReportError ();
//e->Delete ();
return FALSE;
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CLogDlg::OnDblclkListLog(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
POSITION pos=m_ctrList.GetFirstSelectedItemPosition();
if (pos==NULL)
{
//如果没有选择记录,则退出
return;
}
//获取当前记录的位置游标
int m_CurLog=m_ctrList.GetNextSelectedItem(pos);
int i=0;
//创建一个CFile来保存临时图片,
CFile m_PicFile;
if(!m_PicFile.Open("C:\\1.jpg",CFile::modeCreate,NULL))
{
AfxMessageBox("临时文件打开失败!");
return;
}
//打开数据库来获取图片内容
CLogDaoSet m_LogDaoSet;
try
{
if(m_LogDaoSet.IsOpen())
m_LogDaoSet.Close();
//设置查询条件
m_LogDaoSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"select * from pLog order by LogID DESC",0);
//输出匹配上查询条件用户记录,直到记录为空
while(!m_LogDaoSet.IsEOF())
{
m_LogDaoSet.MoveNext();
//如果是被双击的记录,则保存到临时文件中。
if(i == m_CurLog)
{
m_PicFile.WriteHuge(m_LogDaoSet.m_LogPic.m_hData,
m_LogDaoSet.m_LogPic.m_dwDataLength);
}
i++;
}
//关闭记录集
if(m_LogDaoSet.IsOpen())
m_LogDaoSet.Close();
//关闭临时文件。
m_PicFile.Close();
//直接调用Windows相关程序来显示图片
::WinExec("C:\\1.jpg",SW_SHOW);
}
//意外捕获
catch(CDaoException*e)
{
e->ReportError ();
//e->Delete ();
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -