Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinApi] Problem ze stringiem

Ostatnio zmodyfikowano 2013-11-06 21:20
Autor Wiadomość
Buby
Temat założony przez niniejszego użytkownika
[WinApi] Problem ze stringiem
» 2013-11-06 20:23:25
Witam!
Mam następujący problem.
Napisałem funkcję, konwertującą stringa na liczbę.
Funkcja działa miód malina, jednak, gdy wstawię ją do programu
napisanego w WinApi, to nazwa mojego programu na górnym pasku,
staje się dość dziwna - oprócz standardowego napisu pojawiają się
chińskie znaki.

Z problemem spotykam się też w innych funkcjach, gdzie muszę zadeklarować
string jako argument.

Spotkał się ktoś z podobnym przypadkiem i czy byłby w stanie mi
wytłumaczyć dlaczego tak się dzieje?

Szukałem w Google, jednak nie znalazłem tego, czego szukałem - ani rozwiązania,
ani przyczyny, dlaczego po deklaracji stringa tak się dzieje.
P-95496
den93
» 2013-11-06 20:36:09
Podaj może jakieś przykłady, kawałki kodu. To brzmi jak brak nulla na końcu stringa? Piszesz pod unikod, czy nie?
P-95497
Buby
Temat założony przez niniejszego użytkownika
» 2013-11-06 20:55:18
Co do unikodu, to tak naprawdę nie wiem, jestem laikiem w WinApi.

Problem pojawia się, gdy używam funkcji z deklaracją stringa jako argumentu.
Przykład:

C/C++
/*Zmienne globalne */
std::string liczbaA;
std::string liczbaB;
std::string WYNIK;
int pomoc;
int wynik;


/* Czesc WNDPROC */

case ZROB:
pomoc = WyrazDoLiczby( liczbaA ); // Po wstawienu tego kodu wywala chinskie znaki
wynik += pomoc;
pomoc = WyrazDoLiczby( liczbaB ); // Po wstawienu tego kodu wywala chinskie znaki
wynik += pomoc;
WYNIK = LiczbaDoWyrazu( wynik );
SetWindowText( WYNIK_WYSWIETL, WYNIK.c_str() );
break;

Taki jest mój kod, kodu funkcji nie podaję, bo jest chyba zbędny.

Dodam, że funkcja WyrazDoLiczby jest typu
double
, a LiczbaDoWyrazu
string
.
Obie zwracają wartości za pomocą return.

W razie potrzeby wstawię.

@Edit:
Pekfos, sprawdziłem, nadal mam chińskie znaki w nazwie.
P-95506
pekfos
» 2013-11-06 21:09:48
Spróbuj z SetWindowTextA(). Co otrzymujesz, gdy wypisujesz WYNIK do np std::cout?
P-95507
Buby
Temat założony przez niniejszego użytkownika
» 2013-11-06 21:20:49
Dobra, dla potomnych, po 3 godzinach męki i lampienia się
w ten sam kod znalazłem rozwiązanie!

Chodziło o to, że gdy używałem funkcji z biblioteki w WNDPROC, nie wiadomo dlaczego robiły się chińskie znaki.
Wpadłem na to, że spakuję komendy z użyciem funkcji, do funkcji w mojej aplikacji, a po wciśnięciu przycisku, wywoła ją, ta natomiast wywoła wynik.

Zamykam jak coś.


Pekfos, na cout działa wszystko jak należy.
P-95509
« 1 »
  Strona 1 z 1