المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : Problem using WinMain function with C++



C++ Programming
05-05-2009, 01:32 AM
Hey, i hope you can help me with my question:
I started learning working with DirectX, in the start i saw a codeexample for how open an empty window (without chosing winn app at the start of Visual Studio)
but for some reson, the code makes me problems, hope you can say to me why

code
#include

HINSTANCE hInst; // global handle to hold the application instance
HWND wndHandle; // global variable to hold the window handle

// forward declarations
bool initWindow( HINSTANCE hInstance );
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
{
// Initialize the window
if ( !initWindow( hInstance ) )
{
return false;
}

// main message loop:
MSG msg;

ZeroMemory( &msg, sizeof( msg ) );

while( msg.message!=WM_QUIT )
{
// Check the message queue
while (GetMessage(&msg, wndHandle, 0, 0) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}

return (int) msg.wParam;
}


bool initWindow( HINSTANCE hInstance )
{
WNDCLASSEX wcex;
// Fill in the WNDCLASSEX structure. This describes how the window
// will look to the system

wcex.cbSize = sizeof(WNDCLASSEX); // the size of the structure
wcex.style = CS_HREDRAW | CS_VREDRAW; // the class style
wcex.lpfnWndProc = (WNDPROC)WndProc; // the window procedure callback
wcex.cbClsExtra = 0; // extra bytes to allocate for this class
wcex.cbWndExtra = 0; // extra bytes to allocate for this instance
wcex.hInstance = hInstance; // handle to the application instance
wcex.hIcon = 0; // icon to associate with the application
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);// the default cursor
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); // the background color
wcex.lpszMenuName = NULL; // the resource name for the menu
wcex.lpszClassName = “DirectXExample”; // the class name being created
wcex.hIconSm = 0; // the handle to the small icon
RegisterClassEx( &wcex );
// Create the window
wndHandle = CreateWindow(
"DirectXExample",
"DirectXExample",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, // the starting x coordinate
CW_USEDEFAULT, // the starting y coordinate
640, // the pixel width of the window
480, // the pixel height of the window
NULL, // the parent window; NULL for desktop
NULL, // the menu for the application; NULL for
hInstance, // the handle to the application instance
NULL); // no values passed to the window
// Make sure that the window handle that is created is valid
if (!wndHandle)
{
return false;
}

// Display the window on the screen
ShowWindow(wndHandle, SW_SHOW);

UpdateWindow(wndHandle);

return true;
}


LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
// Check any available messages from the queue
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
}

// Always return the message to the default window
// procedure for further processing
return DefWindowProc(hWnd, message, wParam, lParam);
}


Errors:
Error 1 error C2731: 'WinMain' : function cannot be overloaded c:\users\???\documents\visual studio 2008\projects\learningdirectx\learningdirectx\winmain.cpp 11 LearningDirectX
Error 2 error C2065: '“DirectXExample”' : undeclared identifier c:\users\???\documents\visual studio 2008\projects\learningdirectx\learningdirectx\winmain.cpp 56 LearningDirectX
Error 3 error C2664: 'CreateWindowExW' : cannot convert parameter 2 from 'const char [15]' to 'LPCWSTR' c:\users\???\documents\visual studio 2008\projects\learningdirectx\learningdirectx\winmain.cpp 71 LearningDirectX


Sorry to ask but please try to help me (I couldnt solve it for hours before i came here)

Thanks and good day, Yahav.

Gindi Bar Yahav - Web & Software defeloper.