CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 5 of 5

Thread: progress bar

  1. #1
    Join Date
    Jul 2009
    Location
    Houston TX
    Posts
    46

    progress bar

    i need the code for a progress bar. Do you have a free win32 ebook?
    i know one webpage but i cant get it to work.....for some reason it doesnt dispaly on the window...i make it visible and a child window and still nothing.....


    heres the link to that
    http://functionx.com/win32/controls/ProgressBars.htm

  2. #2
    Join Date
    Jun 2008
    Posts
    592

    Re: progress bar

    I cant tell you why your code isn't working if I can't see it, but I suppose I can give you a working example.

    Code:
    #include <windows.h>
    #include <commctrl.h>
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "CodeBlocksWindowsApp";
    int WINAPI WinMain (HINSTANCE hThisInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR lpszArgument,
                         int nCmdShow)
    {
       InitCommonControls();
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default colour as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Code::Blocks Template Windows App",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               544,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
        /* Make the window visible on the screen */
        ShowWindow (hwnd, nCmdShow);
       HWND ProgressBar_hwnd =  CreateWindowEx(0, PROGRESS_CLASS, "", WS_TABSTOP | WS_VISIBLE | WS_CHILD, 0, 0, 100, 20, hwnd, NULL, GetModuleHandle(NULL), NULL);
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
     
    /*  This function is called by the Windows function DispatchMessage()  */
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)                  /* handle the messages */
        {
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
        return 0;
    }
    I used the main template from code::blocks for win32, so it is heavily documented from that. I highlighted the new code. Dont' forget to include the lib comctl32 to your project
    0100 0111 0110 1111 0110 0100 0010 0000 0110 1001 0111 0011 0010 0000 0110 0110 0110 1111 0111 0010
    0110 0101 0111 0110 0110 0101 0111 0010 0010 0001 0010 0001 0000 0000 0000 0000
    0000 0000 0000 0000

  3. #3
    Join Date
    Oct 2009
    Location
    yangoon
    Posts
    5

    Re: progress bar

    #include <commctrl.h>

    this file is where the source code

  4. #4
    Join Date
    Nov 2009
    Posts
    1

    Re: progress bar

    This header file is already defined in the SDK, and you have juste to call it in the headers list

  5. #5
    Join Date
    Apr 2004
    Posts
    102

    Re: progress bar

    Quote Originally Posted by acce55 View Post
    i need the code for a progress bar. Do you have a free win32 ebook?
    i know one webpage but i cant get it to work.....for some reason it doesnt dispaly on the window...i make it visible and a child window and still nothing.....


    heres the link to that
    http://functionx.com/win32/controls/ProgressBars.htm
    Here is the fully functional equivalent of the example found on that web page..

    File: Resource.h
    Code:
    //{{NO_DEPENDENCIES}}
    // Microsoft Developer Studio generated include file.
    // Used by Example.rc
    //
    #define IDD_CONTROLS_DLG                101
    
    // Next default values for new objects
    // 
    #ifdef APSTUDIO_INVOKED
    #ifndef APSTUDIO_READONLY_SYMBOLS
    #define _APS_NEXT_RESOURCE_VALUE        102
    #define _APS_NEXT_COMMAND_VALUE         40001
    #define _APS_NEXT_CONTROL_VALUE         1000
    #define _APS_NEXT_SYMED_VALUE           101
    #endif
    #endif

    File: Example.rc
    Code:
    //Microsoft Developer Studio generated resource script.
    //
    #include "resource.h"
    
    #define APSTUDIO_READONLY_SYMBOLS
    /////////////////////////////////////////////////////////////////////////////
    //
    // Generated from the TEXTINCLUDE 2 resource.
    //
    #include "afxres.h"
    
    /////////////////////////////////////////////////////////////////////////////
    #undef APSTUDIO_READONLY_SYMBOLS
    
    /////////////////////////////////////////////////////////////////////////////
    // English (U.S.) resources
    
    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
    #ifdef _WIN32
    LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
    #pragma code_page(1252)
    #endif //_WIN32
    
    /////////////////////////////////////////////////////////////////////////////
    //
    // Dialog
    //
    
    IDD_CONTROLS_DLG DIALOG DISCARDABLE  200, 180, 186, 90
    STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
    CAPTION "Progress Bar Example"
    FONT 8, "MS Sans Serif"
    BEGIN
        DEFPUSHBUTTON   "OK",IDOK,129,7,50,14
        PUSHBUTTON      "Cancel",IDCANCEL,129,24,50,14
    END
    
    
    /////////////////////////////////////////////////////////////////////////////
    //
    // DESIGNINFO
    //
    
    #ifdef APSTUDIO_INVOKED
    GUIDELINES DESIGNINFO DISCARDABLE 
    BEGIN
        IDD_CONTROLS_DLG, DIALOG
        BEGIN
            LEFTMARGIN, 7
            RIGHTMARGIN, 179
            TOPMARGIN, 7
            BOTTOMMARGIN, 83
        END
    END
    #endif    // APSTUDIO_INVOKED
    
    
    #ifdef APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // TEXTINCLUDE
    //
    
    1 TEXTINCLUDE DISCARDABLE 
    BEGIN
        "resource.h\0"
    END
    
    2 TEXTINCLUDE DISCARDABLE 
    BEGIN
        "#include ""afxres.h""\r\n"
        "\0"
    END
    
    3 TEXTINCLUDE DISCARDABLE 
    BEGIN
        "\r\n"
        "\0"
    END
    
    #endif    // APSTUDIO_INVOKED
    
    #endif    // English (U.S.) resources
    /////////////////////////////////////////////////////////////////////////////
    
    
    
    #ifndef APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // Generated from the TEXTINCLUDE 3 resource.
    //
    
    
    /////////////////////////////////////////////////////////////////////////////
    #endif    // not APSTUDIO_INVOKED


    File: Example.cpp
    Code:
    #pragma comment ( lib, "user32.lib" ) 
    #pragma comment ( lib, "comctl32.lib" ) 
    
    #include <windows.h>
    #include <commctrl.h>
    #include "Resource.h"
    
    //---------------------------------------------------------------------------
    HWND hWnd;
    HWND hProgressWindow;
    HINSTANCE hInst;
    LRESULT CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
    //---------------------------------------------------------------------------
    INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
        LPSTR lpCmdLine, int nCmdShow)
    {
        hInst = hInstance;
    
        DialogBox(hInst, MAKEINTRESOURCE(IDD_CONTROLS_DLG),
            hWnd, reinterpret_cast<DLGPROC>(DlgProc));
    
        return FALSE;
    }
    //---------------------------------------------------------------------------
    
    LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT Msg,
        WPARAM wParam, LPARAM lParam)
    {
        INT iIndex =0;
        INITCOMMONCONTROLSEX InitCtrlEx;
    
        InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
        InitCtrlEx.dwICC  = ICC_PROGRESS_CLASS;
        InitCommonControlsEx(&InitCtrlEx);
    
        switch(Msg)
        {
            case WM_INITDIALOG:
                hProgressWindow =   CreateWindowEx(0, PROGRESS_CLASS, NULL,
                    WS_CHILD | WS_VISIBLE | PBS_SMOOTH,
                    5, 80, 260, 17,
                    hWndDlg, NULL, hInst, NULL);
                SendMessage (hProgressWindow, PBM_SETRANGE, 0, MAKELPARAM (0, 100));
                SendMessage(hProgressWindow, PBM_SETSTEP, 10, 0L); 
                return TRUE;
            case WM_COMMAND:
                switch(wParam)
                {
                    case IDOK:
                        SendMessage (hProgressWindow, PBM_SETPOS, (WPARAM) 0, 0);
                        for(iIndex = 0; iIndex <= 100; iIndex+=10)
                        {
                            SendMessage(hProgressWindow, PBM_SETPOS, (WPARAM)iIndex ,0L); 
                            Sleep(500);
                        }
                        return TRUE;
                    case IDCANCEL:
                        EndDialog(hWndDlg, 0);
                        return TRUE;
                }
                break;
        }
        return FALSE;
    }
    Build as follows:

    rc.exe example.rc
    cl.exe example.cpp example.res

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

Featured