mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 14:15:49 -06:00
Copy screenshot context help press 's'.fix asserts.
Копирование окна контекстной помощи в буфер обмена по нажатию 's'.
This commit is contained in:
parent
e54809faf2
commit
2989801a84
4 changed files with 47 additions and 2 deletions
|
|
@ -192,6 +192,42 @@ public:
|
|||
if (event.GetKeyCode() == WXK_UP) htmlWindow->ScrollLines(-1);
|
||||
if (event.GetKeyCode() == WXK_HOME) htmlWindow->ScrollPages(-1000);
|
||||
if (event.GetKeyCode() == WXK_END) htmlWindow->ScrollPages(1000);
|
||||
//std::cout << "key code " << event.GetKeyCode() << " " << std::endl;
|
||||
if (event.GetKeyCode() == 'S') {
|
||||
wxSize clientSize = this->GetClientSize();
|
||||
// Создаём битмап того же размера
|
||||
wxBitmap bitmap(clientSize.x, clientSize.y, -1); // -1 — лучший формат для экрана
|
||||
|
||||
// Создаём DC для рисования в битмап
|
||||
wxMemoryDC memDC;
|
||||
memDC.SelectObject(bitmap);
|
||||
|
||||
// Очищаем фон (опционально, если окно не полностью перерисовано)
|
||||
memDC.SetBackground(*wxWHITE_BRUSH);
|
||||
memDC.Clear();
|
||||
|
||||
// Используем wxClientDC для чтения содержимого окна
|
||||
wxClientDC clientDC(this);
|
||||
// Переносим данные с clientDC в memDC (копируем прямоугольник)
|
||||
// Важно: координаты — относительно окна!
|
||||
memDC.Blit(0, 0, clientSize.x, clientSize.y, &clientDC, 0, 0);
|
||||
|
||||
// Освобождаем DC
|
||||
memDC.SelectObject(wxNullBitmap);
|
||||
// Открываем буфер обмена
|
||||
if (wxTheClipboard->Open())
|
||||
{
|
||||
// Добавляем данные (можно добавить несколько форматов, если нужно)
|
||||
wxDataObjectComposite* dataobj = new wxDataObjectComposite();
|
||||
dataobj->Add(new wxBitmapDataObject(bitmap));
|
||||
wxTheClipboard->SetData(dataobj);
|
||||
wxTheClipboard->Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
wxLogError("No open clipboard.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue