Rebar Control wird nicht angezeigt



  • Hallo,
    ich benutze Visual C++ express 2008.
    Nun versuche ich seit vielen Stunden ein Rebar Control in mein Fenster zu bekommen, das eine Toolbar beinhaltet. Nach vielem googlen habe ich dann was zu Dev C++ gefunden: Einfügen von "#define _WIN32_IE 0x0400". Also habe ich's mal mit dem Dev C++ probiert - es funktioniert, Rebar und Toolbar lassen sich korrekt darstellen. Mit Visual C++ bringt es aber nichts.

    (in der WndProc)
    
    if (wMsg == WM_CREATE)
    {
        InitCommonControls();
    
        INITCOMMONCONTROLSEX icex;
    
        icex.dwSize = sizeof (INITCOMMONCONTROLSEX);
        icex.dwICC   = ICC_COOL_CLASSES|ICC_BAR_CLASSES;
        InitCommonControlsEx(&icex);
    
        REBARINFO	rbi;
        REBARBANDINFO	rbBand;
        RtlZeroMemory(&rbi, sizeof (rbi));
        RtlZeroMemory(&rbBand, sizeof (rbBand));
        hRebar = CreateWindowEx(WS_EX_TOOLWINDOW, REBARCLASSNAME, NULL, 
            WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN
    	|RBS_VARHEIGHT|CCS_NODIVIDER,
    	0,0,0,0,hWnd,(HMENU) 502,hInstance,NULL);	
        if (!hRebar) {Beep(500, 12);}
    
        // Initialize and send the REBARINFO structure.
        rbi.cbSize = sizeof(REBARINFO);  // Required when using this struct.
        rbi.fMask  = 0;
        rbi.himl   = (HIMAGELIST)NULL;
        if (!SendMessage(hRebar, RB_SETBARINFO, 0, (LPARAM)&rbi)){Beep (500, 12);}
    
        // Initialize structure members ...
        rbBand.cbSize = sizeof(REBARBANDINFO);  
    	rbBand.fMask  =  RBBIM_COLORS|RBBIM_BACKGROUND|RBBIM_STYLE|RBBIM_CHILD|
            RBBIM_CHILDSIZE|RBBIM_SIZE|RBBIM_IDEALSIZE|RBBIM_HEADERSIZE;        
        rbBand.fStyle = RBBS_VARIABLEHEIGHT ;
        rbBand.hbmBack = LoadBitmap(hInstance, "#2");   
        if (!rbBand.hbmBack) {Beep (900, 12);}
    
        // Create the toolbar control to be added.
        hToolbar = CreateToolbar(hWndParent, ....); funktioniert, die Toolbar wird angezeigt
    
        int dwBtnSize = SendMessage(hToolbar, TB_GETBUTTONSIZE, 0,0);
    		GetWindowRect (hToolbar, &rc);
    
        rbBand.hwndChild  = hToolbar;
        rbBand.cxMinChild = 0;
        rbBand.cyMinChild = 30; //HIWORD(dwBtnSize);
        rbBand.cx         = 250;
        rbBand.cxIdeal		= 250;
        rbBand.cxHeader		= 4;
        if (!SendMessage(hRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand)) {Beep (900, 12);}
        //////////////////////////////////////////////////////////////////////
        // Hier passiert's, die Message ist nicht erfolgreich - aber warum? //
        //////////////////////////////////////////////////////////////////////
    else if (wMsg == WM_SIZE)
    {
        if (!IsWindow(hRebar)) {Beep( 500, 12);}
        MoveWindow (hRebar, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
    }
    

    Hat jeman eine Vorstellung, was eventuell in Visual C++ eingestellt oder eingefügt werden muß, um das hinzukriegen? Mit Dev C++ funktioniert dieser Code.

    Danke schon mal im Voraus.

    Gruß Rainer



  • Hallo, hab den Fehler gefunden. Die voreingestellte Plattform hat nicht gestimmt.

    Gruß Rainer


Anmelden zum Antworten