Thread: newbie question windows programming

  1. #1
    Registered User
    Join Date
    Feb 2005
    Posts
    91

    newbie question windows programming

    Hi!

    I am just starting to learn windows programming and picked up my first book "programming Windows" 5th ediion by charles petzold to start from the very basics, but I got stuck at the 2nd program. This is a program from the bookand I tried to install it on VC++ 6. The program compiles fine but does not link and give me some error.

    The program is:

    Code:
    /*-----------------------------------------------------
       SCRNSIZE.C -- Displays screen size in a message box
                     (c) Charles Petzold, 1998
      -----------------------------------------------------*/
    
    #include <windows.h>
    #include <tchar.h>     
    #include <stdio.h>     
    
    int CDECL MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ...)
    {
         TCHAR   szBuffer [1024] ;
         va_list pArgList ;
    
              // The va_start macro (defined in STDARG.H) is usually equivalent to:
              // pArgList = (char *) &szFormat + sizeof (szFormat) ;
    
         va_start (pArgList, szFormat) ;
    
              // The last argument to wvsprintf points to the arguments
    
         _vsntprintf (szBuffer, sizeof (szBuffer) / sizeof (TCHAR), 
                      szFormat, pArgList) ;
    
              // The va_end macro just zeroes out pArgList for no good reason
    
         va_end (pArgList) ;
    
         return MessageBox (NULL, szBuffer, szCaption, 0) ;
    }
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow) 
    {
         int cxScreen, cyScreen ;
    
         cxScreen = GetSystemMetrics (SM_CXSCREEN) ;
         cyScreen = GetSystemMetrics (SM_CYSCREEN) ;
    
         MessageBoxPrintf (TEXT ("ScrnSize"), 
                           TEXT ("The screen is %i pixels wide by %i pixels high."),
    					   cxScreen, cyScreen) ;
         return 0 ;
    }
    The error that I get is :

    Code:
    --------------------Configuration: ScrnSize - Win32 Debug--------------------
    Linking...
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/ScrnSize.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
    
    ScrnSize.exe - 2 error(s), 0 warning(s)
    Since I am still at the 2nd chapter of this book I am little confused on why this is not linking

    Also the I need a dumbed out version of how the variables cxScreen and cyScreen give there values to messagebox function or in otherwords I didn't understand what this line is doing :

    "_vsntprintf (szBuffer, sizeof (szBuffer) / sizeof (TCHAR),
    szFormat, pArgList) ;"


    any help would be great !!!

  2. #2
    Registered User r1ck0r's Avatar
    Join Date
    Apr 2005
    Location
    UK
    Posts
    30
    The reason you are getting those linker errors is because you have created a 'win32 console application' project. you must create a 'win32 application' project. Once you have done that, it will compile fine.

  3. #3
    Work in Progress..... Jaken Veina's Avatar
    Join Date
    Mar 2005
    Location
    Missouri. Go Imos Pizza!
    Posts
    256
    Yep. A Win32 Console project is just about anything in C or C++ other than windows programming. If you did anything in C or C++ before going to windows, and your program ran from a black backgrounded window, that was a Console Application. Since you're working with windows, you don't want that console. If there is a "Project Options" item under your menu somwhere, you'll be able to change the project type there.

  4. #4
    Registered User
    Join Date
    Feb 2005
    Posts
    91
    sorry about the double post !!!

    Thanks for pointing out my mistake. but also I still don't understand what does this line actually do

    "_vsntprintf (szBuffer, sizeof (szBuffer) / sizeof (TCHAR),
    szFormat, pArgList) ;"

  5. #5
    Chief Code Coloniser!
    Join Date
    Apr 2005
    Posts
    121
    First, read up on the _vsntprintf() function, and then do some reading on variable arguments. It will become clear. Also, if you know how printf() works, you might learn a bit by looking under the hood of the printf function

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Virtual keys
    By Arkanos in forum Windows Programming
    Replies: 4
    Last Post: 12-12-2005, 10:00 AM
  2. Question..
    By pode in forum Windows Programming
    Replies: 12
    Last Post: 12-19-2004, 07:05 PM
  3. General question about Windows resources
    By Boomba in forum Windows Programming
    Replies: 2
    Last Post: 07-19-2004, 09:36 PM
  4. newbie question about using windows app in Dev C++
    By Unregistered in forum C++ Programming
    Replies: 2
    Last Post: 06-09-2002, 10:50 PM
  5. Windows question (NOT MS)
    By Music_Man in forum Game Programming
    Replies: 2
    Last Post: 12-31-2001, 02:15 PM