[C++] Aplikacja okienkowa

Witam wszystkich.

Zaczołem naukę C++ i utknołem na jednym problemie. Otóż przy linkowaniu aplikacja wywala błąd:

1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup

1>C:\Documents and Settings\SysOp\Moje dokumenty\Visual Studio 2008\Projects\Okienka\Debug\Okienka.exe : fatal error LNK1120: 1 unresolved externals

Źródło:

#include 

#define WIN32_LEAN_AND_MEAN

void main()

{

if (UINT uDecyzja = MessageBox(NULL, "Glosowanko?",

                               "Głosowanie", MB_YESNO | MB_ICONQUESTION))

{

   switch (uDecyzja)

   {

         case IDYES:

               // odpowiedź pozytywna

               break;

         case IDNO:

               // odpowiedź negatywna

               break;

   }

}

}

Proszę o krytykę kodu co zrobiłem źle. To tylko przykład i chciałem zobaczyć, jak działa.Z góry dzięki za odpowiedź.

Niewłaściwy projekt - zamiast Windows Application powinieneś wybrać Console Application by używać main. Ew. zmień punkt wejścia z main na WinMain(który to jest bardziej domyślny dla aplikacji okienkowych w Windows).

Chyba nie zabardzo zrozumiałem

Błędy:

c:\documents and settings\sysop\moje dokumenty\visual studio 2008\projects\okienka\okienka\main.cpp(9) : warning C4007: 'WinMain' : must be '__stdcall'

1>c:\documents and settings\sysop\moje dokumenty\visual studio 2008\projects\okienka\okienka\main.cpp(9) : error C2731: 'WinMain' : function cannot be overloaded

1> c:\documents and settings\sysop\moje dokumenty\visual studio 2008\projects\okienka\okienka\main.cpp(8) : see declaration of 'WinMain'

Źródło:

#include 

#define WIN32_LEAN_AND_MEAN

int WINAPI WinMain(HINSTANCE hInstance,

                   HINSTANCE hPrevInstance,

                   LPSTR lpszCmdLine,

                   int nCmdShow);

#define WINAPI __stdcall

void WinMain()

{

if (UINT uDecyzja = MessageBox(NULL, "Glosowanko?",

                               "Głosowanie", MB_YESNO | MB_ICONQUESTION))

{

   switch (uDecyzja)

   {

         case IDYES:

               // odpowiedź pozytywna

               break;

         case IDNO:

               // odpowiedź negatywna

               break;

   }

}

}

Mógłbym prosić o gotowy kod(taki ktory mozna skompilowac edytujac ten)?

A poszukać to nie łaska? WinMain ma taki proptoryp, a nie void WinMain();, do tego tej funkcji nie wolno przeładowywać. Makro WINAPI jest definiowane przez windows.h, nie trzeba redefiniować. Aby WIN32_LEAN_AND_MEAN “działało” musi być zdefiniowane przed dołączeniem windows.h

#define WIN32_LEAN_AND_MEAN

#include 

int WINAPI WinMain(HINSTANCE hInstance,

                   HINSTANCE hPrevInstance,

                   LPSTR lpszCmdLine,

                   int nCmdShow)

{

UINT uDecyzja = MessageBox(NULL, "Glosowanko?",

                               "Głosowanie", MB_YESNO | MB_ICONQUESTION);

   switch (uDecyzja)

   {

         case IDYES:

               // odpowiedź pozytywna

               break;

         case IDNO:

               // odpowiedź negatywna

               break;

   }

}

C++ pozwala na definiowanie zmiennych w obrębie warunku? VC++ 2010 przepuszcza, ale co o tym standard mówi?

Dzięki za pomoc :-). To narazie moje początki, takto tylko programowałem w konsoli, więc troche wyrozumiałości.

Wyrozumiałość wyrozumiałością, ale błędy trzeba czytać i trzeba nauczyć się szukać do nich odpowiedzi SAMODZIELNIE :wink: