dynamische Buttons,Checkboxen Radiobuttons



  • du machst dir nen CObArray und lädst alle buttons rein

    CObArray oArr;
    CButton *bBut = new CButton();
    
    bBut->Create(...);
    
    oArr.Add(bBut);
    

    das kannst du so oft machen wir dus brauchst. mit den checkboxen und allen anderen steuerelementen genau so.

    wenn du auf die steuerelemente zugreifen willst hollst du dir einfach die adresse aus dem array und machst was damit



  • aso meinst du das, ich hab ne klasse aus meiner website (CSizeDialog). die ist ganz interesant.

    habe noch ein par änderungen daran gemacht, die sollte ich mal hochladen



  • Hi,
    kannst du mir einige Beispiele nennen. Ich habe 3 Koordinaten l*b*h 3*4*5 wie kann ich denn Button mit dieser größe darstellen bitte helfe mir, mit einem Beispiel. Weist du auch wie mann einen Button an ein vorher geladenes Bmp zeichnet, das laden etc. klappt alles nur das zeichnen des Button nicht. Help ? Danke



  • GetDlgItem(IDC_DEIN_BUTTON)->SetWindowPos(NULL, posX, posY, breite, höhe, NULL);
    

    beispiele zu bitmaps auf buttons findest du viele auf codeguru und codeproject



  • ich lade ein Bild mit einigen Rechtecken eines hat diese Koordinaten top 331, left 328, höhe 17. Wenn ich jetzt den Button darüber lege kommt dieser aber an einer anderen Stelle. Warum??



  • es kann sein, das du bildschirm und client-koordinaten verwendest. ich hatte ausserdem mal problme mit der genauen positionsbestimmung wegen kantenbreite u.ä. von dialogfeldern und so



  • Du brauchst noch ScreenToClient. 🙂



  • wie geht es denn? hast du ein BSP:



  • bumbumb2005 schrieb:

    ich lade ein Bild mit einigen Rechtecken eines hat diese Koordinaten top 331, left 328, höhe 17. Wenn ich jetzt den Button darüber lege kommt dieser aber an einer anderen Stelle. Warum??

    Gib mal den Code für die Stelle.

    Im Prinzip musst du die Funktion auf das Recheck anwenden, was die Position des Buttons festlegt.



  • in der MSDN steht doch alles über die funktion



  • Hier zeichne ich das Rechteck

    dc.FillSolidRect(q-g,u-z,wh,hw,RGB(255,zahl2,zahl3));
    

    Und hier den Button

    GetDlgItem(IDC_BUTTON11)->SetWindowPos(NULL,q-g,u-z,wh,hw,NULL);
    

    und so lade ich das Bild

    CWnd* pWnd = (CWnd*) GetDlgItem(IDC_STATIC_BILD); 
    				CDC* pDC = pWnd->GetDC(); 
    				CBitmap bitmap; 
    				CDC dc; 
    				CRect rect; 
    				pWnd->GetClientRect(rect); 
    				BITMAP bm; 
    				HBITMAP hPixel = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),pfad, IMAGE_BITMAP, 0,0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); 
    				bitmap.Attach(hPixel); 
    				bitmap.GetBitmap(&bm);         
    				dc.CreateCompatibleDC(pDC); 
    				dc.SelectObject(bitmap); 
    				pDC->StretchBlt(0,0,rect.Width(), rect.Height(),&dc,0,0, bm.bmWidth, bm.bmHeight, SRCCOPY);
    

    danke schon mal



  • bumbumb2005 schrieb:

    Hier zeichne ich das Rechteck

    dc.FillSolidRect(q-g,u-z,wh,hw,RGB(255,zahl2,zahl3));
    GetDlgItem(IDC_BUTTON11)->SetWindowPos(NULL,q-g,u-z,wh,hw,NULL);
    

    Da machst du stattdessen:

    CRect rect (q-g,u-z,wh,hw);
    dc.FillSolidRect(rect);
    ScreenToClient(rect);
    GetDlgItem(IDC_BUTTON11)->MoveWindow(rect, TRUE); // Button wird verschoben
    

    Mit SetWindowPos wars mir zu viel Tipparbeit - geht aber auch. 😉



  • es kommt diese Fehlermeldung
    FillSolidRect' : Keine ueberladene Funktion akzeptiert 1 Parameter was kann das sein



  • Leider kommt der Button aber nicht was kann das sein?



  • dann heißt das das diese funktion nicht nur einen parameter haben will sonder mehr oder weniger.

    guck doch einfach mal die definition an:

    void FillSolidRect(
       LPCRECT lpRect,
       COLORREF clr 
    );
    void FillSolidRect(
       int x,
       int y,
       int cx,
       int cy,
       COLORREF clr 
    );
    


  • es kommt aber kein button der Rest geht schon


Anmelden zum Antworten