📄 mylistctrl.cpp
字号:
// MyListCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "snifferpro.h"
#include "MyListCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyListCtrl
CMyListCtrl::CMyListCtrl()
{
totallen=0;
index=0;
}
CMyListCtrl::~CMyListCtrl()
{
}
BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
//{{AFX_MSG_MAP(CMyListCtrl)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyListCtrl message handlers
void CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
int row = lpDrawItemStruct->itemID;
CRect m_rect;
int offset = 0;
char str[20];
//Init for Address
this->GetItemText(row,0,str,20);
offset=0;
//计算出位置
GetItemRect(row, &m_rect, LVIR_BOUNDS);
m_rect.left = offset ;
m_rect.right = m_rect.left + GetColumnWidth(0);
//输出内容
pDC->SetTextColor((::GetSysColor(COLOR_WINDOWTEXT)));
pDC->SetBkColor((::GetSysColor(COLOR_BACKGROUND)));
pDC->TextOut(m_rect.left,m_rect.top-1,str);
//Init for Column 0~F
for(int i=1;i<=16 && (row*16+i)<=totallen;i++){
//index++;
GetItemText(row,i,str,20);
char flag=str[2];//T表示高亮,F表示非高亮
offset += GetColumnWidth(i-1);
//计算出位置
GetItemRect(row, &m_rect, LVIR_BOUNDS);
m_rect.left = offset ;
m_rect.right = m_rect.left + GetColumnWidth(i);
char content[3];//剥去标志位T or F,输出内容前两个字节
content[0]=str[0];
content[1]=str[1];
content[2]=0;
if(flag=='F'){//没有选中
//输出内容
pDC->SetTextColor((::GetSysColor(COLOR_WINDOWTEXT)));
pDC->SetBkColor((::GetSysColor(COLOR_BACKGROUND)));
pDC->TextOut(m_rect.left,m_rect.top-1,content);
}
else{
//输出内容
pDC->SetTextColor((::GetSysColor(COLOR_HIGHLIGHTTEXT)));
pDC->SetBkColor((::GetSysColor(COLOR_HIGHLIGHT)));
pDC->FillRect(m_rect, &CBrush(::GetSysColor(COLOR_HIGHLIGHT)));
pDC->TextOut(m_rect.left,m_rect.top-1,content);
}
}
//Init for Context
this->GetItemText(row,17,str,20);
//计算出位置
offset=0;
for(i=0;i<=16;i++)
offset += GetColumnWidth(i);
GetItemRect(row, &m_rect, LVIR_BOUNDS);
m_rect.left = offset ;
m_rect.right = m_rect.left + GetColumnWidth(17);
//输出内容
pDC->SetTextColor((::GetSysColor(COLOR_WINDOWTEXT)));
pDC->SetBkColor((::GetSysColor(COLOR_BACKGROUND)));
pDC->TextOut(m_rect.left,m_rect.top-1,str);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -