Khaine
#programowanie #cpp

Jak przemycić inta do MessageBoxa z win api? Trzeba go jakimiś wcześniejszymi operacjami przetwarzać na stringa, czy jest jakaś sprytniejsza metoda?

MessageBox(NULL, L"Odpowiedz to" , L"Wynik", MB_OK);
  • Najlepsze
  • Wszystkie komentarze
a.....m
a.....m
@Khaine: prościej użyć 'MessageBoxA'

int mojInt = 33;
std::string s = "moj tekst" + std::to_string(mojInt);
MessageBoxA(NULL, s.c_str(), "GAME ERROR", MB_ICONERROR | MB_OK);
a.....t
a.....t
@Khaine: winapi to jest tragedia
Khaine
Khaine Autor
1
@advokoot: Nie mam wyjścia, muszę zrobić w ten sposób.
k.....r
k.....r
@Khaine: (L"Odzpowiedz to" + std::to_wstring(some_int)).c_str()
k.....r
k.....r
@KrzaQ2: z tego co widzę w przykładach, to oni zazwyczaj piszą do buforów albo używają .c_str() właśnie.
Khaine
Khaine Autor
0
@kuhar: Nie chce mi tego przyjąć. No suitable conversion function. Dodałem już bibliotekę .
k.....r
k.....r
@Khaine: pokaż dokładny błąd
PS. możesz też spróbować dodać cast na const wchar* wokół tego
Khaine
Khaine Autor
0
k.....r
k.....r
@Khaine: nawiasy masz źle
Khaine
Khaine Autor
0
@kuhar: Już różnych kombinacji tych nawiasów próbowałem, bo też mi nie pasowały.
k.....r
k.....r
(const WCHAR*)((L"Odzpowiedz to" + std::to_wstring(wynik)).c_str())
@Khaine:
Khaine
Khaine Autor
0
@kuhar: O rany. Konwersja na stringa, ze stringa na chara jak widzę.
KrzaQ2
@kuhar: jesteś pewien, ƶe MessageBox sobie kopiuje ten string lub blokuje w tym miejscu? Ta inline konwersja wygląda dla mnie na ryzykowną :P
Khaine
Khaine Autor
0
@KrzaQ2: Działa mi ten kod, który podał. Więc wszystko gra IMO. Swoją drogą właśnie miałem bliskie spotkanie z "pomocnym C++". Mianowicie C++ wcale nie protestuje jak pod inta wstawiamy liczbę rzeczywistą i nawet o tym nas nie poinformuje. Z rozpędu zrobiłem ze zmiennej inta i się zastanawiałem czemu do cholery nie działa. Chociaż warninga mógłby wystosować jakiegoś, że pod intem jest liczba niecałkowita.
KrzaQ2
@Khaine: To, ƶe działa, nie oznacza, ƶe jest dobrze ;) Konwersja między double i int jest implicit i nic na to nie poradzisz :(