Reklama
Pokazuje wyniki od 1 do 8 z 8

Temat: [C++] WinAPI - problem ze startem

  1. #1

    Data rejestracji
    2009
    Posty
    313
    Siła reputacji
    15

    Domyślny [C++] WinAPI - problem ze startem

    Siema, jako iż udało mi się przebrnąć przez obiektówke "jako tako" myślałem by w wolnym czasie przed kolejnym semestrem samemu się wziąć za programowanie... korzystając z
    http://xion.org.pl/productions/texts.../megatutorial/
    zainteresowałem się programami pisanymi z pomoca winapi, niestety juz 1wszy program ktory skopiowalem z tego poradnika nie dziala ;D

    w VC wzialem project, win32 app, windows form (empty project), do maina wkleilem
    Kod:
    #define WIN32_LEAN_AND_MEAN
    #include <windows.h>
     
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                       LPSTR lpszCmdLine,   int nCmdShow)
    {
       MessageBox (NULL, "test1", "test2", NULL);
       return 0;
    }
    wtf zrobiłem zle?

    error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [5]' to 'LPCWSTR'
    1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    wskazuje na linie z MessageBox(Null...)

  2. #2
    Avatar zakius
    Data rejestracji
    2008
    Położenie
    The Internets
    Wiek
    33
    Posty
    11,075
    Siła reputacji
    24

    Domyślny

    WF!=WinAPI może to jest twój problem?

    Poza tym stare kody mogą po prostu już nie działać na nowych vs
    Problem z komputerem? Instrukcja diagnostyczna
    Cytuj Vegeta napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Baby maja wymagania jak windows vista, takze nigdy nie wiesz.
    Cytuj Dzzej napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Moje posty to esencja głupoty.
    "Don't worry, I'm just a pervert"

  3. Reklama
  4. #3
    Avatar kuba_k31
    Data rejestracji
    2006
    Wiek
    29
    Posty
    2,322
    Siła reputacji
    19

    Domyślny

    Powiem tylko tyle, ze u mnie w CodeBlocks dziala ; p
    Cytuj Minsafo napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    domknąłem

  5. #4
    Avatar Black Keeper
    Data rejestracji
    2005
    Posty
    483
    Siła reputacji
    19

    Domyślny

    Kiedyś bawiłem się w winapi przez chwilę i pamiętam, że tam było jakoś "inaczej".
    Tam gdzie jest "tekst" spróbuj takie coś: _T( "tekst" )

    Przykład:

    MessageBox (NULL, _T( "test" ), _T( "test2" ), NULL);


    btw. jak chciałbyś sobie programować okienkowo to polecam: wxWidgets
    Ostatnio zmieniony przez Black Keeper : 31-01-2014, 22:06

  6. #5
    Avatar Kusterek
    Data rejestracji
    2013
    Położenie
    Warszawa
    Wiek
    31
    Posty
    1,710
    Siła reputacji
    13

    Domyślny

    w visual studio funkcja main przyjmuje jakies chore argumenty, dlatego to działa w CB ale juz w VS nie

  7. #6
    konto usunięte

    Domyślny

    Nie wiem jak przez tą "obiektówkę" przeszedleś, anyway..

    "error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [5]' to 'LPCWSTR'"

    LPCWSTR to stały wskaźnik na typ wchar_t, Ty w parametrze przekazujesz literał, który jest niejawnie zkonwertowany na const char*. Część kompilatorów radzi sobie z takim czymś(Mingw w CB), część nie (VC w VS). Rozwiazanie, to użycie makra _T() lub użycie MessageBoxA.
    Ostatnio zmieniony przez szulak : 04-02-2014, 15:09

  8. #7
    Avatar Gray
    Data rejestracji
    2007
    Położenie
    Gdańsk
    Posty
    2,847
    Siła reputacji
    18

    Domyślny

    Jak sugeruje kompilator, MessageBox(W) jako parametr bierze wchar, a nie zwykłe chary.

    L"napis" = wchar_t*

    Kod:
    MessageBox(NULL, L"test1", L"test2", 0);
    No albo to macro _T, ale nie wiem jak z przenośnością tego.


    Cytuj szulak napisał
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    LPCWSTR to stały wskaźnik na typ wchar_t, Ty w parametrze przekazujesz literał, który jest niejawnie zkonwertowany na const char*. Część kompilatorów radzi sobie z takim czymś(Mingw w CB), część nie (VC w VS). Rozwiazanie, to użycie makra _T() lub użycie MessageBoxA.
    To akruat nie jest kwestia konwersji i tego, czy sobie kompilator radzi. W standardowym projekcie w CB MessageBox (domyślny, bez literki) to MessageBoxA, dlatego zadziała na charach, ale na wcharach już nie. W VS domyślny jest MessageBoxW, dlatego działa na wcharach, a na zwykłych charach nie.

  9. #8
    konto usunięte

    Domyślny

    Cytuj Gray napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    To akruat nie jest kwestia konwersji i tego, czy sobie kompilator radzi. W standardowym projekcie w CB MessageBox (domyślny, bez literki) to MessageBoxA, dlatego zadziała na charach, ale na wcharach już nie. W VS domyślny jest MessageBoxW, dlatego działa na wcharach, a na zwykłych charach nie.
    @Gray
    My bad, zgadzam się. Wychodzi na to, że domyślnym "kodowaniem" w VS jest Unicode, gdzie w CB jest Ansi.

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. [WinAPI] pomoc dla laika
    Przez Damovsky w dziale Programowanie
    Odpowiedzi: 7
    Ostatni post: 27-11-2014, 23:02
  2. Problem ze startem kompa
    Przez Plastus w dziale Sprzęt i oprogramowanie
    Odpowiedzi: 11
    Ostatni post: 30-07-2012, 14:03
  3. C#/WinApi - Wyświetlanie kontrolek na tooltipie
    Przez kay w dziale Sprzęt i oprogramowanie
    Odpowiedzi: 0
    Ostatni post: 10-07-2012, 21:04
  4. [8.xx][c++] winapi bład
    Przez Aka Nons w dziale Strefa developerska
    Odpowiedzi: 3
    Ostatni post: 12-07-2010, 14:42
  5. [7.6][Problem Z Map Edytem] Problem z mapa
    Przez EvilMaster w dziale Mapping
    Odpowiedzi: 1
    Ostatni post: 20-11-2009, 15:16

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •