mirror of
https://github.com/Rayerd/dfl.git
synced 2025-04-26 13:09:57 +03:00
89 lines
1.6 KiB
D
89 lines
1.6 KiB
D
import dfl;
|
|
import core.sys.windows.windows;
|
|
|
|
version(Have_dfl) // For DUB.
|
|
{
|
|
}
|
|
else
|
|
{
|
|
pragma(lib, "dfl.lib");
|
|
}
|
|
|
|
enum USE_MOUSE_DOWN_EVENT = true;
|
|
|
|
class MainForm : Form
|
|
{
|
|
private ContextMenu _contextMenu;
|
|
|
|
this()
|
|
{
|
|
this.text = "ContextMenu example";
|
|
this.size = Size(350, 200);
|
|
|
|
_contextMenu = new ContextMenu();
|
|
MenuItem contextMenuItem1 = new MenuItem("Kyoto");
|
|
contextMenuItem1.click ~= (MenuItem mi, EventArgs e) {
|
|
msgBox("Kyoto");
|
|
};
|
|
MenuItem contextMenuItem2 = new MenuItem("Tokyo");
|
|
contextMenuItem2.click ~= (MenuItem mi, EventArgs e) {
|
|
msgBox("Tokyo");
|
|
};
|
|
MenuItem contextMenuItem3 = new MenuItem("Osaka");
|
|
contextMenuItem3.click ~= (MenuItem mi, EventArgs e) {
|
|
msgBox("Osaka");
|
|
};
|
|
_contextMenu.menuItems.add(contextMenuItem1);
|
|
_contextMenu.menuItems.addRange([contextMenuItem2, contextMenuItem3]);
|
|
|
|
static if (USE_MOUSE_DOWN_EVENT)
|
|
{
|
|
this.mouseDown ~= (Control c, MouseEventArgs e) {
|
|
if (e.button & MouseButtons.RIGHT)
|
|
{
|
|
if (_contextMenu)
|
|
{
|
|
Point pt = Point(e.x, e.y);
|
|
ClientToScreen(handle, &pt.point);
|
|
_contextMenu.show(this, pt);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
static if (!USE_MOUSE_DOWN_EVENT)
|
|
{
|
|
override void wndProc(ref Message msg)
|
|
{
|
|
switch (msg.msg)
|
|
{
|
|
case WM_RBUTTONDOWN:
|
|
{
|
|
if (_contextMenu)
|
|
{
|
|
POINT pt;
|
|
GetCursorPos(&pt);
|
|
_contextMenu.show(this, Point(&pt));
|
|
}
|
|
return;
|
|
}
|
|
default:
|
|
{
|
|
super.wndProc(msg);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
static this()
|
|
{
|
|
Application.enableVisualStyles();
|
|
}
|
|
|
|
void main()
|
|
{
|
|
Application.run(new MainForm());
|
|
}
|