Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool CWispHexWnd::OnUpdateClient(WISP_MSG *pMsg)
- {
- unsigned short Buffer[0x200];
- CWispWnd::OnUpdateClient(pMsg);
- int OffsetMode = GetOffsetMode();
- m_Size1 = 0;
- if (m_bShowOffset != 0)
- {
- unsigned int v6 = m_nByte_Line/m_ShowLength;
- m_ClientDC.m_TextStyle = 0;
- int XStart = m_ItemSpace[0] + m_ItemSpace[1];
- int GroupLen = 3 * m_ShowLength;
- m_ClientDC.m_OldTextColor = m_ClientDC.m_TextColor;
- m_ClientDC.m_TextColor = m_ItemColor[1];
- if (v6 > 0)
- {
- unsigned int HexLen = 0;
- int AR_v55 = 1;
- int CC____v52 = v6;
- do {
- // int n = 0;
- if (m_ShowOffset)
- {
- unsigned short *v56 = Buffer;
- for (int n = 0; n < m_ShowLength; ++n)
- {
- TSPrintf(v56, WSTR("+%X"), AR_v55*m_ShowLength-n-1);
- v56 += 2;
- }
- } else
- {
- unsigned short *v56 = Buffer;
- for (int n = 0; n < m_ShowLength; ++n)
- {
- TSPrintf(v56, WSTR("%X "), (AR_v55*m_ShowLength-n-1+m_CurAddr) % m_nByte_Line);
- v56 += 2;
- }
- }
- m_ClientDC.DrawString(m_CharWidth * (XStart + HexLen - m_CharXPos),
- 0, Buffer, 2 * m_ShowLength, 0, 0);
- AR_v55++;
- HexLen += GroupLen;
- --CC____v52;
- } while (CC____v52 );
- }
- }
- if (m_bFloatModeOff)
- {
- unsigned long Addr = GetAddress(m_StringAddr);
- if (Addr != m_CurAddr)
- ViewAddressMsg(Addr, 0);
- }
- memset(m_LenArray, 0, sizeof(m_LenArray));
- unsigned char DataBuffer[32];
- memset(DataBuffer, 0, sizeof(DataBuffer));
- unsigned short szSpace[32];
- for (int nLine = 0; nLine < m_nLines_Page; ++nLine)
- {
- int XStart = m_ItemSpace[0];
- int YLine = (OffsetMode + nLine) * m_LineHeight;
- unsigned long Address = m_CurAddr + nLine * m_nByte_Line;
- if (m_AddressMode == 0)
- {
- TSPrintf(Buffer, WSTR("%08X:"), Address);
- } else
- {
- long AddressOffset = Address - m_AddressModeOffs;
- if (AddressOffset > 0)
- TSPrintf(Buffer, WSTR("$+%X"), AddressOffset);
- else
- if (AddressOffset < 0)
- TSPrintf(Buffer, WSTR("$-%X"), -AddressOffset);
- else
- TStrCpy(Buffer, "$ ==>");
- }
- int Len = TStrLen(Buffer);
- m_LenArray[nLine][0] = Len;
- m_ClientDC.m_TextStyle = 0;
- m_ClientDC.m_OldTextColor = m_ClientDC.m_TextColor;
- m_ClientDC.m_TextColor = m_ItemColor[1];
- m_ClientDC.DrawString( (XStart - m_CharXPos) * m_CharWidth,
- YLine, Buffer, Len, 0, 0);
- XStart += m_ItemSpace[1];
- unsigned long AsciiLen = m_ImageBase + m_ImageSize - (nLine * m_nByte_Line) - m_CurAddr;
- if (AsciiLen > m_nByte_Line)
- AsciiLen = m_nByte_Line;
- TStrCpy(szSpace, CWispHexWnd::m_Spaces);
- szSpace[m_ShowLength] = 0;
- int HexLen = AsciiLen / m_ShowLength;
- if (AsciiLen % m_ShowLength)
- ++HexLen;
- int GroupLen = 3 * m_ShowLength;
- m_LenArray[nLine][1] = HexLen * GroupLen;
- int GroupX = 0;
- for (int HexIt = 0; HexIt < HexLen; ++HexIt)
- {
- int bSame = 0;
- if (!ReadMemory(Address + HexIt * m_ShowLength, DataBuffer, m_ShowLength))
- {
- TStrCpy(Buffer, CWispHexWnd::m_UnReadable);
- } else
- {
- THexBytesToStr(DataBuffer, Buffer, AsciiLen, m_ShowLength, szSpace);
- for (int i = 0; i < m_ShowLength; ++i)
- m_Array1[i+ m_Size1] = DataBuffer[i];
- m_Size1 += m_ShowLength;
- bSame = Same(Address + HexIt * m_ShowLength, DataBuffer);
- }
- int HexAttr = GetHexByteAttribute(m_CurAddr + nLine * m_nByte_Line + HexIt * m_ShowLength);
- if (HexAttr == 0)
- {
- m_ClientDC.m_TextStyle = 0;
- if (!bSame)
- {
- m_ClientDC.m_OldTextColor = m_ClientDC.m_TextColor;
- m_ClientDC.m_TextColor = m_ItemColor[2];
- } else
- {
- m_ClientDC.m_OldTextColor = m_ClientDC.m_TextColor;
- m_ClientDC.m_TextColor = 0xFFFF00;
- }
- } else
- if (HexAttr == 1)
- {
- m_ClientDC.m_TextStyle = 1;
- m_ClientDC.m_OldTextBKColor = m_ClientDC.m_TextBKColor;
- m_ClientDC.m_TextBKColor = m_BSelColor;
- if (!bSame)
- {
- m_ClientDC.m_OldTextColor = m_ClientDC.m_TextColor;
- m_ClientDC.m_TextColor = m_TSelColor;
- } else
- {
- m_ClientDC.m_OldTextColor = m_ClientDC.m_TextColor;
- m_ClientDC.m_TextColor = 0xFFFF00;
- }
- } else
- if (HexAttr == 2)
- {
- m_ClientDC.m_TextStyle = 1;
- m_ClientDC.m_OldTextBKColor = m_ClientDC.m_TextBKColor;
- m_ClientDC.m_TextBKColor = m_BBPXColor;
- m_ClientDC.m_OldTextColor = m_ClientDC.m_TextColor;
- m_ClientDC.m_TextColor = m_ItemColor[2];
- }
- m_ClientDC.DrawString(m_CharWidth * (XStart + GroupX - m_CharXPos),
- YLine, Buffer, 2 * m_ShowLength, 0, 0);
- GroupX += GroupLen;
- }
- XStart += m_ItemSpace[2];
- m_LenArray[nLine][2] = m_nByte_Line;
- for (int AsciiIt = 0; AsciiIt < AsciiLen; ++AsciiIt)
- {
- if (!ReadMemory(Address + AsciiIt, DataBuffer, 1))
- TStrCpy(Buffer, CWispHexWnd::m_UnReadableASCII);
- else THexBytesToASCII(DataBuffer, Buffer, 1);
- int HexAttr = GetHexByteAttribute(AsciiIt + m_CurAddr + nLine * m_nByte_Line);
- if (HexAttr == 0)
- {
- m_ClientDC.m_TextStyle = 0;
- m_ClientDC.m_OldTextBKColor = m_ClientDC.m_TextBKColor;
- m_ClientDC.m_TextBKColor = m_pWispBase->m_pWispDrawObj->m_crSystem[20];
- m_ClientDC.m_OldTextColor = m_ClientDC.m_TextColor;
- m_ClientDC.m_TextColor = m_ItemColor[3];
- } else
- if (HexAttr == 1)
- {
- m_ClientDC.m_TextStyle = 1;
- m_ClientDC.m_OldTextBKColor = m_ClientDC.m_TextBKColor;
- m_ClientDC.m_TextBKColor = m_BSelColor;
- m_ClientDC.m_OldTextColor = m_ClientDC.m_TextColor;
- m_ClientDC.m_TextColor = m_TSelColor;
- }
- m_ClientDC.DrawString(m_CharWidth * (XStart + AsciiIt - m_CharXPos),
- YLine, Buffer, 1, 0, 0);
- }
- }
- m_Offset1 = m_CurAddr;
- if (!m_Size2)
- SyncBuffer();
- return false;
- }
Add Comment
Please, Sign In to add comment