Для этого конкретного случая решение довольно просто:
wchar_t szBuff[64];
swprintf(szBuff, L"%p", m_hWnd);
MessageBox(NULL, szBuff, L"Test print handler", MB_OK);
То есть везде используйте строки Unicode. В общем, при программировании в Windows, использование wchar_t
и UTF-16, вероятно, самое простое. Конечно, это зависит от того, насколько много вам нужно взаимодействовать с другими системами.
В общем случае, если у вас есть строка ASCII (или char *
), используйте WideCharToMultiByte для общего случая или mbstowcs
, как @Matthew указывает на более простые случаи ( mbstowcs
работает, если строка находится в текущей локали C).