Schowek: korzystanie ze schowka systemu Windows

W tym temacie opisano, jak używać standardowego interfejsu API schowka systemu Windows w aplikacji MFC.

Większość aplikacji dla Windows obsługuje wycinania lub kopiowania danych do Schowka systemu Windows i wklejania danych ze Schowka.Formaty danych w Schowku różnią się między aplikacjami.Platforma obsługuje ograniczoną liczbę formatów Schowka dla ograniczonej liczby klas.Zwykle będzie wykonywał polecenia związane z Schowka — Wytnij, Kopiuj i Wklej — w menu Edycja dla tego widoku.Biblioteka klas Określa identyfikatory poleceń dla tych poleceń: ID_EDIT_CUT, ID_EDIT_COPY, i ID_EDIT_PASTE.Można zdefiniować ich monity wiersz wiadomości.

Wiadomości i poleceń w ramach objaśniono sposób obsługi poleceń menu w aplikacji mapując polecenia menu funkcji obsługi.Tak długo, jak długo aplikacja nie definiuje funkcje obsługi dla poleceń Schowka w menu Edycja, pozostają wyłączone.Aby napisać funkcje obsługi dla poleceń Wytnij i Kopiuj, zaimplementować zaznaczenia w aplikacji.Aby napisać funkcję modułu obsługi dla polecenia Wklej, kwerenda Schowka, aby zobaczyć, czy zawiera dane w formacie, który aplikacja może zaakceptować.Na przykład aby włączyć polecenia Kopiuj, możesz pisać program obsługi postać 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 są tylko znaczenie w określonych kontekstach.Poleceń Wytnij i Kopiuj powinno być włączone tylko wtedy, gdy jakiś obiekt jest zaznaczony, a następnie polecenie Wklej tylko wtedy, gdy coś jest w Schowku.To zachowanie może zapewnić poprzez zdefiniowanie funkcje obsługi aktualizacji, które włączyć lub wyłączyć te polecenia zależnie od kontekstu.Aby uzyskać więcej informacji, zobacz sposobu aktualizacji obiektów interfejsu użytkownika.

Biblioteki Microsoft Foundation Class zapewniają obsługę Schowka edycji tekstu z CEdit i CEditView klas.Klasy OLE również uprościć wykonawczych operacji schowka, które obejmują elementy OLE.Aby uzyskać więcej informacji o klasach OLE, zobacz Schowka: przy użyciu mechanizmu OLE Schowka.

Realizację innych poleceń menu, takich jak Cofnij Edytuj (ID_EDIT_UNDO) i wykonaj ponownie (ID_EDIT_REDO), również pozostaje dla Ciebie.Jeśli aplikacja nie obsługuje tych poleceń, łatwo można je usunąć z pliku zasobów za pomocą edytorów zasobów Visual C++.

O czym chcesz się dowiedzieć więcej?

Zobacz też

Koncepcje

Schowek