Results 1 to 6 of 6

Thread: Windows 2000 and VC++...

  1. #1

    Thread Starter
    Frenzied Member CyberCarsten's Avatar
    Join Date
    Sep 1999
    Location
    Aalborg Ø, Denmark
    Posts
    1,544

    Windows 2000 and VC++...

    Hi guys!

    I have a windows project that just shows a window. I'm trying to compile it under win2k, but it doesn't work...

    I get an error on the following line:

    Code:
    PAINTSTRUCT ps;     // generic paintstruct
    and sometime:

    Code:
    HDC hdc;
    The compiler gives me the following error:

    --------------------Configuration: PROG5_2 - Win32 Debug--------------------
    Compiling...
    PROG5_2.CPP
    c:\documents and settings\administrator\skrivebord\source\gpchap5\prog5_2.cpp(77) : warning C4101: 'ps' : unreferenced local variable
    Linking...
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/PROG5_2.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.

    PROG5_2.exe - 2 error(s), 1 warning(s)


    *************************************

    Anyone know whats wrong...

    The code works fine on win98.....
    razor
    Software Engineer Student, Aalborg University, Denmark
    http://www.cs.auc.dk

    My email at AUC: will get a new email soon
    My website: http://www.razorsoftware.net


    Windows XP Pro/ Gentoo Linux (Laptop)
    Windows XP Pro (Home PC)

  2. #2
    Fanatic Member Wynd's Avatar
    Join Date
    Dec 2000
    Location
    In a bar frequented by colossal death robots
    Posts
    772
    Did you select "Win32 Application" as your project type? If you select console application you get that link error.
    Alcohol & calculus don't mix.
    Never drink & derive.

  3. #3

    Thread Starter
    Frenzied Member CyberCarsten's Avatar
    Join Date
    Sep 1999
    Location
    Aalborg Ø, Denmark
    Posts
    1,544
    Yeah, I did....I got the example working though....now I'm getting errors while compiling DirectX apps....why is that??

    Errors:

    --------------------Configuration: Win32 - Win32 Debug--------------------
    Compiling...
    source.cpp
    C:\Programmer\Microsoft Visual Studio\MyProjects\Win32\source.cpp(127) : warning C4101: 'ps' : unreferenced local variable
    C:\Programmer\Microsoft Visual Studio\MyProjects\Win32\source.cpp(126) : warning C4101: 'hdc' : unreferenced local variable
    Linking...
    source.obj : error LNK2001: unresolved external symbol _DirectDrawCreate@12
    Debug/Win32.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.

    Win32.exe - 2 error(s), 2 warning(s)

    Code:
    Code:
    // PROG9_1.CPP - Creates a DirectDraw object, changes display
    // and creates a primary surface, notice the change in 
    // the window creation flags this time
    
    // INCLUDES ///////////////////////////////////////////////
    #define WIN32_LEAN_AND_MEAN  
    
    #include <windows.h>   // include important windows stuff
    #include <windowsx.h> 
    #include <mmsystem.h>
    #include <iostream.h> // include important C/C++ stuff
    #include <conio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <memory.h>
    #include <string.h>
    #include <stdarg.h>
    #include <stdio.h>
    #include <math.h>
    #include <io.h>
    #include <fcntl.h>
    
    #include <ddraw.h>  // directX includes
    
    // DEFINES ////////////////////////////////////////////////
    
    // defines for windows 
    #define WINDOW_CLASS_NAME "WINXCLASS"  // class name
    
    #define WINDOW_WIDTH  640              // size of window
    #define WINDOW_HEIGHT 480
    #define SCREEN_WIDTH  640              // size of screen
    #define SCREEN_HEIGHT 480
    #define SCREEN_BPP    8                // bits per pixel
    
    // MACROS /////////////////////////////////////////////////
    
    // these read the keyboard asynchronously
    #define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
    #define KEY_UP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
    
    // TYPES //////////////////////////////////////////////////
    
    typedef unsigned short USHORT;
    typedef unsigned short WORD;
    typedef unsigned char  UCHAR;
    typedef unsigned char  BYTE;
    
    // PROTOTYPES /////////////////////////////////////////////
    
    int Game_Init(void *parms=NULL);
    int Game_Shutdown(void *parms=NULL);
    int Game_Main(void *parms=NULL);
    
    // GLOBALS ////////////////////////////////////////////////
    
    HWND main_window_handle = NULL; // save the window handle
    HINSTANCE main_instance = NULL; // save the instance
    char buffer[80];                // used to print text
    
    LPDIRECTDRAW         lpdd         = NULL;  // dd object
    LPDIRECTDRAWSURFACE  lpddsprimary = NULL;  // dd primary surface
    LPDIRECTDRAWSURFACE  lpddsback    = NULL;  // dd back surface
    LPDIRECTDRAWPALETTE  lpddpal      = NULL;  // a pointer to the created dd palette
    DDSURFACEDESC        ddsd;                 // a direct draw surface description struct
    DDSCAPS              ddscaps;              // a direct draw surface capabilities struct
    HRESULT              ddrval;               // result back from dd calls
    
    // FUNCTIONS //////////////////////////////////////////////
    
    LRESULT CALLBACK WindowProc(HWND hwnd, 
    						    UINT msg, 
                                WPARAM wparam, 
                                LPARAM lparam)
    {
    // this is the main message handler of the system
    PAINTSTRUCT	ps;		   // used in WM_PAINT
    HDC			hdc;	   // handle to a device context
    
    // what is the message 
    switch(msg)
    	{	
    	case WM_CREATE: 
            {
    		// do initialization stuff here
    		return(0);
    		} break;
    
        case WM_PAINT:
             {
             // start painting
             hdc = BeginPaint(hwnd,&ps);
    
             // end painting
             EndPaint(hwnd,&ps);
             return(0);
            } break;
    
    	case WM_DESTROY: 
    		{
    		// kill the application			
    		PostQuitMessage(0);
    		return(0);
    		} break;
    
    	default:break;
    
        } // end switch
    
    // process any messages that we didn't take care of 
    return (DefWindowProc(hwnd, msg, wparam, lparam));
    
    } // end WinProc
    
    // WINMAIN ////////////////////////////////////////////////
    
    int WINAPI WinMain(	HINSTANCE hinstance,
    					HINSTANCE hprevinstance,
    					LPSTR lpcmdline,
    					int ncmdshow)
    {
    
    WNDCLASS winclass;	// this will hold the class we create
    HWND	 hwnd;		// generic window handle
    MSG		 msg;		// generic message
    HDC      hdc;       // generic dc
    PAINTSTRUCT ps;     // generic paintstruct
    
    // first fill in the window class stucture
    winclass.style			= CS_DBLCLKS | CS_OWNDC | 
                              CS_HREDRAW | CS_VREDRAW;
    winclass.lpfnWndProc	= WindowProc;
    winclass.cbClsExtra		= 0;
    winclass.cbWndExtra		= 0;
    winclass.hInstance		= hinstance;
    winclass.hIcon			= LoadIcon(NULL, IDI_APPLICATION);
    winclass.hCursor		= LoadCursor(NULL, IDC_ARROW);
    winclass.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH);
    winclass.lpszMenuName	= NULL; 
    winclass.lpszClassName	= WINDOW_CLASS_NAME;
    
    // register the window class
    if (!RegisterClass(&winclass))
    	return(0);
    
    // create the window, note the use of WS_POPUP
    if (!(hwnd = CreateWindow(WINDOW_CLASS_NAME, // class
    						  "WinX Game Console",	 // title
    						  WS_POPUP | WS_VISIBLE,
    					 	  0,0,	   // x,y
    						  WINDOW_WIDTH,  // width
                              WINDOW_HEIGHT, // height
    						  NULL,	   // handle to parent 
    						  NULL,	   // handle to menu
    						  hinstance,// instance
    						  NULL)))	// creation parms
    return(0);
    
    // save the window handle and instance in a global
    main_window_handle = hwnd;
    main_instance      = hinstance;
    
    // perform all game console specific initialization
    Game_Init();
    
    // enter main event loop
    while(1)
    	{
    	if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    		{ 
    		// test if this is a quit
            if (msg.message == WM_QUIT)
               break;
    	
    		// translate any accelerator keys
    		TranslateMessage(&msg);
    
    		// send the message to the window proc
    		DispatchMessage(&msg);
    		} // end if
        
        // main game processing goes here
        Game_Main();
    
    	} // end while
    
    // shutdown game and release all resources
    Game_Shutdown();
    
    // return to Windows like this
    return(msg.wParam);
    
    } // end WinMain
    
    // WINX GAME PROGRAMMING CONSOLE FUNCTIONS ////////////////
    
    int Game_Init(void *parms)
    {
    // this function is where you do all the initialization 
    // for your game
    
    // create object and test for error
    if (DirectDrawCreate(NULL,&lpdd,NULL)!=DD_OK)
       return(0);
    
    // set cooperation level to windowed mode normal
    if (lpdd->SetCooperativeLevel(main_window_handle,
               DDSCL_ALLOWMODEX | DDSCL_FULLSCREEN | 
               DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)!=DD_OK)
        return(0);
    
    // set the display mode
    if (lpdd->SetDisplayMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BPP)!=DD_OK)
       return(0);
    
    // Create the primary surface
    memset(&ddsd,0,sizeof(ddsd));
    ddsd.dwSize         = sizeof(ddsd);
    ddsd.dwFlags        = DDSD_CAPS;
    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
    
    if (lpdd->CreateSurface(&ddsd,&lpddsprimary,NULL)!=DD_OK)
       return(0);
    
    // return success
    return(1);
    } // end Game_Init
    
    ///////////////////////////////////////////////////////////
    
    int Game_Shutdown(void *parms)
    {
    // this function is where you shutdown your game and
    // release all resources that you allocated
    
    // first release the primary surface
    if (lpddsprimary!=NULL)
       lpddsprimary->Release();
           
    // release the directdraw object
    if (lpdd!=NULL)
       lpdd->Release();
    
    // return success
    return(1);
    } // end Game_Shutdown
    
    ///////////////////////////////////////////////////////////
    
    int Game_Main(void *parms)
    {
    // this is the workhorse of your game it will be called
    // continuously in real-time this is like main() in C
    // all the calls for you game go here!
    
    // check of user is trying to exit
    if (KEY_DOWN(VK_ESCAPE) || KEY_DOWN(VK_SPACE))
        PostMessage(main_window_handle, WM_DESTROY,0,0);
    
    // return success
    return(1);
    } // end Game_Main
    
    ///////////////////////////////////////////////////////////
    razor
    Software Engineer Student, Aalborg University, Denmark
    http://www.cs.auc.dk

    My email at AUC: will get a new email soon
    My website: http://www.razorsoftware.net


    Windows XP Pro/ Gentoo Linux (Laptop)
    Windows XP Pro (Home PC)

  4. #4
    Zaei
    Guest
    Did you include the ddraw library in the project settings?

    Z.

  5. #5

    Thread Starter
    Frenzied Member CyberCarsten's Avatar
    Join Date
    Sep 1999
    Location
    Aalborg Ø, Denmark
    Posts
    1,544
    Yes, but it's not DirectX that's the problem (I think).
    It gives me the errors on the following lines:

    HDC hdc; // generic dc
    PAINTSTRUCT ps; // generic paintstruct

    Errors:

    --------------------Configuration: Win32 - Win32 Debug--------------------
    Compiling...
    source.cpp
    C:\Programmer\Microsoft Visual Studio\MyProjects\Win32\source.cpp(127) : warning C4101: 'ps' : unreferenced local variable
    C:\Programmer\Microsoft Visual Studio\MyProjects\Win32\source.cpp(126) : warning C4101: 'hdc' : unreferenced local variable
    Linking...
    source.obj : error LNK2001: unresolved external symbol _DirectDrawCreate@12
    Debug/Win32.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.

    Win32.exe - 2 error(s), 2 warning(s)
    razor
    Software Engineer Student, Aalborg University, Denmark
    http://www.cs.auc.dk

    My email at AUC: will get a new email soon
    My website: http://www.razorsoftware.net


    Windows XP Pro/ Gentoo Linux (Laptop)
    Windows XP Pro (Home PC)

  6. #6
    Frenzied Member Technocrat's Avatar
    Join Date
    Jan 2000
    Location
    I live in the 1s and 0s of everyones data streams
    Posts
    1,024
    You did not include the direct draw libs that's why its freaking out.

    C:\Programmer\Microsoft Visual Studio\MyProjects\Win32\source.cpp(127) : warning C4101: 'ps' : unreferenced local variable
    ----You Declared This VAR but are not using it (Not An Error)

    C:\Programmer\Microsoft Visual Studio\MyProjects\Win32\source.cpp(126) : warning C4101: 'hdc' : unreferenced local variable
    ----You Declared This VAR but are not using it (Not An Error)

    Linking...
    source.obj : error LNK2001: unresolved external symbol _DirectDrawCreate@12
    ---You Do Not Have The Direct Draw Libs Linked (An Error)


    PS. You might want to add the Direct X header and libs as well because there are alot of useful stuff in there
    MSVS 6, .NET & .NET 2003 Pro
    I HATE MSDN with .NET & .NET 2003!!!

    Check out my sites:
    http://www.filthyhands.com
    http://www.techno-coding.com


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width