⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listviewdlg.cpp

📁 在evc环境下
💻 CPP
字号:
// ListViewDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ListView.h"
#include "ListViewDlg.h"
 
#include "JWListCtrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CListViewDlg dialog

CListViewDlg::CListViewDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CListViewDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CListViewDlg)
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CListViewDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CListViewDlg)
	DDX_Control(pDX, IDC_LISTBOX, m_listbox);
	DDX_Control(pDX, IDC_LIST1, m_cListCtrl);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CListViewDlg, CDialog)
	//{{AFX_MSG_MAP(CListViewDlg)
	ON_WM_PAINT()
	ON_WM_CANCELMODE()
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_WM_ACTIVATE()
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	ON_WM_PALETTECHANGED()
	ON_WM_QUERYNEWPALETTE()
	ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
	ON_BN_CLICKED(IDC_BUTTON5, OnInitVScroll)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CListViewDlg message handlers

BOOL CListViewDlg::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
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen


/*	m_cListCtrl.InsertColumn(1,L"zhang",LVCFMT_LEFT,50);
	for(int j=0;j<30;j++)
	{
	int i;
	i=m_cListCtrl.InsertItem(0,L"dfd");
	}*/

	m_cListCtrl.SetBkImage(IDB_IMAGES_BK);

	// TODO: Add extra initialization here
 	DWORD dwStyle = m_cListCtrl.GetExtendedStyle();
	dwStyle |= LVS_EX_FULLROWSELECT | LVS_ALIGNTOP | WS_HSCROLL  ;

	//DWORD   dwStyle   =   m_cListCtrl.GetStyle();   
    //dwStyle   &=   ~0x0001;   
   
    ::SetWindowLong(m_cListCtrl.m_hWnd,   GWL_STYLE,   dwStyle);
	//::SetWindowLong( m_cListCtrl.GetSafeHwnd(), GWL_STYLE, WS_CHILD | WS_VISIBLE | WS_HSCROLL ); 

	//m_cListCtrl.ShowScrollBar(TRUE);   
	//m_cListCtrl.SetBkColor( RGB(0,150,0) );

	m_cListCtrl.SetExtendedStyle(dwStyle);


 	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); 

 	m_listbox.AddString(_T("I like shanghai"));
 	m_listbox.AddString(_T("I like shanghai"));
 	m_listbox.AddString(L"I like shanghai");
 
//	bmp.LoadBitmap(IDB_BITMAP1);
//	hbmp2 =(HBITMAP ) bmp.Detach();
//	hbmp2 = GetSizeBITMAP(hbmp2 , size1.right,size1.bottom);

	m_listbox.Invalidate(); 

 
 
	/*m_cListCtrl.InsertImgTextItems(IDB_IMAGES_NORMAL , 32, 32, 4,L"My Items1");

	m_cListCtrl.InsertImgTextItems(IDB_IMAGES_NORMAL , 32 ,32, 3,L"My Items4");

	m_cListCtrl.InsertImgTextItems(IDB_IMAGES_NORMAL , 32 ,32, 2,L"My Items3");
 
 	m_cListCtrl.InsertImgTextItems(IDB_IMAGES_NORMAL , 32, 32, 1,L"My Items2");

	m_cListCtrl.InsertImgTextItems(IDB_IMAGES_NORMAL , 32, 32, 0,L"My Items1");*/

//	m_cListCtrl.SetBkColor(RGB(0,150,0));

	 m_cListCtrl.SetBkColor(ILD_TRANSPARENT);
	
     //m_cListCtrl.ModifyStyle(0,LVS_SINGLESEL);
	
	 //m_cListCtrl.ModifyStyle(0,LVS_NOSCROLL);
	
	 m_cListCtrl.SetTextBkColor(CLR_NONE);
	
	 m_cListCtrl.SetBkImage(IDB_IMAGES_BK);

//	m_cListCtrl.ShowScrollBar( FALSE );


	return TRUE;  // return TRUE  unless you set the focus to a control
}



void CListViewDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		//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();
	}	
 
	// Do not call CDialog::OnPaint() for painting messages
}

void CListViewDlg::OnCancelMode() 
{
	CDialog::OnCancelMode();
	
	// TODO: Add your message handler code here
	
}
 
void CListViewDlg::OnButton1() 
{
	m_cListCtrl.InsertImgTextItems( IDB_IMAGES_NORMAL , 32 ,32,4,L"NewICON");

}


void CListViewDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
{
	CDialog::OnActivate(nState, pWndOther, bMinimized);
	
}

void CListViewDlg::OnButton2() 
{
	newlist = new CJWListCtrl;

 	newlist->Create(  WS_VISIBLE | LVS_REPORT | LVS_SINGLESEL |LVS_ALIGNTOP,
					CRect(0,0,180,180), this , 1);
	newlist->SetTextBkColor(CLR_NONE);	

	newlist->InsertColumn(0,L"",LVCFMT_LEFT,500);
 


	newlist->SetBkImage(IDB_BITMAP3);
	newlist->ModifyStyle(0, LVS_NOCOLUMNHEADER, 0);
	//生成CImageList,并将其绑定到CListCtrl中,这是CImageList中还没有图标,只是一个容器

	//newlist->InsertItem(0,L"aaaaaa",0);
	//newlist->SetTextColor(RGB(255,255,255));

	//.for(int j=0;j<5;j++)
	{
		newlist->InsertItem(0,L"有没有人告诉你");
 		newlist->InsertItem(1,L"长城长");
		newlist->InsertItem(1,L"等你等到我心疼");
		newlist->InsertItem(1,L"吻别");
		newlist->InsertItem(1,L"当你孤单你会想起谁");
		newlist->InsertItem(0,L"有没有人告诉你");
 		newlist->InsertItem(1,L"长城长");
		newlist->InsertItem(1,L"等你等到我心疼");
		newlist->InsertItem(1,L"吻别");
		newlist->InsertItem(1,L"当你孤单你会想起谁");
	}
 
/////////////////////////////////////////////////////
	CImageList m_ImageList; 
	m_ImageList.Create(IDB_BITMAP2,20,20,RGB(0,0,0));
	newlist->SetImageList(&m_ImageList,LVSIL_SMALL); 

	m_ImageList.Detach() ;

    
	/*
	newlist->SetImageList(&myImage, LVSIL_SMALL); 

	LVITEM item; 
	item.iImage = 0; // i为指定图标在ImageList中的序号 
	newlist->SetItem(&item); 
	*/
 

    //newlist->InsertColumn(0,L"a",LVCFMT_LEFT,10);
   	newlist->SortItems(0, TRUE); // sort the 1st column, ascending
	///重设listctrl的区域,目的就一个,去掉VSCroll。
	/*CRgn rgn;
	rgn.CreateRectRgn( 0, 0, 150, 150 );
	newlist->SetWindowRgn( rgn, TRUE );
	rgn.DeleteObject();*/

	// 挖去listctrl自带的滚动条区域
	HRGN rgn=CreateRectRgn(0,0, 160, 160 );
	newlist->SetWindowRgn( rgn, TRUE);

	//创建自己的scrollbar
 
	newlist->InitVScroll();
 
	//m_VertScrollbar.LoadMyBmp(IDB_VERTICLE_SCROLLBAR_UPARROW, IDB_VERTICLE_SCROLLBAR_SPAN, IDB_VERTICLE_SCROLLBAR_DOWNARROW, IDB_VERTICLE_SCROLLBAR_THUMB2);

	//newlist->ShowScrollBar( FALSE );
 	newlist->SetBkImage(IDB_IMAGES_BK);
	Invalidate();
	//newlist->ModifyStyle(0,LVS_NOSCROLL);
	//new
	//list->ShowScrollBar( FALSE );
	//newlist->ShowWindow(TRUE);
	//InitializeFlatSB(newlist->m_hWnd);
	//newlist->EnableScrollBar(newlist->m_hWnd, SB_BOTH, ESB_DISABLE_BOTH);
	//newlist->EnableScrollBarCtrl(SB_HORZ,FALSE);   
	//newlist->EnableScrollBarCtrl(SB_VERT,FALSE);   
	/*CScrollBar * pBar = newlist->Get
	ScrollBarCtrl(SB_VERT);//SB_VERT
	if(pBar)
		pBar->ShowWindow(SW_HIDE);*/

//	newlist->InsertImgTextItems(IDB_IMAGES_NORMAL , 32 ,32, 5,L"New Items");
}

void CListViewDlg::OnButton3() 
{
//	if(newlist!=NULL)
//		newlist->InsertImgTextItems(IDB_IMAGES_NORMAL , 32 ,32, 5,L"New Items");	
	//newlist->PositionScrollBars();
}

void CListViewDlg::OnPaletteChanged(CWnd* pFocusWnd) 
{
	CDialog::OnPaletteChanged(pFocusWnd);
	
	m_cListCtrl.SendMessage( WM_PALETTECHANGED, (WPARAM)pFocusWnd->m_hWnd );	
}

BOOL CListViewDlg::OnQueryNewPalette() 
{
	CDialog::OnQueryNewPalette();

	return m_cListCtrl.SendMessage( WM_QUERYNEWPALETTE );
}


void CListViewDlg::OnButton4() 
{
	m_cListCtrl.LineDown();
}

void CListViewDlg::OnInitVScroll() 
{
 	
}

HBITMAP CListViewDlg::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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -