MRU Löschen
-
Hallöchen zusammen!
Ich möchte in meinem Programm die MRU Liste löschen, was ich mit Hilfe eines extra Menüpunktes 'Dateiliste löschen' im Menü 'Datei' (kein Sub Menü) und der dazugehörenden Funktion auch hinbekomme. Die Löschen Funktion sieht wie folgt aus:if(m_pRecentFileList != NULL) { for( int i = m_pRecentFileList->GetSize() - 1; i >= 0; i--) { m_pRecentFileList->Remove(i); } }Wenn ich mir jetzt aber die Liste anschaue, besteht die Liste aus dem Feld 'Letzte Datei', was ok ist. Aber danach werden die nachfolgenden Dateien immer noch angezeigt und sind auch markierbar (was dann zu einem Fehler führt, da diese ja aus der Liste gelöscht wurden
).Ich hab schon diverse Foren durchgeschaut (auch Codeguru und Code-Project), habe aber nichts konkretes gefunden, was mich eigentlich wundert, da dies ein MFC Fehler zu sein scheint!? Denn wenn ich das Programm beende und anschließend wieder neu starte, ist die Liste leer, bzw. nur das Feld 'Letzte Datei' ist noch zu sehen!
Kann mir jemand helfen?
Gruß
RG_Basser
-
Weiß das wirklich keiner, oder seit Ihr alle gerade mit dem Thread von 'Sonnenschein' beschäftigt

-
Versuch mal, hinterher CRecentFileList::UpdateMenu aufzurufen.
-
Gerade dann wird die Liste nicht richtig aktualisiert. Ich zeig mal den Code:
// 1. Message Handler Funktion, die die Liste Löscht void CBizFont32App::OnFileMruDelete() { if(m_pRecentFileList != NULL) { for( int i = m_pRecentFileList->GetSize() - 1; i >= 0; i--) { m_pRecentFileList->Remove(i); } } } // 2. UI Funktion von 'Dateiliste Löschen'. Wenn Liste leer, dann deaktivieren void CBizFont32App::OnUpdateFileMruDelete(CCmdUI* pCmdUI) { m_bList = TRUE; CString* psFile; if(m_pRecentFileList != NULL) { psFile = m_pRecentFileList->m_arrNames; if(psFile->IsEmpty()) { m_bList = FALSE; } } pCmdUI->Enable(m_bList); } // 3. Message Handler Funktion der ID ID_FILE_MRU_FILE1, die ich genauso genannt habe, wie die virtuelle Funktion void CBizFont32App::OnUpdateRecentFileMenu(CCmdUI* pCmdUI) { if(!m_bList) { int nSize = m_pRecentFileList->GetSize(); for( int i = 1; i < nSize; i++) { pCmdUI->m_pMenu->DeleteMenu(pCmdUI->m_nID + i, MF_BYCOMMAND); } } m_pRecentFileList->UpdateMenu(pCmdUI); //CWinApp::OnUpdateRecentFileMenu(pCmdUI); //return; }Hier versuche ich noch, jeden einzelnen Menüpunkt der MRU Liste zu löschen und rufe anschließend UpdateMenu() auf, jedoch ohne Erfolg
Ebenso, wenn ich die CWinApp Variante aufrufe!!
-
Paul DiLascia persönlich! hat mir folgende Antwort bezüglich dieses Problems geschrieben:
MFC uses the special ID ID_FILE_MRU_FILE1 to
know where to insert MRU files, so you have to delete
it as well as any files already in the list.Kann mir jemand sagen, was er damit meint?!
