Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

154 lines
4.1 KiB
C++

// SelectBlkDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SelectBlkDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSelectBlkDlg dialog
CSelectBlkDlg::CSelectBlkDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSelectBlkDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSelectBlkDlg)
//}}AFX_DATA_INIT
m_staticSlide.m_iRowNum = 3;
m_staticSlide.m_iColNum = 3;
}
void CSelectBlkDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSelectBlkDlg)
DDX_Control(pDX, IDC_SCROLLBAR_BLK, m_vsBar);
DDX_Control(pDX, IDC_STATIC_PREVIEW, m_staticSlide);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSelectBlkDlg, CDialog)
//{{AFX_MSG_MAP(CSelectBlkDlg)
ON_WM_LBUTTONDOWN()
ON_WM_RBUTTONDOWN()
ON_WM_VSCROLL()
//}}AFX_MSG_MAP
// ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipNotify)
// ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipNotify)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSelectBlkDlg message handlers
BOOL CSelectBlkDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CRect rect;
this->GetWindowRect(&rect);
CPoint pt2;
pt2.x = m_ptBase.x + rect.Width();
pt2.y = m_ptBase.y + rect.Height();
CRect rect2(m_ptBase, pt2);
this->MoveWindow(&rect2);
m_staticSlide.ResetSource(m_csTkName, m_csType, -1, 0, 0);
InitVSBar();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSelectBlkDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
CDialog::OnLButtonDown(nFlags, point);
CDialog::OnOK();
}
void CSelectBlkDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
CDialog::OnRButtonDown(nFlags, point);
CDialog::OnCancel();
}
BOOL CSelectBlkDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == 280) //点击对话框外
CDialog::OnCancel();
else if(pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_UP || pMsg->wParam == VK_PRIOR))
m_staticSlide.OnPgup();
else if(pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_DOWN || pMsg->wParam == VK_NEXT))
m_staticSlide.OnPgdown();
return CDialog::PreTranslateMessage(pMsg);
}
BOOL CSelectBlkDlg::InitVSBar()
{
int totalRec, pageSize, imageRowNum, imageColNum;
imageRowNum = m_staticSlide.m_iRowNum;
imageColNum = m_staticSlide.m_iColNum;
pageSize = imageRowNum * imageColNum;
totalRec = (int)m_staticSlide.m_lstSlide.GetCount();
if(totalRec <= pageSize || totalRec == 0){
m_vsBar.ShowScrollBar(FALSE);
CRect rect;
this->GetWindowRect(&rect);
rect.right -= 20;
this->MoveWindow(&rect);
return FALSE;
}
else
m_vsBar.ShowScrollBar(TRUE);
SCROLLINFO scrollInfo;
scrollInfo.cbSize = sizeof(SCROLLINFO);
scrollInfo.fMask = SIF_ALL;
scrollInfo.nMin = 0;
scrollInfo.nMax = ((totalRec-1) / pageSize+1) * imageRowNum-1;
scrollInfo.nPage = imageRowNum;
scrollInfo.nPos = m_staticSlide.m_iPage * imageRowNum;
m_vsBar.SetScrollInfo(&scrollInfo, TRUE);
return TRUE;
}
void CSelectBlkDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if(pScrollBar != &m_vsBar){
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
return;
}
UINT nEndPos = pScrollBar->GetScrollPos();
switch(nSBCode){
case SB_THUMBPOSITION: //拖动滑块
m_staticSlide.GoPage(nPos/m_staticSlide.m_iRowNum);
nEndPos = nPos;
break;
case SB_LINEDOWN:
m_staticSlide.OnPgdown();
nEndPos += m_staticSlide.m_iRowNum;
break;
case SB_LINEUP:
m_staticSlide.OnPgup();
nEndPos -= m_staticSlide.m_iRowNum;
break;
case SB_PAGEDOWN:
m_staticSlide.OnPgdown();
nEndPos += m_staticSlide.m_iRowNum;
break;
case SB_PAGEUP:
m_staticSlide.OnPgup();
nEndPos -= m_staticSlide.m_iRowNum;
break;
}
pScrollBar->SetScrollPos(nEndPos);
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}