C::B_5859 - minGW - commctrls



  • Hallo an Alle,

    ich habe gerade mit Code::Blocks angefangen und meine ersten kleinen
    Projekte laufen auch ganz gut. Nur wenn ich eine Trackbar-Controll
    einbinde, wird die Anwendung sofort wieder beendet.
    Der Compiler gibt aber keine Fehlermeldung aus.

    Ich kann auch InitCommonControlsEx nicht einbinden:

    INITCOMMONCONTROLSEX ICC;
    
        ICC.dwSize = sizeof(ICC);
        ICC.dwICC = ICC_WIN95_CLASSES;
        InitCommonControlsEx(ICC);
    

    ||=== TrackBar, Debug ===|
    X:\TrackBar\main.cpp||In function 'int WinMain(HINSTANCE__, HINSTANCE__, CHAR*, int)'Neutral
    X:\TrackBar\main.cpp|42|error: 'INITCOMMONCONTROLSEX' was not declared in this scope|
    X:\TrackBar\main.cpp|42|error: expected ';' before 'ICC'|
    X:\TrackBar\main.cpp|44|error: 'ICC' was not declared in this scope|
    X:\TrackBar\main.cpp|46|error: 'InitCommonControlsEx' was not declared in this scope|
    ||=== Erstellen beendet: 4 Fehler, 0 Warnungen===|

    #define WIN32_LEAN_AND_MEAN
    #include <windows.h>
    #include <commctrl.h>
    #include "resource.h"
    
    HINSTANCE hInst;
    
    BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        switch(uMsg)
        {
        case WM_INITDIALOG:
            return TRUE;
    
        case WM_CLOSE:
            EndDialog(hwndDlg, 0);
            return TRUE;
    
        case WM_LBUTTONDOWN:
            SendMessage(hwndDlg, WM_CLOSE, 0, 0);
            return TRUE;
    
        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                //Button schliessen
            case IDC_cmdSchliessen:
                SendMessage(hwndDlg,WM_CLOSE,0,0);
                return TRUE;
            }
        }
    
        return FALSE;
    }
    
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
    
        INITCOMMONCONTROLSEX ICC;
    
        ICC.dwSize = sizeof(ICC);
        ICC.dwICC = ICC_WIN95_CLASSES;
        InitCommonControlsEx(ICC);
    
        hInst = hInstance;
    
        // The user interface is a modal dialog box
        return DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, DialogProc);
    
    #include "resource.h"
    
    DLG_MAIN DIALOGEX 25,34,194,106
    CAPTION "Trackbar"
    FONT 8,"MS Sans Serif",0,0,1
    STYLE WS_VISIBLE|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|DS_CENTER|DS_3DLOOK
    BEGIN
      CONTROL "Schliessen",IDC_cmdSchliessen,"Button",WS_CHILD|WS_VISIBLE|WS_TABSTOP,126,69,54,24
      CONTROL "",IDC_HTRECK,"msctls_trackbar32",WS_CHILD|WS_VISIBLE,18,21,162,27
    END
    

    Ich vermute ich muss noch irgend wo eine lib einbinden, aber wo???

    Danke für jede Hilfe.



  • Dieser Thread wurde von Moderator/in phlox81 aus dem Forum Andere GUIs - Qt, GTK+, wxWidgets in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.





  • Ich vermute ich muss noch irgend wo eine lib einbinden, aber wo???

    entweder mittels

    #pragma comment (lib,"*.lib");
    

    in deinem project

    oder wenn du vs 2008 verwendest ist der weg die *.lib zu linken wie folgt...

    - unter Project-Eigenschaften (rechter mausklick auf's Project/ Popup Menu Eigenschaften)

    - in der Baumstrucktur Konfigurationseigenschaften / Linker / Eingabe

    links in der Listenansicht Zusätzliche Abhängigkeiten die *.lib auswählen bzw. eintragen

    - Button Übernehmen drücken

    - in der Baumstrucktur Konfigurationseigenschaften / Linker / Befehlszeile

    kannst du dann wieder Links nachkucken ob die hinzugefügte *.lib auch in der Befehlszeile steht



  • Danke für eure Hilfe.

    Ich werde mir das noch anschauen müssen.

    '#pragma comment' gibt es ja nur bei M$ und ist nicht nach ANSI.

    Bei CB ist unter 'Projekt-Properties-Libraries' die comctl32 angegeben,
    aber es funktioniert noch nicht.
    Das der Proces mit -1 beendet wird, hat aber mit dem zu tun,
    denn wenn ich den Trackbar entferne, läuft alles wieder ganz normal.

    Danke.



  • Ich habs gefunden!

    Ich muss bei C::B die DLL selbst einbinden: 🙄

    HINSTANCE hinstDll;
        hinstDll = LoadLibrary("comctl32.dll");
    

    Besten Dank.


Anmelden zum Antworten