Przecież w przykładzie do którego cię odesłałem masz wyraźnie podane użycie SetAsHandle w C++. Kolejność jest tam taka:
unsigned short MyFormat;
Bitmap->SaveToClipboardFormat(
MyFormat,
DataHandle,
APalette);
Clipboard()->SetAsHandle(MyFormat, DataHandle);
Jak widzisz to Bitmap zapisuje format w MyFormat, a potem SetAshandle używa tego formatu.
SetAsHandle zapisuje dane, reprezentowane przez określony uchwyt, do schowka przy użyciu określonego formatu. Parametr Format może określać dowolny z formatów wymienionych w metodzie HasFormat. A HasFormat w C++ nie zawiera wartości typu HTML. Dostępne są tylko:
CF_TEXT
CF_BITMAP
CF_METAFILEPICT
CF_PICTURE
CF_COMPONENT
Gdzieś natknąłem się jeszcze na CF_HTML, ale nie wiem czy to działa.
RegisterClipboradFormat stosuje się w Delphi, ale w C++ już nie. Masz w to pomocy do środowiska:
TClipboard *cb = Clipboard();
if (cb->HasFormat(CF_BITMAP))
{
std::auto_ptr<Graphics::TBitmap> Bitmap(new Graphics::TBitmap());
try
{
Bitmap->LoadFromClipboardFormat(CF_BITMAP, cb->GetAsHandle(CF_BITMAP), 0);
Canvas->Draw(5, 5, Bitmap.get());
}
catch (...)
{
MessageBeep(0);
ShowMessage("Error reading image from clipboard!");
}
cb->Clear();
}
Bitmap : TBitmap;
s : string;
Icon: TIcon;
begin
Bitmap := TBitMap.Create;
try
Image1.Picture.RegisterClipboardFormat(cf_BitMap,TIcon);
Bitmap.LoadFromClipBoardFormat(
cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
Canvas.draw(0,0,Bitmap);
finally
Bitmap.free;
Clipboard.Clear;
Mironas napisał(a):Mam problem z wstawieniem tekstu sformatowanego w HTML (proste znaczniki typu <b>) do schowka Clipboard().
Jak rozumiem kopiując tekst ze strony HTML chcesz skopiować również kod HTML, który się pod nim ukrywa? Używam schowka od zawsze, ale nigdy nie zauważyłem by w taki sposób działa. Gdy kopiuję tekst ze strony, to kopiuje się on do schowka bez formatowania. Skopiowanie z formatowaniem wymaga chyba jakiejś specjalnej funkcji w przeglądarce?
Nie bardzo rozumiem co chciałeś przez to powiedzieć, bo jawnie kod HTML można bez problemu skopiować do schowka, gdyż jest to zwykły tekst.
O co więc chodzi z tym kopiowaniem HTML do schowka, bo nie bardzo rozumiem?Tutaj masz przykład w Visual C++ z użyciem formatu CF_HTML:
https://support.microsoft.com/en-us/help/274308/how-to-add-html-code-to-the-clipboard-by-using-visual-c