INT SelEnd;
} HEXEDIT_DATA, *PHEXEDIT_DATA;
-static const TCHAR ClipboardFormatName[] = TEXT("RegEdit_HexData");
+static const WCHAR ClipboardFormatName[] = L"RegEdit_HexData";
static UINT ClipboardFormatID = 0;
/* hit test codes */
-#define HEHT_LEFTMARGIN (0x1)
-#define HEHT_ADDRESS (0x2)
-#define HEHT_ADDRESSSPACING (0x3)
-#define HEHT_HEXDUMP (0x4)
-#define HEHT_HEXDUMPSPACING (0x5)
-#define HEHT_ASCIIDUMP (0x6)
-#define HEHT_RIGHTMARGIN (0x7)
+#define HEHT_LEFTMARGIN (0x1)
+#define HEHT_ADDRESS (0x2)
+#define HEHT_ADDRESSSPACING (0x3)
+#define HEHT_HEXDUMP (0x4)
+#define HEHT_HEXDUMPSPACING (0x5)
+#define HEHT_ASCIIDUMP (0x6)
+#define HEHT_RIGHTMARGIN (0x7)
INT_PTR CALLBACK HexEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
WINAPI
RegisterHexEditorClass(HINSTANCE hInstance)
{
- WNDCLASSEX WndClass;
+ WNDCLASSEXW WndClass;
- ClipboardFormatID = RegisterClipboardFormat(ClipboardFormatName);
+ ClipboardFormatID = RegisterClipboardFormatW(ClipboardFormatName);
- ZeroMemory(&WndClass, sizeof(WNDCLASSEX));
- WndClass.cbSize = sizeof(WNDCLASSEX);
+ ZeroMemory(&WndClass, sizeof(WNDCLASSEXW));
+ WndClass.cbSize = sizeof(WNDCLASSEXW);
WndClass.style = CS_DBLCLKS;
WndClass.lpfnWndProc = (WNDPROC)HexEditWndProc;
WndClass.cbWndExtra = sizeof(PHEXEDIT_DATA);
WndClass.hInstance = hInstance;
- WndClass.hCursor = LoadCursor(0, IDC_IBEAM);
+ WndClass.hCursor = LoadCursorW(NULL, IDC_IBEAM);
WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
WndClass.lpszClassName = HEX_EDIT_CLASS_NAME;
WINAPI
UnregisterHexEditorClass(HINSTANCE hInstance)
{
- return UnregisterClass(HEX_EDIT_CLASS_NAME, hInstance);
+ return UnregisterClassW(HEX_EDIT_CLASS_NAME, hInstance);
}
/*** Helper functions *********************************************************/
INT i, isave, i0, i1, x;
PBYTE buf, current, end, line;
size_t bufsize;
- TCHAR hex[3], addr[17];
+ WCHAR hex[3], addr[17];
RECT rct, rct2;
FillRect(hDC, rc, (HBRUSH)(COLOR_WINDOW + 1));
if(ScrollPos + First == 0)
{
/* draw address */
- wsprintf(addr, TEXT("%04X"), 0);
- TextOut(hDC, hed->LeftMargin, First * hed->LineHeight, addr, 4);
+ wsprintf(addr, L"%04X", 0);
+ TextOutW(hDC, hed->LeftMargin, First * hed->LineHeight, addr, 4);
}
}
dx = hed->LeftMargin;
/* draw address */
- wsprintf(addr, TEXT("%04lX"), linestart);
- TextOut(hDC, dx, dy, addr, 4);
+ wsprintf(addr, L"%04lX", linestart);
+ TextOutW(hDC, dx, dy, addr, 4);
dx += ((4 + hed->AddressSpacing) * hed->CharWidth);
dh = (3 * hed->CharWidth);
rct.left += dh;
rct.right += dh;
- wsprintf(hex, TEXT("%02X"), *(current++));
+ wsprintf(hex, L"%02X", *(current++));
if (i0 <= i && i < i1)
{
rct2.left = dx;
InflateRect(&rct2, hed->CharWidth / 2, 0);
FillRect(hDC, &rct2, (HBRUSH)(COLOR_HIGHLIGHT + 1));
SetTextColor(hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
- ExtTextOut(hDC, dx, dy, 0, &rct, hex, 2, NULL);
+ ExtTextOutW(hDC, dx, dy, 0, &rct, hex, 2, NULL);
SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT));
}
else
- ExtTextOut(hDC, dx, dy, ETO_OPAQUE, &rct, hex, 2, NULL);
+ ExtTextOutW(hDC, dx, dy, ETO_OPAQUE, &rct, hex, 2, NULL);
dx += dh;
i++;
}
i = isave;
for(x = 0; x < hed->ColumnsPerLine && current < end; x++)
{
- wsprintf(hex, _T("%C"), *(current++));
- hex[0] = ((hex[0] & _T('\x007f')) >= _T(' ') ? hex[0] : _T('.'));
+ wsprintf(hex, L"%C", *(current++));
+ hex[0] = ((hex[0] & L'\x007f') >= L' ' ? hex[0] : L'.');
if (i0 <= i && i < i1)
{
rct2.left = dx;
rct2.bottom = dy + hed->LineHeight;
FillRect(hDC, &rct2, (HBRUSH)(COLOR_HIGHLIGHT + 1));
SetTextColor(hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
- TextOut(hDC, dx, dy, hex, 1);
+ TextOutW(hDC, dx, dy, hex, 1);
SetTextColor(hDC, GetSysColor(COLOR_WINDOWTEXT));
}
else
- TextOut(hDC, dx, dy, hex, 1);
+ TextOutW(hDC, dx, dy, hex, 1);
dx += hed->CharWidth;
i++;
}
{
case 'X':
if (GetAsyncKeyState(VK_SHIFT) >= 0 &&
- GetAsyncKeyState(VK_CONTROL) < 0 && hed->SelStart != hed->SelEnd)
+ GetAsyncKeyState(VK_CONTROL) < 0 && hed->SelStart != hed->SelEnd)
HEXEDIT_Cut(hed);
else
return TRUE;
case 'C':
if (GetAsyncKeyState(VK_SHIFT) >= 0 &&
- GetAsyncKeyState(VK_CONTROL) < 0 && hed->SelStart != hed->SelEnd)
+ GetAsyncKeyState(VK_CONTROL) < 0 && hed->SelStart != hed->SelEnd)
HEXEDIT_Copy(hed);
else
return TRUE;
case VK_DELETE:
if (GetAsyncKeyState(VK_SHIFT) < 0 && GetAsyncKeyState(VK_CONTROL) >= 0 &&
- hed->SelStart != hed->SelEnd)
+ hed->SelStart != hed->SelEnd)
HEXEDIT_Copy(hed);
if (i0 != i1)
{
}
static BOOL
-HEXEDIT_WM_CHAR(PHEXEDIT_DATA hed, WCHAR ch)
+HEXEDIT_WM_CHAR(PHEXEDIT_DATA hed, WCHAR wch)
{
size_t bufsize;
+ CHAR ch = (CHAR)wch; // keep the lowest octet.
PBYTE buf;
INT i0, i1;
SetForegroundWindow(hed->hWndSelf);
TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, x, y, 0, hed->hWndSelf, NULL);
- PostMessage(hed->hWndSelf, WM_NULL, 0, 0);
+ PostMessageW(hed->hWndSelf, WM_NULL, 0, 0);
}
INT_PTR CALLBACK
break;
}
- return DefWindowProc(hWnd, uMsg, wParam, lParam);
+ return DefWindowProcW(hWnd, uMsg, wParam, lParam);
}