VS 2010 zmiana z wide char na ANSI

0

Witam
Próbuje pisać w WinAPI w Visual Studio 2010 i mam następujący kłopot: kiedy wywołuje na przykład MessageBox nie działa na ANSI char jest jakby ustawione domyślnie na wide char - tak przypuszczam. Więc by to ominąć musze wywoływać MessageBoxA. Podobnie jest z wszystkim funkcjami i strukturami. Musze castować LPWSTR na LPCSTR itd. Jest to uciążliwe i nie zawsze potrafie sobie poradzić z obejściem tego.

Szukałem po sieci i znalazłem, że można ustawić flage kompilatora /Za(Disable Language Extension), ale to nie pomaga. Wie ktoś jak rozwiązać ten problem.

2

Korzystanie z WinAPI w wersji ANSI (zwłaszcza przy pisaniu kodu związanego z UI) to czasy Windowsa 98. Dlaczego chcesz to robić? WinAPI jest obecnie natywnie wide-char'owe.

0

Nie konwertuj. Używaj wchar_t zamiast char, a przy literałach znakowych dodaj L przed cudzysłowem:

MessageBox(hwnd, L"Ala ma kota バスガス爆発", L"Test", MB_OK);

w przypadku C-stringów (wchar_t*) zmieniają się nazwy funkcji, i jest np. wcscpy zamiast strcpy.
w przypadku C++-stringów używaj po prostu wstring zamiast string i wszystko dalej normalnie.

0

@Rev: dlatego, że chce zrozumieć jak działają aplikacje okienkowe, a nie tylko przenosić przyciski na forme.
Dziękuje za pomoc wam.

0
jerubbaal napisał(a):

Witam
Próbuje pisać w WinAPI w Visual Studio 2010 i mam następujący kłopot: kiedy wywołuje na przykład MessageBox nie działa na ANSI char jest jakby ustawione domyślnie na wide char - tak przypuszczam. Więc by to ominąć musze wywoływać MessageBoxA. Podobnie jest z wszystkim funkcjami i strukturami. Musze castować LPWSTR na LPCSTR itd. Jest to uciążliwe i nie zawsze potrafie sobie poradzić z obejściem tego.

Szukałem po sieci i znalazłem, że można ustawić flage kompilatora /Za(Disable Language Extension), ale to nie pomaga. Wie ktoś jak rozwiązać ten problem.

No to ustawiasz w opcjach w General, i tu character set na 'use multi-byte' i to tyle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1