Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, wie die Standard-Windows-Zwischenablage APIs in einer MFC-Anwendung verwendet.
Die meisten Anwendungen für Windows unterstützen Ausschnitt oder das Kopieren von Daten in die Windows-Zwischenablage und Einfügen von Daten aus der Zwischenablage.Die Zwischenablagedaten Stile für Anwendungen mit variieren.Das Framework unterstützt nur eine begrenzte Anzahl Zwischenablageformate für eine begrenzte Anzahl von Klassen.Normalerweise implementieren Sie die Zwischenablage-verknüpften — Befehle Ausschneiden, Kopieren und Einfügen im Menü Bearbeiten auf dem für die Ansicht.Die Klassenbibliothek definiert die Befehls-IDs für diese Befehle: ID_EDIT_CUT, ID_EDIT_COPY und ID_EDIT_PASTE.Die Meldung Zeile Eingabeaufforderungen werden ebenfalls definiert.
Meldungen und Befehle im Framework erklärt, wie Menübefehle in der Anwendung behandelt, indem es den Menübefehl für eine Handlerfunktion zuordnet.Solange die Anwendung keine Handlerfunktionen für die Zwischenablage im Menü Bearbeiten auf Befehle definiert, bleiben sie deaktiviert.So Handlerfunktionen für die Befehle Ausschneiden und Kopieanweisungen schreiben, Werkzeug-Auswahl in der Anwendung.Um eine Handlerfunktion für den Befehl Einfügen zu schreiben, fragen Sie die Zwischenablage um festzustellen, ob sie Daten in einem Format enthält, das Ihre Anwendung annehmen kann.Um beispielsweise den Befehl Kopieren zu aktivieren, geschrieben haben Sie möglicherweise einen Handler in etwa dem folgenden Beispiel:
void CMyListView::OnEditCopy()
{
if ( !OpenClipboard() )
{
AfxMessageBox( _T("Cannot open the Clipboard") );
return;
}
// Remove the current Clipboard contents
if( !EmptyClipboard() )
{
AfxMessageBox( _T("Cannot empty the Clipboard") );
return;
}
// Get the currently selected data
HGLOBAL hGlob = GlobalAlloc(GMEM_FIXED, 64);
strcpy_s((char*)hGlob, 64, "Current selection\r\n");
// For the appropriate data formats...
if ( ::SetClipboardData( CF_TEXT, hGlob ) == NULL )
{
CString msg;
msg.Format(_T("Unable to set Clipboard data, error: %d"), GetLastError());
AfxMessageBox( msg );
CloseClipboard();
GlobalFree(hGlob);
return;
}
CloseClipboard();
}
Die Befehle Ausschneiden, Kopieren und Einfügen sind in bestimmten Kontexten nur sinnvoll.Die Befehle Ausschneiden und Kopieanweisungen sollten nur aktiviert werden, wenn etwas ausgewählt ist, und der Befehl Einfügen nur, wenn etwas in der Zwischenablage befindet.Sie können dieses Verhalten aus dem Definieren von Aktualisierungshandler Funktionen bereitstellen, die je nach Kontext auf diese Befehle aktivieren oder deaktivieren.Weitere Informationen finden Sie unter Wie Benutzeroberflächenobjekte aktualisiert.
Microsoft Foundation Class Library bietet Unterstützung für Textausgabe mit der Zwischenablage und CEditCEditView-Klassen.Die OLE-Klassen vereinfachen die Implementierung der Zwischenablage auch Vorgänge, die OLE-Elemente einschließen.Weitere Informationen über die OLE-Klassen finden Sie unter Zwischenablage: Verwenden des OLE-Zwischenablage-Mechanismus.
Das Implementieren anderer des Bearbeiten die Option Rückgängig (z. B., und wiederholen ID_EDIT_UNDO) (ID_EDIT_REDO), schlagen Sie außerdem wird.Wenn die Anwendung nicht über diese Befehle unterstützt, können Sie sie aus der Ressourcendatei mit Visual C++-Ressourcen-Editoren problemlos löschen.