mit [Entf] Taste Einträge von Listenfeld löschen



  • Hi Leute, wie der Titel schon sagt versuch ich das zu realisieren, bloß hab dazu nichts gefunden, und weiß selber nicht wie das funz, kann mir evtl jemand helfen?
    ich hab die Funktion die mein Listenfeld füllt:

    void CLoaditupDlg::OnSearch() 
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    	UpdateData(TRUE);
    	int nF = 0; 
        CFileDialog dlg(TRUE, 
            "txt", 
            NULL,    //"*.txt", 
            OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
            "Alle Dateien (*.*)|*.*|Textdateien (*.txt)|*.txt||");/**/ 
        dlg.m_ofn.lpstrInitialDir = "c:\\"; 
        //fdlg.m_ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST; 
        dlg.m_ofn.lpstrTitle = dlg.m_ofn.lpstrInitialDir; 
    
        nF = dlg.DoModal(); 
    
    	if(nF == IDOK) 
        {  
    		SetDlgItemText(IDC_LIST,m_filelist); 
    		m_pathname=dlg.GetPathName();
    		nIndex = m_ctrfilelist.AddString(m_pathname);
    
        } 
    
    	UpdateData(FALSE);
    
    }
    




  • Hallo,

    sadi schrieb:

    Meine zweite Frage:

    jetzt beantworte ich deine Frage schon zum zweiten Mal, liest du eigentlich auch die Antworten auf deine Fragen, oder vergißt du, wo du eine Frage schon einmal gestellt hast, siehe hier:

    http://www.c-plusplus.net/forum/viewtopic.php?p=530616#530616

    MfG



  • Sorry Probe-Nutzer ich habs übersehen 😕
    Danke an alle, ich werde es versuchen!



  • Also ich probiere schon seit 2 Tagen rum, aber es geht einfach nicht 😕
    Ich kann die Einträge vom Listenfeld nicht löschen.
    Wie gesagt das ist mein erstes MFC Programm und ich hab da wenig Erfahrung.

    BOOL CLoaditupDlg::PreTranslateMessage(MSG* pMsg) 
    {
    	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
    		UpdateData(TRUE);
    
    	    if (pMsg->message == WM_KEYDOWN)
        {
            if (pMsg->wParam == VK_F2)
            {
    
    			CString sUrl = _T("calc.exe"); 
    			ShellExecute(0,0,sUrl,0,0,SW_SHOW);
    
            }
    
    		if (pMsg->wParam == VK_DELETE)
            {
    		CListCtrl* pList = (CListCtrl*) GetDlgItem(IDC_LIST); 
    		POSITION pos = pList->GetFirstSelectedItemPosition();
            int nItem = pList->GetNextSelectedItem(pos);  
            int nItemH = atoi(pList->GetItemText(nItem, 0)); 
            pList->DeleteItem(nItem); 
    
    		}
        }
    
    	return CDialog::PreTranslateMessage(pMsg);
    	UpdateData(FALSE);
    }
    


  • BOOL CLoaditupDlg::PreTranslateMessage(MSG* pMsg){
    
    	CListCtrl* pList=(CListCtrl*)GetDlgItem(IDC_LIST....);
    	POSITION pos;
    
    	if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_DELETE){
    		::AfxGetApp()->DoWaitCursor(1);
    
    		while(pos= pList->GetFirstSelectedItemPosition())
    			pList->DeleteItem(pList->GetNextSelectedItem(pos));
    
    		::AfxGetApp()->DoWaitCursor(0);
    	}
    	return CDialog::PreTranslateMessage(pMsg);
    }
    


  • Sorry das geht immer noch nicht 😕
    Ich hab es so übernohmen dadurch bekomme ich 100% CPU Auslastung, liegt glaub ich an der while schleife.

    Ich habs jetzt so umgeschrieben, wird aber nichts gelöscht 😕

    BOOL CLoaditupDlg::PreTranslateMessage(MSG* pMsg) 
    {
    	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
    		UpdateData(TRUE);
    
    	    if (pMsg->message == WM_KEYDOWN)
    	 {
    
            if (pMsg->wParam == VK_F2)
            {
    
    			CString sUrl = _T("calc.exe"); 
    			ShellExecute(0,0,sUrl,0,0,SW_SHOW);
    
            }
    		if(pMsg->wParam == VK_DELETE)
    		{ 
    
    		CListCtrl* pList = (CListCtrl*) GetDlgItem(IDC_LIST); 
    		POSITION pos; 
    
    		::AfxGetApp()->DoWaitCursor(1); 
            pos= pList->GetFirstSelectedItemPosition();
            pList->DeleteItem(pList->GetNextSelectedItem(pos)); 
            ::AfxGetApp()->DoWaitCursor(0); 
    
    		}
    
        }
    
    	return CDialog::PreTranslateMessage(pMsg);
    	UpdateData(FALSE);
    }
    


  • hmm also bei mir funzt das was ich dir gepostet habe... ka was bei dir nicht geht...


Anmelden zum Antworten