Sendmessagew с результатами ttm_addtoolw false falseC++

Программы на C++. Форум разработчиков
Anonymous
Sendmessagew с результатами ttm_addtoolw false false

Сообщение Anonymous »

Следующий код будет создавать рабочую подсказку инструментов: < /p>

Код: Выделить всё

void Tooltip::init() {
InitCommonControls();
hwnd = CreateWindowExA(WS_EX_TOPMOST, TOOLTIPS_CLASSA, nullptr, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, 0, 0, 0, 0, Game::windowHWND, nullptr, GetModuleHandleA(nullptr), nullptr); //static inline HWND hwnd; in header
}

TTTOOLINFOA lastTooltip = {};
void Tooltip::showText(const std::wstring &text) {
auto conv = Helpers::utf8EncodeTo1251(text);

if(current == conv) { //static inline std::string current; in header
return;
} else if(text.empty()){
SendMessageA(hwnd, TTM_DELTOOLA, 0, (LPARAM)&lastTooltip);
current.clear();
return;
}

current = conv;

SendMessageA(hwnd, TTM_DELTOOLA, 0, (LPARAM)&lastTooltip);

lastTooltip = {};
lastTooltip.cbSize = sizeof(TTTOOLINFOA);
lastTooltip.uFlags = TTF_SUBCLASS;
lastTooltip.hwnd = Game::windowHWND;
lastTooltip.lpszText = (char*) current.data();

GetClientRect(Game::windowHWND, &lastTooltip.rect);

SendMessageA(hwnd, TTM_ADDTOOLA, 0, (LPARAM)&lastTooltip); //result == 1 (TRUE)
}
Но мне действительно нужно использовать версию Unicode Tooltip (потому что я использую кириллический текст, и если пользователь не установил российскую локацию, текст сломается), но следующий код приведет к тому, что SendMessagew вернуть false-over-while):


Подробнее здесь: https://stackoverflow.com/questions/796 ... ults-false

Вернуться в «C++»