Skocz do zawartości

[C++] Najprostszy program w WinAPI


Perykles

Polecane posty

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

#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

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 :P

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...