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

📄 cmainlistview.cpp

📁 这个基于嵌入式平台SMART PHONE电子邮件收发管理系统(MAIL MAN是一个电子邮件客户端软件。它以很小的体积
💻 CPP
字号:
// CMainListView.cpp: implementation of the CMainListView class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CMainListView.h"
#include "CContactsListDlg.h"
#include "CNewContactDlg.h"
#include "CMailEditDlg.h"
#include "CRecieveMailListDlg.h"
#include "COptionDlg.h"
#include "CSendMailDlg.h"
#include "CTrashDlg.h"
//全局声明
extern CRecieveMailListDlg g_recievemaillistdlg;
extern CMailEditDlg g_maileditdlg;
extern CNewContactDlg g_newcontactdlg;
extern TCHAR g_MainList[6][30];
extern CContactsListDlg  g_contactlistdlg;
extern HINSTANCE g_hInst;
extern COptionDlg g_coptiondlg;
extern CSendMailDlg g_sendmaildlg;
extern CTrashDlg g_trashdlg;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMainListView::CMainListView()
{
	m_nitem = 6;
}

CMainListView::~CMainListView()
{

}

/*
//调用之前m_hmenu的值必须为有效值
*/
LRESULT CMainListView::Create(HWND parent,HINSTANCE hInstance)
{
	RECT rc;
	if(parent == NULL)
		return -1;
//创建控件
	m_parent = parent;
	GetClientRect(parent,&rc);
	m_hwnd = CreateWindow(WC_LISTVIEW,NULL,WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_OWNERDATA|WS_BORDER|LVS_NOSCROLL|LVS_OWNERDRAWFIXED,
		       rc.left,rc.top,rc.right - rc.left,rc.bottom - rc.top,parent,m_hmenu,hInstance,NULL);
	if(m_hwnd == NULL)
		return -1;

	ListView_SetExtendedListViewStyle(m_hwnd,
            ListView_GetExtendedListViewStyle(m_hwnd) | LVS_EX_FULLROWSELECT);

//添加列
	LV_COLUMN lvColumn;
	lvColumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_WIDTH;
    lvColumn.fmt = LVCFMT_LEFT;
    lvColumn.cx = rc.right - rc.left;
	if(-1 == ListView_InsertColumn(m_hwnd,0, &lvColumn))
    {
           return -1;
    }

//设定item的个数
	//set the number of items in the list
    ListView_SetItemCount(m_hwnd,m_nitem);

	ListView_SetItemState(m_hwnd,0,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
	return 0;
}

LRESULT CMainListView::OnNotify(LPARAM lParam)
{
	NMHDR* pnmh = (NMHDR*) lParam;
	LV_DISPINFO* pdi;
	LPNMLVKEYDOWN pnkd;
    switch(pnmh->code)
	{
	case LVN_GETDISPINFO:
		 pdi = (LV_DISPINFO*)lParam;
		 if(0 == pdi->item.iSubItem)
         {
			if(pdi->item.mask & LVIF_TEXT)
            {
				swprintf(pdi->item.pszText,g_MainList[pdi->item.iItem]);
            }
			if(pdi->item.mask & LVIF_IMAGE)
            {
               pdi->item.iImage = 0;
			}
         }
		 break;

	case LVN_KEYDOWN:	
		 pnkd = (LV_KEYDOWN FAR *)lParam;
		 if(pnkd->wVKey == VK_UP)
		 {
			if(ListView_GetItemState(m_hwnd,0,LVIS_SELECTED))
			{
				ListView_SetItemState(m_hwnd,0,0,LVIS_SELECTED|LVIS_FOCUSED);
				ListView_SetItemState(m_hwnd,m_nitem,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
			}
		 }
		if(pnkd->wVKey == VK_DOWN)
		{
			if(ListView_GetItemState(m_hwnd,m_nitem-1,LVIS_SELECTED))
			{
				ListView_SetItemState(m_hwnd,m_nitem-1,0,LVIS_SELECTED|LVIS_FOCUSED);
				ListView_SetItemState(m_hwnd,-1,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
			}	
		}
		break;

   case LVN_ITEMACTIVATE:
        OnActiveItem(lParam);
		break;
	}
	return 0;
}

void CMainListView::OnActiveItem(LPARAM lParam)
{
	NMLISTVIEW* pnmlv = (NMLISTVIEW*)lParam;
	switch(pnmlv->iItem)
	{
	case 0:CRecieveMailListDlg::DlgBox(g_recievemaillistdlg,g_hInst,m_parent);
		  break;
	case 1:
		   CSendMailDlg::DlgBox(g_sendmaildlg,g_hInst,m_parent);
		   break;
	case 2:
		  g_maileditdlg.m_havecontactflag = FALSE;
		  g_maileditdlg.m_pmail = NULL;
		  CMailEditDlg::DlgBox(g_maileditdlg,m_parent,g_hInst);
		  break;
	case 3:
		  g_contactlistdlg.m_selectflag = FALSE;
		  g_contactlistdlg.CreateDlg(m_parent,g_hInst);
		   
		   break;
	case 4:COptionDlg::DlgBox(g_coptiondlg,g_hInst,m_parent);
		   break;
	case 5:CTrashDlg::DlgBox(g_trashdlg,g_hInst,m_parent);
			break;
	default:break;
	}
}

⌨️ 快捷键说明

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