Windows Trackbar



  • Hi,

    ich möchte eine Trackbar in mein Windowsfenster einbauen,
    wenn ich allerdings

    #include <Commctrl.h>

    benutze bekomme ich folgende Fehler:

    😕**\***\windows\v6.0a\include\prsht.h(97) : error C2065: 'CALLBACK': nichtdeklarierter Bezeichner
    😕**\***\windows\v6.0a\include\prsht.h(97) : error C2065: 'LPFNPSPCALLBACKA': nichtdeklarierter Bezeichner
    😕**\***\windows\v6.0a\include\prsht.h(97) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    😕**\***\windows\v6.0a\include\prsht.h(97) : fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.

    Hilfe? ^^ Besten Dank jetzt schonmal 🙂

    http://msdn.microsoft.com/en-us/library/bb760151(VS.85).aspx

    Wenn jemand eine bessre/einfachere Möglichkeit kennt trackbars via WinAPI zu benutzen (C/C++) wär mir das auch recht^^



  • Hast du auch alle Header eingebunden?
    Vielleicht hilft es, wenn du windows.h VOR CommCtrl.h einbindest. Dann dürften die Bezeichner bekannt sein. (CALLBACK ist zwar in WinDef.h deklariert, allerdings dürfte der Header schon von Windows.h eingebunden werden.)

    MfG, Jochen



  • Vielen vielen Dank mein göttlicher Tippgeber!^^

    Hat wirklich geklappt, war ja einfach^^

    Allerdings scheint das Beispielscript

    // CreateTrackbar - creates and initializes a trackbar. 
    // 
    // Global variable 
    //     g_hinst - instance handle 
    HWND WINAPI CreateTrackbar( 
        HWND hwndDlg,  // handle of dialog box (parent window) 
        UINT iMin,     // minimum value in trackbar range 
        UINT iMax,     // maximum value in trackbar range 
        UINT iSelMin,  // minimum value in trackbar selection 
        UINT iSelMax)  // maximum value in trackbar selection 
    { 
    
        InitCommonControls(); // loads common control's DLL 
    
        hwndTrack = CreateWindowEx( 
            0,                             // no extended styles 
            TRACKBAR_CLASS,                // class name 
            "Trackbar Control",            // title (caption) 
            WS_CHILD | WS_VISIBLE | 
            TBS_AUTOTICKS | TBS_ENABLESELRANGE,  // style 
            10, 10,                        // position 
            200, 30,                       // size 
            hwndDlg,                       // parent window 
            ID_TRACKBAR,             // control identifier 
            g_hinst,                       // instance 
            NULL                           // no WM_CREATE parameter 
            ); 
    
        SendMessage(hwndTrack, TBM_SETRANGE, 
            (WPARAM) TRUE,                   // redraw flag 
            (LPARAM) MAKELONG(iMin, iMax));  // min. & max. positions 
        SendMessage(hwndTrack, TBM_SETPAGESIZE, 
            0, (LPARAM) 4);                  // new page size 
    
        SendMessage(hwndTrack, TBM_SETSEL, 
            (WPARAM) FALSE,                  // redraw flag 
            (LPARAM) MAKELONG(iSelMin, iSelMax); 
        SendMessage(hwndTrack, TBM_SETPOS, 
            (WPARAM) TRUE,                   // redraw flag 
            (LPARAM) iSelMin); 
    
        SetFocus(hwndTrack); 
    
        return hwndTrack; 
    }
    

    voller Fehler zu sein.. naja werde mich mal durch arbeiten..



  • Jetzt kommt:

    main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol
    "__imp__InitCommonControls@0" in Funktion ""int __cdecl
    createWinApiObjects(void)" (?createWinApiObjects@@YAHXZ)".

    ->createWinApiObjects(void)<- ist von mir.

    int createWinApiObjects()
    {
    ...
       InitCommonControls(); // loads common control's DLL // <---- Hier scheint wieder der Fehler zu sein..
    
    	HWND hwndTrack = CreateWindowEx( 
            0,                             // no extended styles 
            TRACKBAR_CLASS,                // class name 
            "Trackbar Control",            // title (caption) 
            WS_CHILD | WS_VISIBLE | 
            TBS_AUTOTICKS | TBS_ENABLESELRANGE,  // style 
            10, 400,                        // position 
            200, 30,                       // size 
            ghWnd,                       // parent window 
            0,             // control identifier 
            ghInstance,                       // instance 
            NULL                           // no WM_CREATE parameter 
            ); 
    
    	return 0;
    }
    


  • Du musst auch noch die lib "comctl32.lib" linken.
    Ich weiss jetzt nicht, welchen Compiler du benutzt, aber das müsste irgendwo bei den Projekt-Eigenschaften gehen.
    In MS Visual C++ 2005 geht das so:

    Projekt->"Projektname"-Eigenschaften->Konfigurationseigenschaften->Allgemein->Linker->Eingabe->
    Hier musst du dann bei Zusätzliche Abhängigkeiten noch comctl32.lib hinzufügen.

    MfG, Jochen



  • Super, funktioniert und nochmals vielen Dank 🙂

    Ach ja:

    #pragma comment(lib, "comctl32.lib")
    

    So gings auch^^


Anmelden zum Antworten