📄 testlistboxdlg.cpp
字号:
// TestListBoxDlg.cpp : implementation file
//
#include "stdafx.h"
#include "TestListBox.h"
#include "TestListBoxDlg.h"
#include "Serch.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTestListBoxDlg dialog
CTestListBoxDlg::CTestListBoxDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestListBoxDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTestListBoxDlg)
m_PageCount = 0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CTestListBoxDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestListBoxDlg)
DDX_Control(pDX, IDC_BUTTON2, m_Exit);
DDX_Control(pDX, IDC_BUTTON1, m_Change);
DDX_Control(pDX, IDC_BUTTON6, m_HomePage);
DDX_Control(pDX, IDC_BUTTON8, m_Choose);
DDX_Control(pDX, IDC_BUTTON5, m_Next);
DDX_Control(pDX, IDC_BUTTON4, m_Before);
DDX_Control(pDX, IDC_LIST1, m_ListBox);
DDX_Text(pDX, IDC_COUNT, m_PageCount);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTestListBoxDlg, CDialog)
//{{AFX_MSG_MAP(CTestListBoxDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTestListBoxDlg message handlers
BOOL CTestListBoxDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 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
// TODO: Add extra initialization here
// m_ListBox.AddString("I like shanghai");
// m_ListBox.AddString("I like VCKBASE");
// m_ListBox.AddString("I like china");
// m_ListBox.AddString("I like c++");
// m_ListBox.AddString("I like VC++");
// m_ListBox.AddString("I like shanghai");
// m_ListBox.AddString("I like VCKBASE");
// m_ListBox.AddString("I like china");
// m_ListBox.AddString("I like c++");
// m_ListBox.AddString("I like VC++");
// m_ListBox.AddString("I like shanghai");
// m_ListBox.AddString("I like VCKBASE");
// m_ListBox.AddString("I like china");
// m_ListBox.AddString("I like c++");
// m_ListBox.AddString("I like xml");
// m_ListBox.AddString("I like shanghai");
// m_ListBox.AddString("who u r");
// m_ListBox.AddString("who am I");
m_FilePathName = "";
m_Count = 0;
m_PageCount = 0;
// int cx,cy;
// cx = GetSystemMetrics(SM_CXSCREEN);
// cy = GetSystemMetrics(SM_CYSCREEN);
// CRect rcTemp;
// rcTemp.BottomRight() = CPoint(cx, cy);
// rcTemp.TopLeft() = CPoint(0, 0);
// MoveWindow(&rcTemp);
iStatus = 0 ; // 第一幅图;
m_ListBox.GetClientRect(&size1);
size2.right = size3.right= size1.right;
size2.bottom = size3.bottom = size1.bottom;
HBITMAP htempbmp;
m_ListBox.m_bmp.LoadBitmap(IDB_BITMAP1);
hbmp = (HBITMAP )m_ListBox.m_bmp.Detach();
htempbmp = GetSizeBITMAP(hbmp , size1.right,size1.bottom);
m_ListBox.m_bmp.Attach(htempbmp);
bmp.LoadBitmap(IDB_BITMAP2);
hbmp2 =(HBITMAP ) bmp.Detach();
hbmp2 = GetSizeBITMAP(hbmp2 , size1.right,size1.bottom);
m_ListBox.Invalidate();
//按钮图标
m_Change.LoadBitmaps(IDB_CHANGE_A, IDB_CHANGE_C, IDB_CHANGE_B, IDB_BITMAP1);
m_Choose.LoadBitmaps(IDB_CHOOSE_A, IDB_CHOOSE_C, IDB_CHOOSE_B, IDB_BITMAP1);
m_Before.LoadBitmaps(IDB_BEFORE_A, IDB_BEFORE_C, IDB_BEFORE_B, IDB_BITMAP1);
m_Next.LoadBitmaps(IDB_NEXT_A, IDB_NEXT_C, IDB_NEXT_B, IDB_BITMAP1);
m_HomePage.LoadBitmaps(IDB_HOMEPAGE_A, IDB_HOMEPAGE_C, IDB_HOMEPAGE_B, IDB_BITMAP1);
m_Exit.LoadBitmaps(IDB_EXIT_A, IDB_EXIT_C, IDB_EXIT_B, IDB_BITMAP1);
//
// HICON hIcon;
// hIcon=(HICON)::LoadImage(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 24,24, 0);
// m_bTest.SetIcon(hIcon);
// m_bTest.ShowWindow(SW_SHOWNORMAL);
return TRUE; // return TRUE unless you set the focus to a control
}
void CTestListBoxDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// 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 CTestListBoxDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CBitmap m_bmpImage1;
m_bmpImage1.LoadBitmap(IDB_BITMAP3);
CRect r;
GetClientRect(&r);
HBRUSH brush = (HBRUSH)::GetStockObject(GRAY_BRUSH);
::FillRect(dc.m_hDC,&r,brush);
dc.SetStretchBltMode(HALFTONE);
CDC memdc;
memdc.CreateCompatibleDC( &dc );
CBitmap* pOldBmp= memdc.SelectObject(&m_bmpImage1);
BITMAP bmp;
m_bmpImage1.GetBitmap(&bmp);
dc.StretchBlt(r.left,r.top,r.Width(),r.Height(),&memdc,0,0,
bmp.bmWidth,bmp.bmHeight,SRCCOPY);
memdc.SelectObject(pOldBmp);
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CTestListBoxDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CTestListBoxDlg::OnButton1(){
// TODO: Add your control notification handler code here
iStatus = 1 - iStatus;
if(iStatus==0){
m_ListBox.GetClientRect(&size2);
HBITMAP htempbmp;
htempbmp = GetSizeBITMAP(hbmp , size2.right ,size2.bottom);
m_ListBox.m_bmp.Detach();
m_ListBox.m_bmp.Attach(htempbmp);
size1.right = size2.right;
size1.bottom = size2.bottom;
Invalidate(TRUE);
}
else{
m_ListBox.GetClientRect(&size3);
HBITMAP htempbmp;
htempbmp = GetSizeBITMAP(hbmp2 , size3.right ,size3.bottom);
m_ListBox.m_bmp.Detach();
m_ListBox.m_bmp.Attach(htempbmp);
size1.right = size3.right;
size1.bottom = size3.bottom;
Invalidate(TRUE);
}
}
void CTestListBoxDlg::Refresh(){
if(iStatus==0){
m_ListBox.GetClientRect(&size2);
if((size2.right == size1.right) & (size2.bottom == size1.bottom)){
return;
}
else{
HBITMAP htempbmp;
htempbmp = GetSizeBITMAP(hbmp , size2.right ,size2.bottom);
m_ListBox.m_bmp.Detach();
m_ListBox.m_bmp.Attach(htempbmp);
size1.right = size2.right;
size1.bottom = size2.bottom;
Invalidate(TRUE);
}
}
else{
m_ListBox.GetClientRect(&size3);
if((size3.right == size1.right) & (size3.bottom == size1.bottom)){
return;
}
else{
HBITMAP htempbmp;
htempbmp = GetSizeBITMAP(hbmp2 , size3.right ,size3.bottom);
m_ListBox.m_bmp.Detach();
m_ListBox.m_bmp.Attach(htempbmp);
size1.right = size3.right;
size1.bottom = size3.bottom;
Invalidate(TRUE);
}
}
}
HBITMAP CTestListBoxDlg::GetSizeBITMAP(HBITMAP hBitmap, int w, int h){
CDC sourceDC, destDC;
sourceDC.CreateCompatibleDC( NULL );
destDC.CreateCompatibleDC( NULL );
BITMAP bm;
::GetObject( hBitmap, sizeof( bm ), &bm );
HBITMAP hbmResult = ::CreateCompatibleBitmap(CClientDC(NULL), w, h);
HBITMAP hbmOldSource = (HBITMAP)::SelectObject( sourceDC.m_hDC, hBitmap );
HBITMAP hbmOldDest = (HBITMAP)::SelectObject( destDC.m_hDC, hbmResult );
destDC.BitBlt(0, 0, w, h, &sourceDC, 0, 0, SRCCOPY );
::SelectObject( sourceDC.m_hDC, hbmOldSource );
::SelectObject( destDC.m_hDC, hbmOldDest );
return hbmResult;
}
// void CTestListBoxDlg::OnButton3(){
//
// // TODO: Add your control notification handler code here
// if(m_FilePathName == "")
// {
// AfxMessageBox("请先选择故事!");
// return;
// }
// m_ListBox.ResetContent();
// CStdioFile Csfile;
//
// Csfile.Open(/*".\\Debug\\222222.txt"*/m_FilePathName,CStdioFile::modeReadWrite);
// CString strFileLine;
// int lineCount = 0;
// // for(nLineNum=1;nLineNum<=1;nLineNum++)
// // {
// // int count(0);
// // while(Csfile.ReadString(strFileLine))
// // {
// // lineCount++;
// // if(lineCount==nLineNum)
// //
// // {
// // m_ListBox.AddString(strFileLine);
// // }
// //
// // Refresh();
// // count++;
// // // UpdateData(FALSE);
// // if(count>2)
// // break;
// // }
// // }
//
// //=====================================================================
// int count(0);
// int i(0);
// for(; Csfile.ReadString(strFileLine); i++){
// m_pstrTemp[i] = strFileLine;
// }
// for(int j(0); j < 10; j++){
//
// m_ListBox.AddString(m_pstrTemp[j]);
// }
// m_PageCount = 1;
// Refresh();
// UpdateData(FALSE);
// // m_ListBox.AddString(strFileLine);
// // if(count>2)
// // break;
// //=====================================================================
// }
void CTestListBoxDlg::OnButton4(){
// TODO: Add your control notification handler code here
if(m_FilePathName == "")
{
AfxMessageBox("请先选择故事!");
return;
}
m_Count -= 10;
if (m_Count < 0){
m_Count = 0;
return;
}
m_ListBox.ResetContent();
int i;
int j = m_Count;
for(i=j;i<j+10;i++){
m_ListBox.AddString(m_pstrTemp[i]);
}
if(1==m_PageCount){
return;
}
m_PageCount -= 1;
Refresh();
UpdateData(FALSE);
}
void CTestListBoxDlg::OnButton5(){
// TODO: Add your control notification handler code here
if(m_FilePathName == "")
{
AfxMessageBox("请先选择故事!");
return;
}
m_Count += 10;
int i;
int j = m_Count;
if (m_pstrTemp[m_Count+1]==""){
return;
}
m_ListBox.ResetContent();
for(i = j; i < j+10; i++){
m_ListBox.AddString(m_pstrTemp[i]);
}
if (m_pstrTemp[i+1]==""){
return;
}
m_PageCount += 1;
Refresh();
UpdateData(FALSE);
}
void CTestListBoxDlg::OnButton6(){
// TODO: Add your control notification handler code here
if(m_FilePathName == "")
{
AfxMessageBox("请先选择故事!");
return;
}
m_Count = 0;
m_ListBox.ResetContent();
int i;
int j = m_Count;
for(i = j; i < j+10; i++){
m_ListBox.AddString(m_pstrTemp[i]);
}
m_PageCount = 1;
Refresh();
UpdateData(FALSE);
}
void CTestListBoxDlg::OnButton8(){
// TODO: Add your control notification handler code here
//kai 090108号屏
///////////////////////////////////////////////////////////
// CFileDialog fileDlg(TRUE);
// fileDlg.DoModal();
// m_FilePathName = fileDlg.GetPathName();
//
// for(int ii=0;ii<131072;ii++){
// if(m_pstrTemp[ii]!=""){
// m_pstrTemp[ii]="";
// }
// }
//
//
// if(m_FilePathName == "")
// {
// AfxMessageBox("请先选择故事!");
// return;
// }
// m_ListBox.ResetContent();
//
// CStdioFile Csfile;
//
// Csfile.Open(/*".\\Debug\\222222.txt"*/m_FilePathName,CStdioFile::modeReadWrite);
// CString strFileLine;
// int lineCount = 0;
// int count(0);
// int i(0);
// for(; Csfile.ReadString(strFileLine); i++){
// m_pstrTemp[i] = strFileLine;
// }
// for(int j(0); j < 10; j++){
//
// m_ListBox.AddString(m_pstrTemp[j]);
// }
// m_PageCount = 1;
// Refresh();
// UpdateData(FALSE);
//////////////////////////////////////////////
/////////////////////////////////////////////
CSerch SerchObject;
SerchObject.DoModal();
}
void CTestListBoxDlg::OnButton2()
{
// TODO: Add your control notification handler code here
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -