📄 smbiosinfodlg.cpp
字号:
// SMBiosInfoDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "HW_sigal.h"
#include "SMBiosInfoDlg.h"
#include ".\smbiosinfodlg.h"
#include ".\SMStdStr.h"
#include ".\SMBiosInformation.h"
// CSMBiosInfoDlg 对话框
IMPLEMENT_DYNAMIC(CSMBiosInfoDlg, CDialog)
CSMBiosInfoDlg::CSMBiosInfoDlg(CWnd* pParent /*=NULL*/, int typeNum)
: CDialog(CSMBiosInfoDlg::IDD, pParent)
, m_strSmbiosInfo(_T(""))
{
m_typeNum = typeNum;
}
CSMBiosInfoDlg::~CSMBiosInfoDlg()
{
}
void CSMBiosInfoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
// DDX_Text(pDX, IDC_EDIT_TEST_INFO, m_strSmbiosInfo);
DDX_Control(pDX, IDC_LIST_SM_DATA, m_listSmData);
}
BEGIN_MESSAGE_MAP(CSMBiosInfoDlg, CDialog)
ON_WM_SHOWWINDOW()
// ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_SMBIOS_Info, OnTcnSelchangeTabSmbiosInfo)
END_MESSAGE_MAP()
// CSMBiosInfoDlg 消息处理程序
void CSMBiosInfoDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
// TODO: 在此处添加消息处理程序代码
//find the type in the list
list <DMITYPEINFO>::iterator it;
it = m_smBiosInfo.listDMITypeInfo.begin();
for(int index=0; index<m_typeNum; index++, it++)
{
}
if(it == m_smBiosInfo.listDMITypeInfo.end())
{
}
else
{
//find it, //show the data of this type
ListView_SetExtendedListViewStyleEx(m_listSmData.GetSafeHwnd(), LVS_EX_FULLROWSELECT , LVS_EX_FULLROWSELECT);
CRect rect;
this->m_listSmData.GetClientRect(&rect);
int nInterval = rect.Width()/8;
this->m_listSmData.InsertColumn(0, _T("Offset"), LVCFMT_LEFT, nInterval);
this->m_listSmData.InsertColumn(1, _T("Values(Hex)"), LVCFMT_LEFT, nInterval*4);
this->m_listSmData.InsertColumn(2, _T("ASIIC(Text)"), LVCFMT_LEFT, rect.Width()-5*nInterval);
ShowMemoryData(0, it->endAddr - it->startAddr, it->pBuffer);
}
}
void CSMBiosInfoDlg::OnTcnSelchangeTabSmbiosInfo(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}
int CSMBiosInfoDlg::ShowMemoryData(PBYTE baseAddress, unsigned long rSize, PBYTE pBuffer)
{
LV_ITEM lvi;
TCHAR szItem[256];
lvi.mask = LVIF_TEXT;
for(int i=0; i < (int)rSize/16+1; i++)
{
int show_size = (rSize - 16*i) >16?16:(rSize - 16*i);
if(show_size == 0)
{
break;
}
// First item
memset(szItem, 0, sizeof(szItem));
lvi.iItem = i;
lvi.iSubItem = 0;
_stprintf(szItem, _T("%08x"), baseAddress+i*16);
lvi.pszText = szItem;
m_listSmData.InsertItem(&lvi);
// SubItem 1
memset(szItem, 0, sizeof(szItem));
lvi.iSubItem = 1;
for(int offset = 0 ; offset < show_size; offset++)
{
for(int j=0; j<2; j++)
{
_stprintf(szItem+offset*2+j, _T("%01x"), (pBuffer[i*16 + offset]>>((1-j)*4))&0x0F );
}
}
CString strTemp = CString(szItem);
strTemp.MakeUpper();
lvi.pszText = strTemp.GetBuffer();
m_listSmData.SetItem(&lvi);
// SubItem 2
memset(szItem, 0, sizeof(szItem));
lvi.iSubItem = 2;
for(int offset=0; offset < show_size; offset++)
{
if(pBuffer[i*16 + offset]>31 && pBuffer[i*16 + offset] != 127)
{
sprintf(szItem+offset, _T("%c"), pBuffer[i*16 + offset]);
}
else
{
szItem[offset] = '.';
}
}
szItem[16] = 0;
lvi.pszText = _T(szItem);
m_listSmData.SetItem(&lvi);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -