65.9K
CodeProject 正在变化。 阅读更多。
Home

CPPDumpCtrl - 版本 1.2

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.88/5 (29投票s)

2002年8月7日

CPOL

20分钟阅读

viewsIcon

204630

downloadIcon

6493

用于以十六进制、十进制、二进制、八进制、ASCII 格式查看和编辑数据的类

Sample Image - dumpctrl.gif

目录

引言

CPPDumpCtrl 是一个基于 MFC 和 CWnd 类的 Dump 控件。它实现了以 HEX、DEC、BIN、OCT 和/或 ASCII 视图编辑/查看数据的基本行为。

如何将 CPPDumpCtrl 集成到您的应用程序中

要在您的项目中使用 PPDumpCtrl 控件,您需要向您的项目添加一些文件

  • PPDumpCtrl.h
  • PPDumpCtrl.cpp
  • PPNumEdit.h
  • PPNumEdit.cpp
  • memdc.h // Keith Rule 的内存 DC 帮助类。

其中 PPDumpCtrl.* 是主 CPPDumpCtrl 控件的源文件和头文件,PPNumEdit.*CPPNumEdit 控件的文件(用于就地编辑的类)。

创建 CPPDumpCtrl 对象

在将使用 CPPDumpCtrl 控件的头文件中包含文件 PPDumpCtrl.h

在您的应用程序中,为控件创建一个成员变量。请注意,此变量是指针

CPPDumpCtrl* m_hex_ctrl;

现在创建控件。对于基于对话框的应用程序,在您的 OnInitDialog 中

   // Call the base-class method
   CDialog::OnInitDialog();
// Create the CPPDumpCtrl object m_hex_ctrl = new CPPDumpCtrl; m_hex_ctrl->Create(CRect(0, 0, 100, 100), this, 100);

请记住销毁控件,否则会出现内存泄漏。例如,这可以在您的类析构函数中完成

if (m_hex_ctrl)
    delete m_hex_ctrl;

初始化 CPPDumpCtrl 对象

要在您的 OnInitDialog 中初始化 CPPDumpCtrol,请添加以下行

//Attach the Data Arrays to the CPPDumpCtrl object
m_dump_ctrl.SetPointerData(256, nNewData, nOldData, FALSE); 
//where nNewData and nOldData is a //pointer to the arrays with data for //dumping, and 256 - length of the arrays

您还可以在此处设置样式、字体和颜色

类成员

然后,当你开始迭代 2(这是构建迭代的开始)时,你可能想要复制测试用例并将它们重新分类到迭代 2。这还允许对测试用例进行粒度跟踪,并允许你说某个测试用例在一个迭代中是准备好的,但在另一个迭代中不是。同样,如何做到这一点取决于你以及你希望如何报告。 “场景”部分提供了更多细节。

 
CPPDumpCtrl 构造一个 CPPDumpCtrl 对象。
Create 构造一个 CPPDumpCtrl 对象。

 

初始化

 
SetPointerData 设置数据数组的指针并设置数据数组的长度
SetOffsetViewAddress 设置查看地址的偏移量

 

外观

 
SetDefaultStyles 将样式设置为默认值
SetStyles 设置样式
ModifyStyles 更改控件的样式
GetStyles 检索有关控件样式的信息
SetReadOnly 将数据设置为只读
IsReadOnly 检查数据是否可以更改
SetSpecialCharView 设置将替换特殊字符(代码:0 - 31)的字符

 

颜色函数

 
SetDefaultColors 将控件颜色设置为默认颜色。
SetColor 指定控件使用的颜色。
GetColor 检索控件的颜色。

 

通知

 
SetNotify 启用有关数据或视图更改的通知。
GetNotify 是否启用有关数据或视图更改的通知。

 

字体函数

 
SetDefaultFont 将控件字体设置为默认值(Courier,8pt)。
SetFont 指定控件的字体。

 

杂项函数

 
SetBeginAddress 设置控件中第一个可见地址
GetBeginAddress 从控件获取当前可见地址
SetTrackMouseMove 此函数启用或禁用鼠标跟踪。
IsTrackMouseMove 此函数返回是否启用了鼠标跟踪

 

选择函数

 
SetSelectRange 设置选定块的范围
GetSelectRange 获取选定块的范围。
IsAddressSelected 检查指定地址是否在选定范围内
EnableSelect 启用选择数据范围
IsEnableSelect 检查数据是否可以被选中

 

菜单函数

 
SetMenu 将菜单与控件关联。

 

工具提示函数

 
SetTooltipText 此函数设置控件工具提示中显示的文本的格式字符串。
ActivateTooltip 此函数启用或禁用按钮工具提示
GetTooltip 此函数获取指向工具提示对象的指针

 

CPPDumpCtrl::CPPDumpCtrl

PPDumpCtrl ();

备注
构造一个 CPPDumpCtrl 对象。控件样式、字体和颜色最初设置为默认值(参见 SetDefaultStylesSetDefaultFontSetDefaultColors)。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::Create

BOOL Create(const RECT& rect, CWnd* pParentWnd, UINT nID, DWORD dwStyle = WS_CHILD | WS_BORDER | WS_TABSTOP | WS_VISIBLE);

参数

  • rect - 窗口的大小和位置,以 pParentWnd 的客户端坐标表示。
  • pParentWnd - 父窗口。
  • nID - 子窗口的 ID。
  • dwStyle - 指定窗口样式属性。

返回值

成功则为非零,否则为 0。

备注
创建并初始化与 CPPDumpCtrl 对象关联的子窗口。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetPointerData

void SetPointerData (DWORD nLength, LPBYTE pNewData, LPBYTE pOldData /* = NULL */, BOOL bRedraw /* = TRUE */)

参数

  • nLength - 数据数组的长度
  • pNewData - 指向新数据数组的指针。
  • pOldData - 指向旧数据数组的指针。如果 pOldData 为 NULL,则指向旧数据数组的指针将与指向新数据数组的指针相同。
  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

设置数据数组的指针并设置数据数组的长度。

示例

BYTE nNewData [1000];
BYTE nOldData [1000];

//Filling the arrays
...

m_dump_ctrl.SetPointerData(1000, nNewData, nOldData);

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetOffsetViewAddress

void SetOffsetViewAddress (DWORD nAddress /* = 0 */, BOOL bRedraw /* = TRUE */)

参数

  • nAddress - 查看地址的偏移值。例如,屏幕上的查看地址始终从 0 开始。但如果您指定了偏移地址,则查看地址将从其值开始。
  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

设置查看地址的偏移量

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetDefaultStyles

void SetDefaultStyles (BOOL bRedraw /* = TRUE */)

参数

  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

将所有样式设置为默认值。该函数将以下 样式 设置到控件

PPDUMP_FIELD_ADDRESS
PPDUMP_FIELD_HEX
PPDUMP_FIELD_ASCII
PPDUMP_BAR_ADDRESS
PPDUMP_BAR_DEC
PPDUMP_BAR_HEX
PPDUMP_BAR_BIN
PPDUMP_BAR_ASCII

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetStyles

void SetStyles (DWORD nStyle, BOOL bRedraw /* = TRUE */)

参数

  • nStyle - 控件的新 样式
  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

该函数为控件设置新样式

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::ModifyStyles

void ModifyStyles (DWORD nAddStyle, DWORD nRemoveStyle, BOOL bRedraw /* = TRUE */)

参数

  • nAddStyle - 添加的 样式
  • nRemoveStyle - 移除的 样式
  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

该函数修改控件的样式

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::GetStyles

DWORD GetStyles ()

返回值

控件的当前样式。

备注

该函数返回控件的当前 样式

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetReadOnly

void SetReadOnly(BOOL bReadOnly /* = TRUE */)

参数

  • bReadOnly - 指定是设置还是移除控件的只读状态。TRUE 值将状态设置为只读;FALSE 值将状态设置为读/写。

备注

此方法设置控件的只读状态。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::IsReadOnly

BOOL IsReadOnly()

返回值

如果控件是只读的,则为 TRUE。

备注

调用此成员函数以确定控件是否为只读。用户可以查看数据,但不能更改它。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetDefaultColors

void SetDefaultColors(BOOL bRedraw /* = TRUE */)

参数

  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

使用此函数将控件颜色重置为默认值。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetColor

COLORREF SetColor(int nIndex, COLORREF crColor, BOOL bRedraw /* = TRUE */)

参数

  • nIndex - 指定要设置的颜色。这是 颜色枚举 中定义的颜色值之一
  • crColor - 指定要设置的颜色的 COLORREF 值
  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

返回值

该函数返回上一个颜色。

备注

设置 nIndex 指定的颜色。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::GetColor

COLORREF GetColor(int nIndex)

参数

  • nIndex - 指定要检索的颜色。这是 颜色枚举 中定义的颜色值之一

返回值

指向 COLORREF 值的指针,用于接收请求的颜色值

备注

该函数返回由 索引 指定的颜色。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetNotify

void SetNotify(BOOL bNotify = TRUE)
void SetNotify(HWND hWnd)

参数

  • bNotify - 如果为 TRUE,控件将向父窗口发送通知。否则,通知将不发送
  • hWnd - 如果非 NULL,控件将向指定窗口发送通知。否则,通知将不发送

备注

此函数设置或移除控件的通知消息。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::GetNotify

BOOL GetNotify()

返回值

如果控件将通知指定窗口,则为 TRUE。

备注

此函数确定是否将从控件发送通知消息。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetDefaultFont

void SetDefaultFont(BOOL bRedraw /* = TRUE */)

参数

  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

将字体设置为默认值 (Courier, 8pt)

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetFont

BOOL SetFont(CFont & font, BOOL bRedraw /* = TRUE */)
BOOL SetFont(LOGFONT & lf, BOOL bRedraw /* = TRUE */)
BOOL SetFont(LPCTSTR lpszFaceName, int nSizePoints /* = 8 */, BOOL bUnderline /* = FALSE */, BOOL bBold /* = FALSE */,
             BOOL bStrikeOut /* = FALSE */, BOOL bItalic /* = FALSE */,
             BOOL bRedraw /* = TRUE */)

参数

  • font - 一个 CFont 对象,允许完全控制字体的外观。
  • lf - 一个 LOGFONT 结构,也允许完全控制字体的外观。
  • lpszFaceName - 字体字样名称。
  • nSizePoints - 字体大小(磅)。默认值为 8。
  • bUnderline - 指定字体是否带下划线。非零值使字体带下划线。0 值使字体不带下划线。字体默认不带下划线。
  • bBold - 指定字体粗细是否为粗体。非零值使字体为粗体。0 值使字体粗细为正常。字体粗细默认正常。
  • bStrikeOut - 指定字体是否带有删除线。非零值使字体带有删除线。0 值使字体不带删除线。字体默认不带删除线。
  • bItalic - 指定字体样式是否为斜体。非零值使字体样式为斜体。0 值使字体样式为正常。字体样式默认正常。
  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

设置控件所有元素的字体

注意! 您必须设置固定宽度的字体(例如:Courier)

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetBeginAddress

void SetBeginAddress(int nAddress = 0, BOOL bRedraw = TRUE)

参数

  • nAddress - 将成为屏幕上第一个地址的地址。
  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

设置屏幕上第一个可见地址

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::GetBeginAddress

int GetBeginAddress()

返回值

该函数检索屏幕上第一个可见地址。

备注

获取屏幕上第一个可见地址

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetTrackMouseMove

void SetTrackMouseMove(BOOL bTrack = TRUE, BOOL bRedraw = TRUE)

参数

  • bTrack - 如果为 TRUE,则启用鼠标跟踪。
  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

此函数启用或禁用鼠标跟踪。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::IsTrackMouseMove

int IsTrackMouseMove()

返回值

如果启用了鼠标跟踪,函数返回 TRUE。

备注

此函数返回是否启用了鼠标跟踪。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetSelectRange

void SetSelectRange (int nBegin = 0, int nEnd = -1, BOOL bVisible = TRUE)

参数

  • nBegin - 将成为第一个选定地址的地址。
  • nEnd - 将成为最后一个选定地址的地址。如果 nEnd 为 -1,则最后一个选定地址将与第一个选定地址相同。
  • bVisible - 指定是否重绘控件以使第一个地址可见。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

设置选定块的范围。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::GetSelectRange

void GetSelectRange (LPINT nBegin, LPINT nEnd)

返回值

  • nBegin - 将成为第一个选定地址的地址。
  • nEnd - 将成为最后一个选定地址的地址。

备注

获取选定块的范围。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::IsAddressSelected

BOOL IsAddressSelected (int nAddress)

参数

  • nAddress - 将被测试的地址。

返回值

如果 nAddress 在选定块的范围内,则函数返回 TRUE。否则返回 FALSE

备注

检查指定地址是否在选定范围内

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::EnableSelect

void EnableSelect(BOOL bEnable /* = TRUE */)

参数

  • bEnable - 如果为 TRUE,则用户可以选择数据块。

备注

调用该函数以启用或禁用数据选择。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::IsEnableSelect

BOOL IsEnableSelect()

返回值

如果用户可以选择数据块,则为 TRUE。

备注

确定用户是否可以选择数据。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetSpecialCharView

void SetSpecialCharView(TCHAR chSymbol = NULL, BOOL bRedraw = TRUE)

参数

  • chSymbol - 将替换特殊字符 (0 - 31) 的字符。如果为 NULL,则符号不会更改。
  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

设置将替换特殊字符 (0 - 31) 的字符。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetMenu

BOOL SetMenu(UINT nMenu, BOOL bRedraw = TRUE)

参数

  • nMenu - 菜单资源的 ID 号。传递 NULL 以从控件中移除任何菜单。
  • bRedraw - 指定是否重绘控件。非零值重绘控件。0 值不重绘控件。控件默认重绘。

备注

此函数将菜单与控件关联。单击控件中的数据时将显示该菜单。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::SetTooltipText

void SetTooltipText(int nText, BOOL bActivate)
void SetTooltipText(CString sFormatTip, BOOL bActivate)

参数

  • nText - 包含要显示的文本的 格式字符串 的字符串资源的 ID 号。
  • sFormatTip - 指向包含要显示的文本的 格式字符串 的以 null 结尾的字符串的指针。
  • bActivate - 如果为 TRUE,则工具提示将被创建为活动状态。

备注

此函数设置控件工具提示中显示的文本的格式字符串。

格式字符串

格式字符串可以包含任何文本,以及特殊的数据替换符号。

特殊符号必须采用以下格式

<code>% [direction] [length] [type]
  • direction - 指定多字节数据的排列顺序
    • 空白 - 顺序对应于控件样式中指定的顺序 (PPDUMP_DATA_LOW_HIGH)
    • '+' - 从高字节到低字节的顺序
    • '-' - 从低字节到高字节的顺序
  • length - 指定单独数据中有多少字节 (0 - 4) 或 空白。如果为 0空白,则使用样式中指定的默认长度 (PPDUMP_WORD_DATA = 2 字节或 ~PPDUMP_WORD_DATA = 1 字节)。
  • type - 指定格式类型
    • 'R' - 十六进制地址
    • 'H' - 十六进制数据
    • 'D' - 十进制数据
    • 'B' - 二进制数据
    • 'O' - 八进制数据
    • 'A' - ASCII 数据
    • 'n' - 回车 + 换行 (等同于 "\r\n")
    • 't' - 制表符。工具提示不支持制表符。因此,制表符具有程序模拟(4 个字符)。此功能在为工具提示设置相同字符宽度的字体时效果良好。

示例

CString str = _T("Address : %RH Hex : %2H"); //Format string
m_hex_ctrl.SetTooltipText(str); //Sets format string

控件客户端区域的结果

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::ActivateTooltip

void ActivateTooltip(BOOL bActivate = TRUE)

参数

  • bActivate - 如果为 TRUE,则工具提示将被激活。

备注

此函数启用或禁用控件工具提示。

CPPDumpCtrl 概述 | 类成员 | 样式

 

CPPDumpCtrl::GetTooltip()

CToolTipCtrl * GetTooltip()

返回值

指向工具提示对象的指针。

备注

此函数获取指向工具提示对象的指针

CPPDumpCtrl 概述 | 类成员 | 样式

 

 

样式和颜色索引

控件的样式

数据字段

 
PPDUMP_FIELD_ADDRESS 数据地址字段存在
PPDUMP_FIELD_HEX 数据十六进制字段存在
PPDUMP_FIELD_DEC 数据十进制字段存在
PPDUMP_FIELD_BIN 数据二进制字段存在
PPDUMP_FIELD_OCT 数据八进制字段存在
PPDUMP_FIELD_ASCII 数据 ASCII 字段存在

PPDUMP_FIELD_ALL
所有数据字段都存在

 

控件栏字段

 
PPDUMP_BAR_ADDRESS 控件栏地址字段存在
PPDUMP_BAR_HEX 控件栏十六进制字段存在
PPDUMP_BAR_DEC 控件栏十进制字段存在
PPDUMP_BAR_BIN 控件栏二进制字段存在
PPDUMP_BAR_OCT 控件栏八进制字段存在
PPDUMP_BAR_ASCII 控件栏 ASCII 字段存在

PPDUMP_BAR_ALL 
所有控件栏字段都存在

 

杂项

 
PPDUMP_SEPARATOR_LINES 绘制数据字段之间的分隔线
PPDUMP_READ_ONLY 只读控件(地址字段仍然可以更改)
PPDUMP_WORD_DATA 使用字数据,否则使用字节
PPDUMP_NAMED_FIELDS 绘制数据字段的标题
PPDUMP_SELECT_DATA 用户可以选择数据范围
PPDUMP_DATA_LOW_HIGH 用户可以选择多字节数据的顺序。如果设置了此标志,则第一个字节是低字节,否则是高字节
PPDUMP_TRACK_MOUSE_MOVE 用户可以选择多字节数据的顺序。如果设置了此标志,则第一个字节是低字节,否则是高字节

 

颜色枚举

对于数据

 
PPDUMP_COLOR_DATA_FG nNewArray 和 nOldArray 中相等数据的前景色
PPDUMP_COLOR_DATA_CHANGE_FG nNewArray 和 nOldArray 中不同数据的前景色
PPDUMP_COLOR_DATA_BK 数据的背景色

 

用于就地编辑

 
PPDUMP_COLOR_EDIT_FG 无错误的编辑数据的前景色
PPDUMP_COLOR_EDIT_BK 无错误的编辑数据的背景色
PPDUMP_COLOR_EDIT_ERR_FG 有错误的编辑数据的前景色
PPDUMP_COLOR_EDIT_ERR_BK 有错误的编辑数据的背景色

 

杂项

 
PPDUMP_COLOR_ADDRESS_FG 地址字段的前景色
PPDUMP_COLOR_CARET_BK 插入符下数据的背景色
PPDUMP_COLOR_TEXT_HEADER 标题的前景色
PPDUMP_COLOR_SEPARATORS 分隔线的颜色
PPDUMP_COLOR_MOUSE_TRACK 鼠标跟踪矩形的颜色

 

消息

控件有三个消息。前两个将以下结构作为参数传递

typedef struct tagNM_PPDUMP_CTRL {
NMHDR hdr;
int  iAddress; //The editing or beginig address (excepting the offset address)
UINT iValue;   //The changed value (for UDM_PPDUMPCTRL_CHANGE_DATA message only)
} NM_PPDUMP_CTRL; 

UDM_PPDUMPCTRL_BEGIN_ADDR - 用户更改了屏幕上的第一个地址。新地址作为参数 iAddress 传递。iValue 成员没有值。

UDM_PPDUMPCTRL_CHANGE_DATA - 当用户尝试更改任何地址的值时发送到父窗口。地址作为参数 iAddress 传递,新值作为参数 iValue 传递。控件不直接更改数据。它只是通知父级更改的必要性。父级应自行更改数据并重绘控件。

以下示例

添加到头文件。

afx_msg void NotifyEditData(NMHDR * pNMHDR, LRESULT * result);

到实现文件。

ON_NOTIFY (UDM_PPDUMPCTRL_CHANGE_DATA, IDC_EDIT1, NotifyEditData)
void CParentDlg::NotifyEditData(NMHDR * pNMHDR, LRESULT * result)

{
    *result = 0;


    //Gets pointers to structure NM_PPDUMP_CTRL
	   NM_PPDUMP_CTRL * pNotify = (NM_PPDUMP_CTRL*)pNMHDR

    //Really changing data ...
    SetNewValueData(pNotify->iAddress, pNotify->iValue);

    //Redraw the control
    m_dump_ctrl.RedrawWindow();
}

第三个消息 UDM_PPDUMPCTRL_MENU_CALLBACK 在用户尝试显示菜单时发送到窗口。此消息将以下结构作为参数传递

typedef struct tagNM_PPDUMP_MENU {
NMHDR hdr;
HMENU nMenu;    //Handle to the menu
int   iArea;    //The area of the field data under the mouse
int   iAddress; //The address (excepting the offset address) under the mouse
} NM_PPDUMP_MENU; 

第四个消息 UDM_PPDUMPCTRL_SELECTION 在用户完成数据选择时发送到窗口。如果选择被禁用或选择等于单独的数据,则不发送此消息。此消息将以下结构作为参数传递

typedef struct tagNM_PPDUMP_SEL {
NMHDR hdr;
int   iFirstAddr; //The first address of the selection
int   iLastAddr;  //The last address of the selection
} NM_PPDUMP_SEL; 

热键

此控件具有以下热键

在查看模式下(不编辑数据)

热键 描述
移动插入符
插入符向后移动一个地址
插入符向前移动一个地址
插入符向上移动一行
插入符向下移动一行
HOME 插入符移动到行的开头
END 插入符移动到行的末尾
CTRL+HOME 插入符移动到第一个地址
CTRL+END 插入符移动到最后一个地址
PAGE UP 插入符向上移动一屏
PAGE DOWN 插入符向下移动一屏
编辑的开始...
CTRL+H 作为十六进制,如果字段存在于控制栏中且未设置 PPDUMP_READ_ONLY 样式
CTRL+D 作为十进制,如果字段存在于控制栏中且未设置 PPDUMP_READ_ONLY 样式
CTRL+B 作为二进制,如果字段存在于控制栏中且未设置 PPDUMP_READ_ONLY 样式
CTRL+O 作为八进制,如果字段存在于控制栏中且未设置 PPDUMP_READ_ONLY 样式
CTRL+A 作为 ASCII,如果字段存在于控制栏中且未设置 PPDUMP_READ_ONLY 样式
ENTER 在数据的第一个字段中

在编辑模式下

热键 描述
移动插入符
CTRL+LEFT 编辑向后移动一个地址
CTRL+RIGHT 编辑向前移动一个地址
CTRL+UP 编辑向上移动一行
CTRL+DOWN 编辑向下移动一行
CTRL+HOME 编辑移动到行的开头
CTRL+END 编辑移动到行的末尾
PAGE UP 编辑向上移动一屏
PAGE DOWN 编辑向下移动一屏
继续编辑...
CTRL+H 作为十六进制,如果字段存在于控制栏中且未设置 PPDUMP_READ_ONLY 样式
CTRL+D 作为十进制,如果字段存在于控制栏中且未设置 PPDUMP_READ_ONLY 样式
CTRL+B 作为二进制,如果字段存在于控制栏中且未设置 PPDUMP_READ_ONLY 样式
CTRL+O 作为八进制,如果字段存在于控制栏中且未设置 PPDUMP_READ_ONLY 样式
CTRL+A 作为 ASCII,如果字段存在于控制栏中且未设置 PPDUMP_READ_ONLY 样式
TAB 到下一个字段
SHIFT+TAB 到上一个字段
编辑结束
ENTER 好的
ESC 取消

历史

2002年8月7日 首次发布
2002年8月13日 发布版本 1.1
- 添加了新样式 PPDUMP_DATA_LOW_HIGH
- 添加了工具提示支持
- 添加了新消息 UDM_PPDUMPCTRL_SELECTION 和结构 NM_DUMP_SEL
- 添加了鼠标滚轮支持(感谢 Darren Schroeder)
- 修复了大型数组问题(感谢 Bill Morrison - Rosinante Software)
- 其他小修复
2002年8月19日

发布版本 1.2
- 为工具提示文本的格式字符串添加了新的格式字符
- 添加了函数 SetSpecialCharViewGetTooltip
- 两个函数 SetTrackMouseMoveIsTrackMouseMove 和新样式 PPDUMP_TRACK_MOUSE_MOVE
- 修复了 GetDC() 引起的内存泄漏
- 现在 控件基于 CWnd 而不是 CEdit
- 现在 控件可以静态和动态创建

鸣谢...

  • Yaroslav PetrikevichAndrey Moiseyev 提出了控件功能的想法。
  • Davide Calabro 他的类 CButtonST 中找到了一些问题的解决方案。
  • Chris Maunder 他关于控件子类化的文章。
  • Keith Rule 他的类 CMemDC
  • Tomasz Sowinski 他在工具提示方面的帮助。
  • 许多人在 CodeProject 论坛上帮助我回答问题。

 

已知问题

  • 如果您能帮助我,请告诉我,以便我可以将它们纳入下一个版本。

 

计划增强功能

  • 如果您有任何其他改进建议,请告诉我,以便我将其纳入下一个版本。

 

联系作者

请通过 电子邮件 将任何评论或错误报告发送给我。

© . All rights reserved.