diff --git a/reference/DragAndDropImg/DragAndDropImg.upp b/reference/DragAndDropImg/DragAndDropImg.upp new file mode 100644 index 000000000..83cafe97f --- /dev/null +++ b/reference/DragAndDropImg/DragAndDropImg.upp @@ -0,0 +1,11 @@ +description "Example of basic DnD API\377"; + +uses + CtrlLib; + +file + main.cpp; + +mainconfig + "" = "GUI SSE2"; + diff --git a/reference/DragAndDropImg/init b/reference/DragAndDropImg/init new file mode 100644 index 000000000..a0a3cb91e --- /dev/null +++ b/reference/DragAndDropImg/init @@ -0,0 +1,4 @@ +#ifndef _DragAndDropImg_icpp_init_stub +#define _DragAndDropImg_icpp_init_stub +#include "CtrlLib/init" +#endif diff --git a/reference/DragAndDropImg/main.cpp b/reference/DragAndDropImg/main.cpp new file mode 100644 index 000000000..51920841b --- /dev/null +++ b/reference/DragAndDropImg/main.cpp @@ -0,0 +1,46 @@ +#include + +using namespace Upp; + +struct MyApp : TopWindow { + virtual void CancelMode(); + virtual void Paint(Draw& w); + virtual void DragAndDrop(Point p, PasteClip& d); + virtual void DragLeave(); + + Image img; + bool dnd; + + MyApp() { dnd = false; } +}; + +void MyApp::Paint(Draw& w) +{ + Size sz = GetSize(); + w.DrawRect(sz, dnd ? SColorInfo() : SColorFace()); + w.DrawImage(0, 0, img); +} + +void MyApp::DragAndDrop(Point p, PasteClip& d) +{ + if(AcceptImage(d)) + img = GetImage(d); + dnd = d.IsAccepted(); + Refresh(); +} + +void MyApp::DragLeave() +{ + CancelMode(); +} + +void MyApp::CancelMode() +{ + dnd = false; + Refresh(); +} + +GUI_APP_MAIN +{ + MyApp().Run(); +}