Perykles Napisano Grudzień 11, 2009 Zgłoś Share Napisano Grudzień 11, 2009 Witam, Po pierwsze chciałem zaznaczyć, że piszę w Visual C++ Studio 2008, posiadającym Platform SDK. Chciałem napisać prosty program pokazujący jakiś komunikat. Wklepałem program z kursu (na wszystkich program jest taki sam): #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "dfsjdfjdsifj!", "Komunikat", NULL); // tu zamiast null probowalem dac MB_OK, ale rezultat byl taki sam return 0; } Program się nie kompiluje, pokazują się takie błędy: 1>.\main.cpp(6) : error C2664: 'MessageBox' : cannot convert parameter 2 from 'const char [14]' to 'LPCTSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Co tu jest źle? Czy to wina programu, czy kompilatora? Co trzeba poprawić? Link do komentarza Udostępnij na innych stronach More sharing options...
KaYou Napisano Grudzień 11, 2009 Zgłoś Share Napisano Grudzień 11, 2009 zrob rzutowanie na (LPCTSTR) MessageBox(NULL, (LPCTSTR) "dfsjdfjdsifj!", "Komunikat", NULL); "(2b || !(2b)) == question" W. Shakespeare http://jakubniwa.pl - świat sztucznej inteligencji Link do komentarza Udostępnij na innych stronach More sharing options...
Perykles Napisano Grudzień 11, 2009 Autor Zgłoś Share Napisano Grudzień 11, 2009 #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, (LPCTSTR)"dfsjdfjdsifj!", "Komunikat", NULL); return 0; } Po tej zmianie też pokazuje się błąd: 1>.\main.cpp(6) : error C2664: 'MessageBox' : cannot convert parameter 3 from 'const char [10]' to 'LPCTSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Co jeszcze trzeba zrobić? Link do komentarza Udostępnij na innych stronach More sharing options...
xevil21 Napisano Grudzień 11, 2009 Zgłoś Share Napisano Grudzień 11, 2009 a może to: MessageBox(NULL, (LPCTSTR)"dfsjdfjdsifj!", (LPCTSTR)"Komunikat", NULL); Link do komentarza Udostępnij na innych stronach More sharing options...
Perykles Napisano Grudzień 11, 2009 Autor Zgłoś Share Napisano Grudzień 11, 2009 Dzięki. Teoretycznie komunikat wyskakuje, tylko że zamiast napisów pokazują się kwadraty jakieś. Jak mozna to zmienić? Link do komentarza Udostępnij na innych stronach More sharing options...
xevil21 Napisano Grudzień 11, 2009 Zgłoś Share Napisano Grudzień 11, 2009 a może tak? MessageBox(NULL, 'Napis', 'Komunikat', NULL); Link do komentarza Udostępnij na innych stronach More sharing options...
Perykles Napisano Grudzień 11, 2009 Autor Zgłoś Share Napisano Grudzień 11, 2009 Pokazuje sie : 1>.\main.cpp(6) : error C2015: too many characters in constant 1>.\main.cpp(6) : error C2015: too many characters in constant Jak to zrobic, zeby wreszcie zaczęło działać jak trzeba? Link do komentarza Udostępnij na innych stronach More sharing options...
Perykles Napisano Grudzień 11, 2009 Autor Zgłoś Share Napisano Grudzień 11, 2009 Jakieś pomysły? Link do komentarza Udostępnij na innych stronach More sharing options...
volq Napisano Grudzień 11, 2009 Zgłoś Share Napisano Grudzień 11, 2009 Chyba nie . Link do komentarza Udostępnij na innych stronach More sharing options...
xevil21 Napisano Grudzień 11, 2009 Zgłoś Share Napisano Grudzień 11, 2009 przejdź na coś profesionalnego, np. Dev-C++ Pozdrawiam! Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Grudzień 13, 2009 Zgłoś Share Napisano Grudzień 13, 2009 Przecież napisy w c++ są w "" nie '' , w '' są znaki. Wg mnie: MessageBox(NULL, L"dfsjdfjdsifj!", L"Komunikat", NULL); Bo on oczekuje tablice unicode. Rzutowanie na (LPCTSTR) nie ma sensu, bo rzutuje sie tablicę gdzie jeden znak to 1 bajt na taką gdzie jeden znak to dwa bajty. I co najważniejsze ja moją propozycję skompilowałem i uruchomiłem Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.