unbekannter Fehler



  • Problem an sich ist nur die Switchanweisung. Nur wo? Kann zwar zeichnen. Aber listet Fehlermeldung auf. Irgendein Fehler in der afxwin2.inl.

    CDlg dlg;
    dlg.DoModal();
    
    CClientDC dc(this); 
    
    int a,b;
    int x1,x2,y1,y2; 
    
    RECT rect;
    
    CBrush Blau(RGB(0,0,255));
    CBrush Gelb(RGB(255,255,0)); 
    CBrush Rot(RGB(255,0,0));
    
    double lfAnzahl;
    lfAnzahl=atof(dlg.m_strTreppenstufen);
    
    for(a=0;a<lfAnzahl;a++){
      for(b=0;b<lfAnzahl;b++){
        x1=a*50+10;
        y1=b*50+10;
        x2=a*50+60;
        y2=b*50+60;
        dc.Rectangle(x1,y1,x2,y2);			 
      }
    }	
    
    switch(dlg.m_cmbAuswahl.GetCurSel()){
    case 1:
      dlg.m_strAuswahl.Format("Blau"); 
      dc.FillRect(&rect, &Blau);
      break;
    case 2:
      dlg.m_strAuswahl.Format("Gelb"); 
      dc.FillRect(&rect, &Gelb);
      break;
    case 3:
      dlg.m_strAuswahl.Format("Rot");
      dc.FillRect(&rect, &Rot);
      break;
    default:
      dlg.m_strAuswahl.Format("");
      AfxMessageBox("Falscheingabe");
      break;
    }
    

    (in CPP-Tags und mit ordentlichen Einrückungen sieht's doch gleich viel besser aus)



  • Hast du die Anwendung schon mal durch debugt? Was für eine Fehlermeldung kommt genau?
    Bitte nächstes mal die Code Tags verwenden 😉



  • Nur mal so als Gedanke. Ich nehme an das der Fehler bei GetCurSel() auftritt, da der Dialog schon geschlossen wurde und das Handle der Listbox nicht mehr existiert. Versuch das mal in dem Dialog(CDlg) in der OnOK() eine lokale Variable des Dialoges zu mit dem Wert von GetCurSel zu setzen und diesen dann in der Switch zu benutzen.

    Aber das ist eben nur so ein Gedanke, kann auch was anderes sein.

    Gruß


  • Mod

    Fehlcompiler schrieb:

    CDlg dlg;
    dlg.DoModal();
    <snip>
    switch(dlg.m_cmbAuswahl.GetCurSel()){

    Das geht nicht. Nach dem Aufruf des Dialoges ist das ComboBox Control wieder zerstört. Deshalb passiert ein ASSERT in der afxwin.inl! Das ist aber kein Compiler Fehler, wie Du schreibst.

    Du musst also den Wert der ausgewählt wurde in DoDataExchange speichern lassen. Binde also eine Variable an diese ComboBox.



  • @Martin Richter

    Hatte ich nicht das selbe schon gepostet?

    Gruß


  • Mod

    @CTecS: Sorry. Ich habe den Thread wohl nicht vollständig gelesen!


Log in to reply