Thread: I got a problem with main()

  1. #1
    Registered User
    Join Date
    Mar 2003
    Posts
    7

    I got a problem with main()

    the case is in a standard win32 hellowin program, when I
    replace winmain with main, a problem occured i cannot
    understand, it started with a console window, i put some
    stdout informations to the window, it shown the program
    can create a window, but it never paint anything, that
    means, it didnt start a real window but just a console
    window wothout any paint message(it do recevie the create
    message), i compiled and linked it without any errors. i'm
    new to win programming and just interest in why this
    happen?

    the code is as follows:
    //======================================

    #include <windows.h>
    #include <stdio.h>

    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

    int main(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    PSTR szCmdLine, int iCmdShow)
    {
    static TCHAR szAppName[] = TEXT ("HelloWin") ;
    HWND hwnd ;
    MSG msg ;
    WNDCLASS wndclass ;

    puts("test");

    wndclass.style = CS_HREDRAW | CS_VREDRAW ;
    wndclass.lpfnWndProc = WndProc ;
    wndclass.cbClsExtra = 0 ;
    wndclass.cbWndExtra = 0 ;
    wndclass.hInstance = hInstance ;
    wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
    wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
    wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
    wndclass.lpszMenuName = NULL ;
    wndclass.lpszClassName = szAppName ;

    if (!RegisterClass (&wndclass))
    {
    MessageBox (NULL, TEXT ("This program requires Windows NT!"),
    szAppName, MB_ICONERROR) ;
    return 0 ;
    }
    hwnd = CreateWindow (szAppName, // window class name
    TEXT ("The Hello Program"), // window caption
    WS_OVERLAPPEDWINDOW, // window style
    CW_USEDEFAULT, // initial x position
    CW_USEDEFAULT, // initial y position
    CW_USEDEFAULT, // initial x size
    CW_USEDEFAULT, // initial y size
    NULL, // parent window handle
    NULL, // window menu handle
    hInstance, // program instance handle
    NULL) ; // creation parameters

    ShowWindow (hwnd, iCmdShow) ;
    UpdateWindow (hwnd) ;
    puts("test2");
    while (GetMessage (&msg, NULL, 0, 0))
    {
    TranslateMessage (&msg) ;
    DispatchMessage (&msg) ;
    }
    return (int)msg.wParam ;
    }

    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    HDC hdc ;
    PAINTSTRUCT ps ;
    RECT rect ;

    switch (message)
    {
    case WM_CREATE:
    puts("creat..");
    return 0 ;

    case WM_PAINT:
    puts("paint..");
    hdc = BeginPaint (hwnd, &ps) ;

    GetClientRect (hwnd, &rect) ;

    DrawText (hdc, TEXT ("Hello, Windows XP!"), -1, &rect,
    DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
    EndPaint (hwnd, &ps) ;
    return 0 ;

    case WM_DESTROY:
    PostQuitMessage (0) ;
    return 0 ;
    }
    return DefWindowProc (hwnd, message, wParam, lParam) ;
    }

  2. #2
    erstwhile
    Join Date
    Jan 2002
    Posts
    2,227
    From msdn for WinMain:
    The WinMain function is called by the system as the initial entry point for a Win32-based application.
    If you want 'windows' (all the GUI stuff) use WinMain, if you want 'console' use main. That's an 'interesting' manifestation of 'main' you have there anyway...

    For future reference, if posting code, please use code tags.
    CProgramming FAQ
    Caution: this person may be a carrier of the misinformation virus.

  3. #3
    It's full of stars adrianxw's Avatar
    Join Date
    Aug 2001
    Posts
    4,829
    You also will need to create your program as a "Win32 Program" not a "Win32 Console App", there will be a switch somewhere in your IDE.

    Things like puts() will not work in a GUI application.
    Wave upon wave of demented avengers march cheerfully out of obscurity unto the dream.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 4
    Last Post: 03-16-2009, 08:44 AM
  2. call to realloc() inside a function: memory problem
    By simone.marras in forum C Programming
    Replies: 15
    Last Post: 11-30-2008, 10:01 AM
  3. Memory leaks problem in C -- Help please
    By Amely in forum C Programming
    Replies: 14
    Last Post: 05-21-2008, 11:16 AM
  4. Multithreading & Problem :: MFC
    By kuphryn in forum Windows Programming
    Replies: 1
    Last Post: 06-06-2002, 12:33 PM
  5. void main
    By Shadow in forum A Brief History of Cprogramming.com
    Replies: 15
    Last Post: 05-29-2002, 07:08 PM