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...