📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "UsingBlob.h"
#include "MainFrm.h"
#include "dbImages.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
ON_WM_CREATE()
ON_COMMAND_EX(CG_ID_VIEW_IMAGESINDB, OnBarCheck)
ON_UPDATE_COMMAND_UI(CG_ID_VIEW_IMAGESINDB, OnUpdateControlBarMenu)
//{{AFX_MSG_MAP(CMainFrame)
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
ON_COMMAND(ID_FILE_STORETODATABASE, OnFileStoretodatabase)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.x = cs.y = 0;
cs.cx = GetSystemMetrics(SM_CXFULLSCREEN);
cs.cy = GetSystemMetrics(SM_CYFULLSCREEN);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add a menu item that will toggle the visibility of the // dialog bar named "ImagesInDB": // 1. In ResourceView, open the menu resource that is used by // the CMainFrame class // 2. Select the View submenu // 3. Double-click on the blank item at the bottom of the submenu // 4. Assign the new item an ID: CG_ID_VIEW_IMAGESINDB // 5. Assign the item a Caption: ImagesInDB // TODO: Change the value of CG_ID_VIEW_IMAGESINDB to an appropriate value: // 1. Open the file resource.h // CG: The following block was inserted by the 'Dialog Bar' component { // Initialize dialog bar m_wndImagesInDB if (!m_wndImagesInDB.Create(this, CG_IDD_IMAGESINDB, CBRS_LEFT | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE, CG_ID_VIEW_IMAGESINDB)) { TRACE0("Failed to create dialog bar m_wndImagesInDB\n"); return -1; // fail to create } m_wndImagesInDB.EnableDocking(CBRS_ALIGN_LEFT | CBRS_ALIGN_RIGHT); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndImagesInDB); }
CListCtrl* pList = (CListCtrl*)m_wndImagesInDB.GetDlgItem(IDC_LIST1);
VERIFY(pList);
pList->SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES);
pList->InsertColumn(0,"Images in db",LVCFMT_LEFT,200);
int nIndex = 0;
CdbImages dbImages(&theApp.m_DB);
dbImages.Open();
while (!dbImages.IsEOF())
{
pList->InsertItem(nIndex++,dbImages.m_BLOBName);
dbImages.MoveNext();
}
dbImages.Close();
return 0;
}
void CMainFrame::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
CListCtrl* pList = (CListCtrl*)m_wndImagesInDB.GetDlgItem(IDC_LIST1);
VERIFY(pList);
int nIndex = pList->GetNextItem(-1,LVNI_SELECTED);
if (nIndex < 0)return;
CdbImages dbImages(&theApp.m_DB);
CString strFileName = pList->GetItemText(nIndex,0);
dbImages.m_strFilter.Format("BLOBName = '%s'",strFileName);
try
{
dbImages.Open();
if (dbImages.IsEOF())
AfxMessageBox("Unable to get image from db");
else
{
char tmpPath[_MAX_PATH+1];
GetTempPath(_MAX_PATH,tmpPath);
strFileName.Insert(0,tmpPath);
CFile outFile(strFileName,CFile::modeCreate|CFile::modeWrite);
LPSTR buffer = (LPSTR)GlobalLock(dbImages.m_BLOBImage.m_hData);
outFile.WriteHuge(buffer,dbImages.m_BLOBImage.m_dwDataLength);
GlobalUnlock(dbImages.m_BLOBImage.m_hData);
outFile.Close();
theApp.OpenDocumentFile(strFileName);
}
dbImages.Close();
}
catch(CException* pE)
{
pE->ReportError();
pE->Delete();
return;
}
*pResult = 0;
}
void CMainFrame::OnFileStoretodatabase()
{
static char BASED_CODE szFilter[] = "Bitmap Files (*.bmp)|*.bmp||";
CdbImages dbImages(&theApp.m_DB);
CFileDialog fd(TRUE,NULL,NULL,0,szFilter,this);
CListCtrl* pList = (CListCtrl*)m_wndImagesInDB.GetDlgItem(IDC_LIST1);
VERIFY(pList);
if (IDOK != fd.DoModal())
return;
try
{
dbImages.Open();
dbImages.AddNew();
CFile fileImage;
CFileStatus fileStatus;
fileImage.Open(fd.GetPathName(), CFile::modeRead);
fileImage.GetStatus(fileStatus);
dbImages.m_BLOBName = fileImage.GetFileTitle();
dbImages.m_BLOBImage.m_dwDataLength = fileStatus.m_size;
HGLOBAL hGlobal = GlobalAlloc(GPTR,fileStatus.m_size);
dbImages.m_BLOBImage.m_hData = GlobalLock(hGlobal);
fileImage.ReadHuge(dbImages.m_BLOBImage.m_hData,fileStatus.m_size);
dbImages.SetFieldDirty(&dbImages.m_BLOBImage);
dbImages.SetFieldNull(&dbImages.m_BLOBImage,FALSE);
dbImages.Update();
GlobalUnlock(hGlobal);
dbImages.Close();
pList->InsertItem(0,fileImage.GetFileTitle());
}
catch(CException* pE)
{
pE->ReportError();
pE->Delete();
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -