📄 cmainlistview.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 + -