Win32 - Wo gibt es ausführliche Beispiele / Tutuorials?



  • Gibt es gute Webseiten (english/deutsch), auf denen es gute und von sämtlichen
    Win32 API Bereichen gute Beispiele in C/C++ gibt? So suche ich z.B. noch gute
    Beispiele zu folgenden Win32 API Themen:

    - Toolbar / Rebar (mit Textbox, Combobox, Slider und anderen Win32 Controls,
    die zur Laufzeit (und nicht als Resource) erstellt werden!

    - Bitmap im Speicher erstellen und direkt im Speicher auf diese Bitmap zu zeichnen
    und anschließend anzuzeigen.

    - Beispiel, wie per Win32 API ein ColorWheel zur Laufzeit erstellt und angezeigt werden kann.

    - Und natürlich sämtliche anderen allgemeinen Win32 API Sachen 😉



  • Suche doch mal in der Msdn nach Winapi (ReBar, etc.).





  • @SoSoSo:
    Ich finde dort zwar z.B. unter folgendem Link ein CodeSnippsel:

    https://msdn.microsoft.com/en-us/library/windows/desktop/hh298374(v=vs.85).aspx

    #define NUMBUTTONS 3
    
    HWND CreateRebar(HWND hwndOwner, HWND hwndToolbar, HWND hwndCombo)
    {
        // Check parameters.
        if ((hwndToolbar == NULL) || (hwndCombo == NULL))
        {
            return NULL;
        }
    
        // Initialize common controls.
        INITCOMMONCONTROLSEX icex;
        icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
        icex.dwICC   = ICC_COOL_CLASSES | ICC_BAR_CLASSES;
        InitCommonControlsEx(&icex);
    
        // Create the rebar.
        HWND hwndRebar = CreateWindowEx(WS_EX_TOOLWINDOW,
            REBARCLASSNAME,
            NULL,
            WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
            WS_CLIPCHILDREN | RBS_VARHEIGHT |
            CCS_NODIVIDER | RBS_BANDBORDERS,
            0,0,0,0,
            hwndOwner,
            NULL,
            g_hInst, // global instance handle
            NULL);
    
        if(!hwndRebar)
        {
            return NULL;
        }
    
        // Initialize band info used by both bands.
        REBARBANDINFO rbBand = { sizeof(REBARBANDINFO) };
        rbBand.fMask  = 
              RBBIM_STYLE       // fStyle is valid.
            | RBBIM_TEXT        // lpText is valid.
            | RBBIM_CHILD       // hwndChild is valid.
            | RBBIM_CHILDSIZE   // child size members are valid.
            | RBBIM_SIZE;       // cx is valid
        rbBand.fStyle = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS;  
    
        // Get the height of the toolbar.
        DWORD dwBtnSize = (DWORD)SendMessage(hwndToolbar, TB_GETBUTTONSIZE, 0,0);
    
        // Set values unique to the band with the toolbar.
        rbBand.lpText = TEXT("");
        rbBand.hwndChild = hwndToolbar;
        rbBand.cyChild = LOWORD(dwBtnSize);
        rbBand.cxMinChild = NUMBUTTONS * HIWORD(dwBtnSize);
        rbBand.cyMinChild = LOWORD(dwBtnSize);
        // The default width is the width of the buttons.
        rbBand.cx = 0;
    
        // Add the band that has the toolbar.
        SendMessage(hwndRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
    
        // Set values unique to the band with the combo box.
        RECT rc;
        GetWindowRect(hwndCombo, &rc);
        rbBand.lpText = TEXT("Font");
        rbBand.hwndChild = hwndCombo;
        rbBand.cxMinChild = 0;
        rbBand.cyMinChild = rc.bottom - rc.top;
        // The default width should be set to some value wider than the text. The combo 
        // box itself will expand to fill the band.
        rbBand.cx = 100;
    
        // Add the band that has the combo box.
        SendMessage(hwndRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
    
        return (hwndRebar);
    }
    

    Nur verstehe ich als Anfänger noch nicht so ganz, was das mit hwndToolbar und HWND hwndCombo bedeuten soll. Muss ich hier zuvor eine Toolbar auf hWndMain und eine Combo auf hWndMain erstellen und dann deren Handle übergeben?

    Als ich nach ausführliche Beispiele fragte, meinte ich u.a. nach Beispiele wie o.g. MSDN Beispiel - jedoch evtl. als komplettes Projekt, um wirklich alles von Anfang an zu verstehen, als nur seperate CodeSnippts ^^

    @Mr C:
    Vielen Dank. Per Google bin ich schon immer fleißig am suchen; aber finde leider nur sehr schwer oder selten ganze Win32-API-Projekte. Stattdessen finde ich oft nur CodeSnippets die für mich als Anfänger nicht immer direkt weiterhelfen.



  • va!n schrieb:

    Nur verstehe ich als Anfänger noch nicht so ganz, was das mit hwndToolbar und HWND hwndCombo bedeuten soll. Muss ich hier zuvor eine Toolbar auf hWndMain und eine Combo auf hWndMain erstellen und dann deren Handle übergeben?

    Dann schau dir die Dokumentation in der MSDN zu den Verwendeten Funktionen und Messages an und versuch bitte mal selbstständig was nachzuvollziehen, anstatt ständig nach Beispielen zu fragen, die du dann nichteinmal bereit bist dir gründlich anzusehen und auf eigene Faust zu recherchieren.

    va!n schrieb:

    [...] , um wirklich alles von Anfang an zu verstehen, als nur seperate CodeSnippts ^^

    Um wirklich alles von Anfang an zu verstehen schau dir bitte die Dokumentation in der MSDN zu den Verwendeten Funktionen und Messages an.

    Sonst, wenns immer noch nix hilft ➡ Programming Windows API 5th Edition - Charles Petzold.

    ~... wobei ich mich schon frag warum man sich die WinAPI mit gewalt heutzutage noch antun will.~


Anmelden zum Antworten