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

📄 reglist.cpp

📁 使用VC6开发 通过并口操作IIC 使用winio驱动操作并口
💻 CPP
字号:
// RegList.cpp: implementation of the CRegList class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "iic.h"
#include "IICDlg.h"
#include "RegList.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CRegList::CRegList()
{
	MaxRowLength = 0;
}

CRegList::~CRegList()
{

}

BEGIN_MESSAGE_MAP(CRegList, gxListCtrl)
    //{{AFX_MSG_MAP(gxListCtrl)
    ON_NOTIFY_REFLECT(LVN_ENDLABELEDIT, OnEndLabelEdit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

void CRegList::Show()
{
	DeleteAllItems( );
	Init();
	int nItem,sum;
	CString str,strtmp;
	for(int i=0;i<m_Data.GetSize();i++){
		sum = m_Data.GetRowLength(i);
		if(MaxRowLength<sum)
		{
			for(int t = MaxRowLength;t<sum;t++)
			{
				strtmp.Format("%03d",t-1);
				InsertColumn(t+1,strtmp,LVCFMT_LEFT,40);
			}
			MaxRowLength = sum;
		}
		nItem = InsertItem(i,m_Data.GetName(i));  // 插入第一列
		for(int j=0;j<sum;j++){
			if(m_bHex)
				str.Format("%02X",m_Data.GetValue(i,j));
			else
				str.Format("%03d",m_Data.GetValue(i,j));
			SetItemText(nItem,j+1,str);  // 插入第二列
		}
	}
	return;
}

void CRegList::Init()
{
	for(int k = 0;k<MaxRowLength+1;k++)
	{
		DeleteColumn(0);
	}
	MaxRowLength = 0;
	InsertColumn(0,"Name",LVCFMT_LEFT,80);	
	InsertColumn(1,"Addr",LVCFMT_LEFT,60);
	InsertColumn(2,"Reg",LVCFMT_LEFT,50);
	CString str;
//	for(int j=1;j<256;j++){
	for(int j=1;j<8;j++){
		str.Format("%03d",j);
		InsertColumn(j+2,str,LVCFMT_LEFT,40);
	}
	MaxRowLength = 9;
	// 设置列表控件扩展样式为整行高亮
	SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES );
//	SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_UNDERLINEHOT | LVS_SHOWSELALWAYS |
//                             LVS_EX_FLATSB | LVS_EX_INFOTIP | LVS_EX_CHECKBOXES );	
//LVS_EX_TRACKSELECT |
	// 往列表控件中添加项目
	return;
}


void CRegList::OnEndLabelEdit (NMHDR* pNMHDR, LRESULT* pResult) 
{
    LV_DISPINFO *plvDispInfo = (LV_DISPINFO *)pNMHDR;
    LV_ITEM	*plvItem = &plvDispInfo->item;
	CString str(plvItem->pszText);
	int len = str.GetLength();
	BYTE val=0;
	char* p;
//    if (plvItem->pszText != NULL)
	if(len>0)
    {
		if(plvItem->iSubItem==0){
			SetItemText (plvItem->iItem, plvItem->iSubItem, str);
			m_Data.SetName(plvItem->iItem,str);
		}
		else{
			CString strA;
			strA = GetItemText(plvItem->iItem,plvItem->iSubItem -1);
			if (strlen(strA)==0){
				return;
			}
			if(m_bHex){
				val = strtoul(str,&p,16);
				str.Format ("%02X", val);
			}
			else{
				val = strtoul(str,&p,10);
				str.Format ("%03d", val);
			}
			SetItemText (plvItem->iItem, plvItem->iSubItem, str);
			m_Data.SetValue(plvItem->iItem,plvItem->iSubItem -1,val);
		}
    }
	
    *pResult = FALSE;
}
/*
void CRegList::OnLButtonDown (UINT nFlags, CPoint Point) 
{
    gxListCtrl::OnLButtonDown (nFlags, Point);
    int Index;
    int ColNum;
	Index = HitTestEx (Point, &ColNum);
	return;
    if ((Index = HitTestEx (Point, &ColNum)) != -1)
    {
		if (GetWindowLong (m_hWnd, GWL_STYLE) & LVS_EDITLABELS)
			EditSubItem (Index, ColNum);
    }
}
*/

int CRegList::InsertItemEx(int Item)
{
    int Result = InsertItem (Item + 1, "NewReg");
    CString ItemVal, Temp;
	char* p;
    if (Item == 0)
		ItemVal = "1000";
    else
	{
		BYTE HexVal;
		Temp = GetItemText (Item - 1, 1);

		if(m_bHex){
			HexVal = strtoul(Temp,&p,16)+1;
			ItemVal.Format ("%02X", HexVal);
		}
		else{
			HexVal = strtoul(Temp,&p,10)+1;
			ItemVal.Format ("%03d", HexVal);
		}
	}

    SetItemText (Item, 1, ItemVal);

    SetColumnWidth (2, LVSCW_AUTOSIZE_USEHEADER); 

	m_Data.AddRow();
	m_Data.SetName(Item,GetItemText(Item,0));
	CString str = GetItemText(Item,1);
	int number;
	hexNumberToInt(str,number);
	m_Data.SetValue(Item,0,number);
	return Result;
}

void CRegList::SaveScroll(int m_iScrollRow,BYTE val)
{
	int column = m_Data.GetRowLength(m_iScrollRow) - 1;
	m_Data.SetValue(m_iScrollRow,column,val);
	CString str;
	str.Format("%02X",val);
	this->SetItemText(m_iScrollRow,column+1,str);
	return;
}

void CRegList::SaveRegAddr(int m_iScrollRow, BYTE val)
{
	m_Data.SetValue(m_iScrollRow,1,val);
	CString str;
	if(m_bHex)
		str.Format("%02X",val);
	else
		str.Format("%03d",val);
	SetItemText(m_iScrollRow,2,str);
	return;
}

void CRegList::SaveRegName(int m_iScrollRow, CString str)
{
	m_Data.SetName(m_iScrollRow,str);
	SetItemText(m_iScrollRow,0,str);
}

void CRegList::SaveNote(int m_iScrollRow, CString str)
{
	m_Data.SetNote(m_iScrollRow,str);
}

void CRegList::DeleteRow(int row)
{
	m_Data.DeleteRow(row);
	if(m_Data.GetSize()==0) m_Data.AddRow();
	Show();
}

void CRegList::SaveIICAddr(int m_iScrollRow, BYTE val)
{
	m_Data.SetValue(m_iScrollRow,0,val);
	CString str;
	if(m_bHex)
		str.Format("%02X",val);
	else
		str.Format("%03d",val);
	SetItemText(m_iScrollRow,1,str);
	return;
}

⌨️ 快捷键说明

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