Schowek: Przy użyciu Schowka systemu Windows
W tym temacie opisano, jak używać standardowego interfejsu API schowka systemu Windows w aplikacji MFC.
Większość aplikacji dla systemu Windows obsługuje wycinania lub kopiowania danych do Schowka systemu Windows i wklejania danych ze Schowka.Formaty danych w Schowku różnią się od aplikacji.Platforma obsługuje tylko ograniczona liczba formaty Schowka dla ograniczonej liczby klas.Zwykle wykona polecenia dotyczące Schowka — Wytnij, Kopiuj i Wklej — widoku, w menu Edycja.Biblioteka klas Określa identyfikatory poleceń dla tych poleceń: ID_EDIT_CUT, ID_EDIT_COPY, i ID_EDIT_PASTE.Definiuje również ich monity wiersz wiadomości.
Wiadomości i poleceń w ramach wyjaśnia, jak obsługiwać poleceń menu w aplikacji przez mapowanie polecenia menu do funkcji obsługi.Jak długo aplikacja nie definiuje funkcje obsługi schowka poleceń w menu Edycja, pozostają wyłączone.Aby napisać funkcje obsługi dla poleceń Wytnij i Kopiuj, wdrożenie zaznaczenia w aplikacji.Aby napisać funkcję modułu obsługi dla polecenia Wklej, kwerendy do Schowka, aby zobaczyć, czy zawiera on dane w formacie aplikacji, można zaakceptować.Na przykład aby włączyć polecenia Kopiuj, zapisać uchwyt zbliżoną do następującej:
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();
}
Polecenia Wytnij, Kopiuj i Wklej tylko są znaczące w określonych kontekstach.Wycinanie i kopiowanie polecenia powinno być włączone tylko wtedy, gdy jakiś obiekt jest zaznaczony, a następnie polecenia Wklej tylko wtedy, gdy coś się w Schowku.To zachowanie można zapewnić przez definiowanie funkcje obsługi aktualizacji, które włączyć lub wyłączyć te polecenia, w zależności od kontekstu.Aby uzyskać więcej informacji, zobacz jak obiekty interfejsu użytkownika aktualizacji.
Biblioteka klas Microsoft Foundation zapewniają obsługę Schowka edycji tekstu z CEdit i CEditView klasy.Klasy OLE również uprościć wykonawczych operacje schowka, które obejmują elementy OLE.Aby uzyskać więcej informacji dotyczących klasy OLE, zobacz Schowka: za pomocą mechanizmu OLE Schowka.
Wykonania drugiej edycji polecenia menu, takie jak Cofnij (ID_EDIT_UNDO) i wykonaj ponownie (ID_EDIT_REDO), również pozostaje do Ciebie.Jeśli aplikacja nie obsługuje tych poleceń, można łatwo usunąć je z pliku zasobów za pomocą edytorów zasobu Visual C++.