wrb 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README +28 -0
- data/Rakefile +66 -0
- data/bin/wrb +41 -0
- data/bin/wrb.bat +6 -0
- data/ext/rwin/aatree.c +192 -0
- data/ext/rwin/aatree.h +55 -0
- data/ext/rwin/extconf.rb +47 -0
- data/ext/rwin/rw_api.c +2058 -0
- data/ext/rwin/rw_devices.c +215 -0
- data/ext/rwin/rw_gdiplus.h +278 -0
- data/ext/rwin/rw_graphics.c +1583 -0
- data/ext/rwin/rw_resources.c +1988 -0
- data/ext/rwin/rw_ubfuncs.c +281 -0
- data/ext/rwin/rw_windows.c +1936 -0
- data/ext/rwin/rwin.c +451 -0
- data/ext/rwin/rwin.h +442 -0
- data/lib/rwin.rb +820 -0
- data/lib/wrb.rb +20 -0
- data/lib/wrb/applications/frmdesigner/angle.cur +0 -0
- data/lib/wrb/applications/frmdesigner/angle2.cur +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Button.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Button.rb +34 -0
- data/lib/wrb/applications/frmdesigner/controls/Checkbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Checkbox.rb +10 -0
- data/lib/wrb/applications/frmdesigner/controls/Combobox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Combobox.rb +88 -0
- data/lib/wrb/applications/frmdesigner/controls/ComboboxEx.rb +97 -0
- data/lib/wrb/applications/frmdesigner/controls/Comboboxex.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.rb +11 -0
- data/lib/wrb/applications/frmdesigner/controls/Edit.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Edit.rb +8 -0
- data/lib/wrb/applications/frmdesigner/controls/Groupbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Groupbox.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Imagelist.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Imagelist.rb +115 -0
- data/lib/wrb/applications/frmdesigner/controls/Listbox.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Listbox.rb +77 -0
- data/lib/wrb/applications/frmdesigner/controls/Listview.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Listview.rb +157 -0
- data/lib/wrb/applications/frmdesigner/controls/Menu.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Menu.rb +198 -0
- data/lib/wrb/applications/frmdesigner/controls/Menubar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Menubar.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/MonthCalender.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Monthcalender.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Panel.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Panel.rb +30 -0
- data/lib/wrb/applications/frmdesigner/controls/Progressbar.rb +10 -0
- data/lib/wrb/applications/frmdesigner/controls/Radiobutton.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Radiobutton.rb +13 -0
- data/lib/wrb/applications/frmdesigner/controls/Rebar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Rebar.rb +162 -0
- data/lib/wrb/applications/frmdesigner/controls/Splitter.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Splitter.rb +66 -0
- data/lib/wrb/applications/frmdesigner/controls/Static.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Static.rb +9 -0
- data/lib/wrb/applications/frmdesigner/controls/Statusbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Statusbar.rb +103 -0
- data/lib/wrb/applications/frmdesigner/controls/Tabctrl.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Tabctrl.rb +136 -0
- data/lib/wrb/applications/frmdesigner/controls/Timer.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Timer.rb +36 -0
- data/lib/wrb/applications/frmdesigner/controls/Toolbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Toolbar.rb +165 -0
- data/lib/wrb/applications/frmdesigner/controls/Trackbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Trackbar.rb +34 -0
- data/lib/wrb/applications/frmdesigner/controls/Treeview.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Treeview.rb +107 -0
- data/lib/wrb/applications/frmdesigner/controls/Updown.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/Updown.rb +31 -0
- data/lib/wrb/applications/frmdesigner/controls/default.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/progressbar.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/controls/unselect.bmp +0 -0
- data/lib/wrb/applications/frmdesigner/fddialogs.rb +87 -0
- data/lib/wrb/applications/frmdesigner/fdesign.rb +1315 -0
- data/lib/wrb/applications/frmdesigner/fdmodules.rb +1394 -0
- data/lib/wrb/applications/frmdesigner/fdparseform.rb +197 -0
- data/lib/wrb/applications/frmdesigner/img13.bmp +0 -0
- data/lib/wrb/base.rb +1294 -0
- data/lib/wrb/combocommon.rb +77 -0
- data/lib/wrb/commctrlconst.rb +139 -0
- data/lib/wrb/commdlg.rb +77 -0
- data/lib/wrb/components/animate.rb +114 -0
- data/lib/wrb/components/bitmap.rb +116 -0
- data/lib/wrb/components/button.rb +134 -0
- data/lib/wrb/components/canvas.rb +266 -0
- data/lib/wrb/components/checkbox.rb +118 -0
- data/lib/wrb/components/choosecolordlg.rb +87 -0
- data/lib/wrb/components/choosefontdlg.rb +142 -0
- data/lib/wrb/components/clipboard.rb +174 -0
- data/lib/wrb/components/combobox.rb +282 -0
- data/lib/wrb/components/comboboxex.rb +574 -0
- data/lib/wrb/components/cursor.rb +91 -0
- data/lib/wrb/components/datetimepicker.rb +197 -0
- data/lib/wrb/components/ddeclient.rb +180 -0
- data/lib/wrb/components/ddeserver.rb +131 -0
- data/lib/wrb/components/dialog.rb +228 -0
- data/lib/wrb/components/edit.rb +412 -0
- data/lib/wrb/components/font.rb +35 -0
- data/lib/wrb/components/form.rb +65 -0
- data/lib/wrb/components/groupbox.rb +122 -0
- data/lib/wrb/components/header.rb +479 -0
- data/lib/wrb/components/hotkeyctrl.rb +72 -0
- data/lib/wrb/components/icon.rb +109 -0
- data/lib/wrb/components/imagelist.rb +396 -0
- data/lib/wrb/components/inifile.rb +97 -0
- data/lib/wrb/components/listbox.rb +149 -0
- data/lib/wrb/components/listview.rb +1467 -0
- data/lib/wrb/components/menu.rb +592 -0
- data/lib/wrb/components/menubar.rb +84 -0
- data/lib/wrb/components/monthcalender.rb +164 -0
- data/lib/wrb/components/openfilenamedlg.rb +147 -0
- data/lib/wrb/components/pager.rb +199 -0
- data/lib/wrb/components/panel.rb +103 -0
- data/lib/wrb/components/picture.rb +55 -0
- data/lib/wrb/components/printdlg.rb +148 -0
- data/lib/wrb/components/printdlgex.rb +117 -0
- data/lib/wrb/components/printer.rb +97 -0
- data/lib/wrb/components/progressbar.rb +140 -0
- data/lib/wrb/components/radiobutton.rb +49 -0
- data/lib/wrb/components/rebar.rb +830 -0
- data/lib/wrb/components/registry.rb +408 -0
- data/lib/wrb/components/richedit.rb +1181 -0
- data/lib/wrb/components/savefilenamedlg.rb +27 -0
- data/lib/wrb/components/scintilla.rb +1298 -0
- data/lib/wrb/components/scrollbar.rb +239 -0
- data/lib/wrb/components/splitter.rb +494 -0
- data/lib/wrb/components/static.rb +198 -0
- data/lib/wrb/components/statusbar.rb +490 -0
- data/lib/wrb/components/tabctrl.rb +686 -0
- data/lib/wrb/components/timer.rb +117 -0
- data/lib/wrb/components/toolbar.rb +1107 -0
- data/lib/wrb/components/tooltip.rb +651 -0
- data/lib/wrb/components/trackbar.rb +298 -0
- data/lib/wrb/components/treeview.rb +845 -0
- data/lib/wrb/components/updown.rb +198 -0
- data/lib/wrb/ddeml.rb +241 -0
- data/lib/wrb/documents/animate.html +46 -0
- data/lib/wrb/documents/bitmap.html +69 -0
- data/lib/wrb/documents/button.html +78 -0
- data/lib/wrb/documents/canvas.html +137 -0
- data/lib/wrb/documents/checkbox.html +77 -0
- data/lib/wrb/documents/choosecolordlg.html +29 -0
- data/lib/wrb/documents/choosefontdlg.html +31 -0
- data/lib/wrb/documents/clipboard.html +31 -0
- data/lib/wrb/documents/combobox.html +117 -0
- data/lib/wrb/documents/comboboxex.html +139 -0
- data/lib/wrb/documents/control.html +53 -0
- data/lib/wrb/documents/cursor.html +45 -0
- data/lib/wrb/documents/datetimepicker.html +70 -0
- data/lib/wrb/documents/ddeclient.html +33 -0
- data/lib/wrb/documents/ddeserver.html +26 -0
- data/lib/wrb/documents/dialog.html +78 -0
- data/lib/wrb/documents/edit.html +169 -0
- data/lib/wrb/documents/empty.html +11 -0
- data/lib/wrb/documents/favicon.png +0 -0
- data/lib/wrb/documents/font.html +38 -0
- data/lib/wrb/documents/form.html +63 -0
- data/lib/wrb/documents/groupbox.html +57 -0
- data/lib/wrb/documents/header.html +85 -0
- data/lib/wrb/documents/hotkeyctrl.html +42 -0
- data/lib/wrb/documents/icon.html +45 -0
- data/lib/wrb/documents/imagelist.html +101 -0
- data/lib/wrb/documents/images/button.png +0 -0
- data/lib/wrb/documents/images/checkbox.png +0 -0
- data/lib/wrb/documents/images/combobox.png +0 -0
- data/lib/wrb/documents/images/comboboxex.png +0 -0
- data/lib/wrb/documents/images/datetimepicker.png +0 -0
- data/lib/wrb/documents/images/edit.png +0 -0
- data/lib/wrb/documents/images/groupbox.png +0 -0
- data/lib/wrb/documents/images/hotkeyctrl.png +0 -0
- data/lib/wrb/documents/images/listbox.png +0 -0
- data/lib/wrb/documents/images/listview.png +0 -0
- data/lib/wrb/documents/images/menu.png +0 -0
- data/lib/wrb/documents/images/menubar.png +0 -0
- data/lib/wrb/documents/images/monthcalender.png +0 -0
- data/lib/wrb/documents/images/progressbar.png +0 -0
- data/lib/wrb/documents/images/radiobutton.png +0 -0
- data/lib/wrb/documents/images/rebar.png +0 -0
- data/lib/wrb/documents/images/richedit.png +0 -0
- data/lib/wrb/documents/images/splitter.png +0 -0
- data/lib/wrb/documents/images/static.png +0 -0
- data/lib/wrb/documents/images/statusbar.png +0 -0
- data/lib/wrb/documents/images/tabctrl.png +0 -0
- data/lib/wrb/documents/images/toolbar.png +0 -0
- data/lib/wrb/documents/images/tooltip.png +0 -0
- data/lib/wrb/documents/images/trackbar.png +0 -0
- data/lib/wrb/documents/images/treeview.png +0 -0
- data/lib/wrb/documents/images/updown.png +0 -0
- data/lib/wrb/documents/index.html +155 -0
- data/lib/wrb/documents/inifile.html +36 -0
- data/lib/wrb/documents/license.txt +22 -0
- data/lib/wrb/documents/listbox.html +96 -0
- data/lib/wrb/documents/listview.html +277 -0
- data/lib/wrb/documents/make_doc.rb +596 -0
- data/lib/wrb/documents/menu.html +144 -0
- data/lib/wrb/documents/menubar.html +54 -0
- data/lib/wrb/documents/monthcalender.html +48 -0
- data/lib/wrb/documents/openfilenamedlg.html +36 -0
- data/lib/wrb/documents/pager.html +63 -0
- data/lib/wrb/documents/panel.html +32 -0
- data/lib/wrb/documents/picture.html +48 -0
- data/lib/wrb/documents/printdlg.html +35 -0
- data/lib/wrb/documents/printdlgex.html +35 -0
- data/lib/wrb/documents/printer.html +40 -0
- data/lib/wrb/documents/progressbar.html +69 -0
- data/lib/wrb/documents/radiobutton.html +51 -0
- data/lib/wrb/documents/rebar.html +143 -0
- data/lib/wrb/documents/registry.html +36 -0
- data/lib/wrb/documents/richedit.html +232 -0
- data/lib/wrb/documents/samples/editimg.bmp +0 -0
- data/lib/wrb/documents/samples/editimg.iml +0 -0
- data/lib/wrb/documents/samples/fileimg.bmp +0 -0
- data/lib/wrb/documents/samples/fileimg.iml +0 -0
- data/lib/wrb/documents/samples/sample_button.rb +21 -0
- data/lib/wrb/documents/samples/sample_checkbox.rb +18 -0
- data/lib/wrb/documents/samples/sample_combobox.rb +18 -0
- data/lib/wrb/documents/samples/sample_comboboxex.rb +23 -0
- data/lib/wrb/documents/samples/sample_datetimepicker.rb +11 -0
- data/lib/wrb/documents/samples/sample_edit.rb +25 -0
- data/lib/wrb/documents/samples/sample_groupbox.rb +19 -0
- data/lib/wrb/documents/samples/sample_hotkeyctrl.rb +12 -0
- data/lib/wrb/documents/samples/sample_listbox.rb +12 -0
- data/lib/wrb/documents/samples/sample_listview.rb +32 -0
- data/lib/wrb/documents/samples/sample_menu.rb +21 -0
- data/lib/wrb/documents/samples/sample_menubar.rb +23 -0
- data/lib/wrb/documents/samples/sample_monthcalender.rb +11 -0
- data/lib/wrb/documents/samples/sample_progressbar.rb +14 -0
- data/lib/wrb/documents/samples/sample_radiobutton.rb +14 -0
- data/lib/wrb/documents/samples/sample_rebar.rb +25 -0
- data/lib/wrb/documents/samples/sample_richedit.rb +60 -0
- data/lib/wrb/documents/samples/sample_splitter.rb +33 -0
- data/lib/wrb/documents/samples/sample_static.rb +15 -0
- data/lib/wrb/documents/samples/sample_statusbar.rb +17 -0
- data/lib/wrb/documents/samples/sample_tabctrl.rb +19 -0
- data/lib/wrb/documents/samples/sample_toolbar.rb +29 -0
- data/lib/wrb/documents/samples/sample_tooltip.rb +50 -0
- data/lib/wrb/documents/samples/sample_trackbar.rb +30 -0
- data/lib/wrb/documents/samples/sample_treeview.rb +19 -0
- data/lib/wrb/documents/samples/sample_updown.rb +18 -0
- data/lib/wrb/documents/samples/sampleimg16.iml +0 -0
- data/lib/wrb/documents/samples/sampleimg32.iml +0 -0
- data/lib/wrb/documents/samples/samplemg16.png +0 -0
- data/lib/wrb/documents/samples/samplemg32.png +0 -0
- data/lib/wrb/documents/samples/wrb.ico +0 -0
- data/lib/wrb/documents/savefilenamedlg.html +19 -0
- data/lib/wrb/documents/scrollbar.html +60 -0
- data/lib/wrb/documents/splitter.html +96 -0
- data/lib/wrb/documents/static.html +84 -0
- data/lib/wrb/documents/statusbar.html +110 -0
- data/lib/wrb/documents/tabctrl.html +151 -0
- data/lib/wrb/documents/timer.html +43 -0
- data/lib/wrb/documents/toolbar.html +181 -0
- data/lib/wrb/documents/tooltip.html +131 -0
- data/lib/wrb/documents/trackbar.html +107 -0
- data/lib/wrb/documents/treeview.html +210 -0
- data/lib/wrb/documents/updown.html +85 -0
- data/lib/wrb/documents/wincontrol.html +258 -0
- data/lib/wrb/documents/window.html +499 -0
- data/lib/wrb/documents/wrb.css +228 -0
- data/lib/wrb/gmem.rb +26 -0
- data/lib/wrb/imecommon.rb +59 -0
- data/lib/wrb/listcommon.rb +185 -0
- data/lib/wrb/lzss.rb +126 -0
- data/lib/wrb/scrollinfo.rb +142 -0
- data/lib/wrb/toplevelcommon.rb +634 -0
- metadata +315 -0
|
@@ -0,0 +1,592 @@
|
|
|
1
|
+
require 'wrb'
|
|
2
|
+
|
|
3
|
+
module WR
|
|
4
|
+
module RC
|
|
5
|
+
MFT_STRING = 0x0000
|
|
6
|
+
#MFT_BITMAP = 0x0004
|
|
7
|
+
MFT_MENUBARBREAK = 0x0020
|
|
8
|
+
MFT_MENUBREAK = 0x0040
|
|
9
|
+
MFT_OWNERDRAW = 0x0100
|
|
10
|
+
MFT_RADIOCHECK = 0x0200
|
|
11
|
+
MFT_SEPARATOR = 0x0800
|
|
12
|
+
MFT_RIGHTORDER = 0x2000
|
|
13
|
+
MFT_RIGHTJUSTIFY = 0x4000
|
|
14
|
+
|
|
15
|
+
MFS_GRAYED = 0x0003
|
|
16
|
+
MFS_DISABLED = 0x0003
|
|
17
|
+
MFS_CHECKED = 0x0008
|
|
18
|
+
MFS_HILITE = 0x0080
|
|
19
|
+
MFS_ENABLED = 0x0000
|
|
20
|
+
MFS_UNCHECKED = 0x0000
|
|
21
|
+
MFS_UNHILITE = 0x0000
|
|
22
|
+
MFS_DEFAULT = 0x1000
|
|
23
|
+
|
|
24
|
+
MIIM_STATE = 0x0001
|
|
25
|
+
MIIM_ID = 0x0002
|
|
26
|
+
MIIM_SUBMENU = 0x0004
|
|
27
|
+
MIIM_CHECKMARKS = 0x0008
|
|
28
|
+
# MIIM_TYPE = 0x0010 # replaced by MIIM_BITMAP, MIIM_FTYPE, and MIIM_STRING.
|
|
29
|
+
MIIM_DATA = 0x0020
|
|
30
|
+
MIIM_STRING = 0x0040
|
|
31
|
+
MIIM_BITMAP = 0x0080
|
|
32
|
+
MIIM_FTYPE = 0x0100
|
|
33
|
+
|
|
34
|
+
HBMMENU_SYSTEM = 1
|
|
35
|
+
HBMMENU_MBAR_RESTORE = 2
|
|
36
|
+
HBMMENU_MBAR_MINIMIZE = 3
|
|
37
|
+
HBMMENU_MBAR_CLOSE = 5
|
|
38
|
+
HBMMENU_MBAR_CLOSE_D = 6
|
|
39
|
+
HBMMENU_MBAR_MINIMIZE_D = 7
|
|
40
|
+
HBMMENU_POPUP_CLOSE = 8
|
|
41
|
+
HBMMENU_POPUP_RESTORE = 9
|
|
42
|
+
HBMMENU_POPUP_MAXIMIZE = 10
|
|
43
|
+
HBMMENU_POPUP_MINIMIZE = 11
|
|
44
|
+
HBMMENU_CALLBACK = -1
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# A list of items that specify options or groups of options (a submenu) for an application.<br>
|
|
48
|
+
# If you want to set main-menu, use Menubar.
|
|
49
|
+
# <br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/menurc/resources">
|
|
50
|
+
# Menus and Other Resources section of Microsft Docs</a>
|
|
51
|
+
class Menu < RWin::Menu
|
|
52
|
+
|
|
53
|
+
include RC
|
|
54
|
+
include ModAutoloading
|
|
55
|
+
|
|
56
|
+
# The wrapper of idcmd of menu.
|
|
57
|
+
class Item
|
|
58
|
+
include RC
|
|
59
|
+
attr_reader :_menu
|
|
60
|
+
MENUITEMINFO = API::MENUITEMINFO
|
|
61
|
+
def initialize(menu, id)
|
|
62
|
+
@_menu = menu
|
|
63
|
+
@_idcmd = id #; dpp self, menu, id
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# def inspect()
|
|
67
|
+
# sprintf "#<%p: 0x%x idcmd=%p, caption=%p>", self.class, self.__id__, @_idcmd, caption
|
|
68
|
+
# end
|
|
69
|
+
|
|
70
|
+
def idcmd()
|
|
71
|
+
@_idcmd
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def index()
|
|
75
|
+
@_menu._index(self)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def caption()
|
|
79
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_STRING]
|
|
80
|
+
@_menu.GetMenuItemInfo(@_idcmd, nil, mii)
|
|
81
|
+
buff = TCHAR[mii.cch+=1]
|
|
82
|
+
mii.dwTypeData = buff
|
|
83
|
+
@_menu.GetMenuItemInfo(@_idcmd, nil, mii)
|
|
84
|
+
buff.to_s
|
|
85
|
+
end
|
|
86
|
+
def caption=(str)
|
|
87
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_STRING]
|
|
88
|
+
mii.dwTypeData = str.to_s.dup
|
|
89
|
+
mii.cch = str.size
|
|
90
|
+
@_menu.SetMenuItemInfo(@_idcmd, nil, mii)
|
|
91
|
+
str
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def bitmap=(bmp)
|
|
95
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_BITMAP]
|
|
96
|
+
mii.hbmpItem = bmp.is_a?(Integer) ? bmp : bmp._hbitmap
|
|
97
|
+
@_menu.SetMenuItemInfo(@_idcmd, nil, mii)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def image()
|
|
101
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_BITMAP | MIIM_DATA]
|
|
102
|
+
@_menu.GetMenuItemInfo(@_idcmd, nil, mii)
|
|
103
|
+
mii.dwItemData == API.int2uint(-1) ? nil : mii.dwItemData
|
|
104
|
+
end
|
|
105
|
+
def image=(idx)
|
|
106
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_BITMAP | MIIM_DATA]
|
|
107
|
+
if idx.nil?
|
|
108
|
+
mii.hbmpItem = 0
|
|
109
|
+
mii.dwItemData = -1
|
|
110
|
+
else
|
|
111
|
+
mii.hbmpItem = HBMMENU_CALLBACK
|
|
112
|
+
mii.dwItemData = idx
|
|
113
|
+
end
|
|
114
|
+
@_menu.SetMenuItemInfo(@_idcmd, nil, mii)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def menu() @_menu; end
|
|
118
|
+
alias parent menu
|
|
119
|
+
|
|
120
|
+
def delete()
|
|
121
|
+
@_menu._delete(index);
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def grayed() (_get_state() & 0x0001) !=0; end
|
|
125
|
+
def grayed=(flag) _set_state(0x0001, flag); end
|
|
126
|
+
|
|
127
|
+
def disabled() (_get_state() & 0x0002) != 0; end
|
|
128
|
+
def disabled=(flag) _set_state(0x0002, flag); end
|
|
129
|
+
|
|
130
|
+
def checked() (_get_state() & 0x0008) != 0; end
|
|
131
|
+
def checked=(flag) _set_state(0x0008, flag); end
|
|
132
|
+
|
|
133
|
+
def gettype()
|
|
134
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_FTYPE]
|
|
135
|
+
@_menu.GetMenuItemInfo(@_idcmd, false, mii)
|
|
136
|
+
mii.fType
|
|
137
|
+
end
|
|
138
|
+
def settype(type)
|
|
139
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_FTYPE]
|
|
140
|
+
mii.fType = type
|
|
141
|
+
@_menu.SetMenuItemInfo(@_idcmd, false, mii)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
private
|
|
145
|
+
def _get_state()
|
|
146
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_STATE]
|
|
147
|
+
@_menu.GetMenuItemInfo(@_idcmd, false, mii)
|
|
148
|
+
mii.fState
|
|
149
|
+
end
|
|
150
|
+
def _set_state(state, flag)
|
|
151
|
+
# old_state = _get_state()
|
|
152
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_STATE]
|
|
153
|
+
if flag == true
|
|
154
|
+
mii.fState |= state
|
|
155
|
+
elsif flag==false || flag.nil?
|
|
156
|
+
mii.fState &= ~state
|
|
157
|
+
else
|
|
158
|
+
raise ArgumentError, "flag must be true, false or nil", caller(2)
|
|
159
|
+
end
|
|
160
|
+
@_menu.SetMenuItemInfo(@_idcmd, false, mii)
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
alias text caption
|
|
164
|
+
alias text= caption=
|
|
165
|
+
end # Item
|
|
166
|
+
|
|
167
|
+
################### Main ##################
|
|
168
|
+
|
|
169
|
+
=begin
|
|
170
|
+
following methods are defined in the super class.
|
|
171
|
+
:singleton_methods
|
|
172
|
+
self.new(name, caption, menu-item_or_sub-menu, ... )
|
|
173
|
+
|
|
174
|
+
:instance_methods
|
|
175
|
+
GetMenuItemCount()
|
|
176
|
+
A low-level API function.
|
|
177
|
+
GetMenuItemID()
|
|
178
|
+
A low-level API function.
|
|
179
|
+
GetMenuItemInfo()
|
|
180
|
+
A low-level API function.
|
|
181
|
+
GetSubMenu()
|
|
182
|
+
A low-level API function.
|
|
183
|
+
SetMenuItemInfo(index, flag, menuiteminfo)
|
|
184
|
+
A low-level API function.
|
|
185
|
+
_hmenu()
|
|
186
|
+
Retreives a handle of this menu.
|
|
187
|
+
alive?()
|
|
188
|
+
Retreives whether this maneu is created or not.
|
|
189
|
+
|
|
190
|
+
# createmenu()
|
|
191
|
+
# createpopup()
|
|
192
|
+
# delete()
|
|
193
|
+
destroy()
|
|
194
|
+
Destroys this menu and all items and submenu.
|
|
195
|
+
|
|
196
|
+
# insert()
|
|
197
|
+
|
|
198
|
+
=end
|
|
199
|
+
|
|
200
|
+
MENUITEMINFO = API::MENUITEMINFO
|
|
201
|
+
include ModAccessor
|
|
202
|
+
attr_reader :_owner, :_type, :_image
|
|
203
|
+
attr_accessor :name, :idcmd
|
|
204
|
+
alias :_name :name
|
|
205
|
+
alias :_idcmd :idcmd
|
|
206
|
+
alias _destroy destroy
|
|
207
|
+
|
|
208
|
+
# self.[](name, caption, imagelist=nil, menu-item_or_sub-menu, ... )
|
|
209
|
+
# Creates a menu but not alive with given arguments.<br>
|
|
210
|
+
# A <i>menu-item</i> must be a pair of name and caption, and <i>name</i> must be a symbol.
|
|
211
|
+
def self.[](*args)
|
|
212
|
+
self.new(*args)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def initialize(*args)
|
|
216
|
+
raise TypeError, "1st argument must be Symbol." unless args[0].is_a?(Symbol)
|
|
217
|
+
super()
|
|
218
|
+
@name = args.shift
|
|
219
|
+
@_caption = args.shift if args[0].is_a?(String) #; dpp args
|
|
220
|
+
@_imagelist = args.shift if args[0].is_a?(Imagelist)
|
|
221
|
+
n = args.shift if args[0].is_a?(Integer)
|
|
222
|
+
n > 31 ? @_type = n : @_image = n if n
|
|
223
|
+
n = args.shift if args[0].is_a?(Integer) # Check twise
|
|
224
|
+
n > 31 ? @_type = n : @_image = n if n
|
|
225
|
+
@_menus = []
|
|
226
|
+
self[0, 0] = *args# ; dpp name, @_menus
|
|
227
|
+
# @_menus = args
|
|
228
|
+
end
|
|
229
|
+
#
|
|
230
|
+
def inspect()
|
|
231
|
+
sprintf "#<%p: 0x%x, %p>", self.class, self.__id__, name
|
|
232
|
+
# sprintf "#<%p: 0x%x, %p>", self.class, self.__id__ , _caption
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
# Creates as child or popup menu.
|
|
236
|
+
def createpopup()
|
|
237
|
+
super
|
|
238
|
+
_create_substance
|
|
239
|
+
self.imagelist = @_imagelist if @_imagelist
|
|
240
|
+
self
|
|
241
|
+
end
|
|
242
|
+
alias _createpopup createpopup
|
|
243
|
+
|
|
244
|
+
# Retreives a text of this menu.
|
|
245
|
+
def caption()
|
|
246
|
+
if alive?
|
|
247
|
+
return @_caption unless parent && parent.is_a?(Menu) && parent.index(self)
|
|
248
|
+
idx = parent.index(self)
|
|
249
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_STRING]
|
|
250
|
+
parent.GetMenuItemInfo(idx, true, mii)
|
|
251
|
+
buff = TCHAR[mii.cch+=1]
|
|
252
|
+
mii.dwTypeData = buff
|
|
253
|
+
parent.GetMenuItemInfo(idx, true, mii)
|
|
254
|
+
buff.to_s
|
|
255
|
+
else
|
|
256
|
+
@_caption
|
|
257
|
+
end
|
|
258
|
+
end
|
|
259
|
+
alias _caption caption
|
|
260
|
+
|
|
261
|
+
# Sets the text of this menu.
|
|
262
|
+
def caption=(s)
|
|
263
|
+
str = s.dup
|
|
264
|
+
if alive?
|
|
265
|
+
return unless parent
|
|
266
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_STRING]
|
|
267
|
+
mii.dwTypeData = str.to_s
|
|
268
|
+
mii.cch = str.size
|
|
269
|
+
parent.SetMenuItemInfo(parent.index(self), true, mii)
|
|
270
|
+
else
|
|
271
|
+
@_caption = str.to_s
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
def image
|
|
276
|
+
if alive?
|
|
277
|
+
return nil unless parent && parent.is_a?(Menu)
|
|
278
|
+
idx = parent.index(self)
|
|
279
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_BITMAP | MIIM_DATA]
|
|
280
|
+
parent.GetMenuItemInfo(idx, true, mii)
|
|
281
|
+
mii.dwItemData == API.int2uint(-1) ? nil : mii.dwItemData
|
|
282
|
+
else
|
|
283
|
+
@_image
|
|
284
|
+
end
|
|
285
|
+
end
|
|
286
|
+
def image=(im)
|
|
287
|
+
if alive?
|
|
288
|
+
return nil unless parent && parent.is_a?(Menu)
|
|
289
|
+
idx = parent.index(self)
|
|
290
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_BITMAP | MIIM_DATA]
|
|
291
|
+
if im.nil?
|
|
292
|
+
mii.hbmpItem = 0
|
|
293
|
+
mii.dwItemData = -1
|
|
294
|
+
else
|
|
295
|
+
mii.hbmpItem = HBMMENU_CALLBACK
|
|
296
|
+
mii.dwItemData = im
|
|
297
|
+
end
|
|
298
|
+
parent.SetMenuItemInfo(idx, true, mii)
|
|
299
|
+
else
|
|
300
|
+
@_image = im
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
# Counts number of items of this menu.
|
|
305
|
+
def count()
|
|
306
|
+
alive? ? GetMenuItemCount() : (@_menus ? @_menus.size : 0)
|
|
307
|
+
end
|
|
308
|
+
alias _count count
|
|
309
|
+
#
|
|
310
|
+
def _set_owner(owner)
|
|
311
|
+
@_owner = owner
|
|
312
|
+
self
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
# Inserts an item or a menu into specified index.<br>
|
|
316
|
+
# Give an array of [name, caption, image=nil, type=nil] as <i>item</i>.
|
|
317
|
+
def insert(idx, *arg)
|
|
318
|
+
if arg.size==1
|
|
319
|
+
arg = arg[0]
|
|
320
|
+
if arg.is_a?(Menu) #; dpp self, arg, arg.caption, arg.alive?, @_owner, parent
|
|
321
|
+
name = arg._name
|
|
322
|
+
capt = arg.caption
|
|
323
|
+
# type = arg._type
|
|
324
|
+
arg._set_owner_and_parent(@_owner, self)
|
|
325
|
+
_add_accessor(arg, name) unless respond_to?(name)
|
|
326
|
+
if alive?
|
|
327
|
+
arg.createpopup unless arg.alive? #; dpp idx, true, capt, arg
|
|
328
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_STRING|MIIM_SUBMENU|MIIM_DATA]
|
|
329
|
+
mii.dwTypeData = capt
|
|
330
|
+
mii.cch = capt.size
|
|
331
|
+
mii.hSubMenu = arg._hmenu
|
|
332
|
+
if arg._type
|
|
333
|
+
mii.fMask |= MIIM_FTYPE
|
|
334
|
+
mii.fType = arg._type
|
|
335
|
+
end
|
|
336
|
+
if arg._image
|
|
337
|
+
mii.fMask |= MIIM_BITMAP
|
|
338
|
+
mii.dwItemData = arg._image
|
|
339
|
+
mii.hbmpItem = HBMMENU_CALLBACK
|
|
340
|
+
else
|
|
341
|
+
mii.dwItemData = -1
|
|
342
|
+
end
|
|
343
|
+
super(idx, true, mii)
|
|
344
|
+
else #; dpp arg
|
|
345
|
+
@_menus.insert(idx, arg);
|
|
346
|
+
end
|
|
347
|
+
elsif arg.is_a?(Array)
|
|
348
|
+
if alive? #; dp "@%p, @_owner=%p", self, @_owner
|
|
349
|
+
image = type = nil
|
|
350
|
+
name, capt, n1, n2 = *arg # ; dpp arg; #name, capt, n1, n2, type
|
|
351
|
+
n1 > 31 ? type = n1 : image = n1 if n1
|
|
352
|
+
n2 > 31 ? type = n2 : image = n2 if n2
|
|
353
|
+
idcmd = @_owner.new_control_id #; dpp name, capt, idcmd, type
|
|
354
|
+
@_owner.set_msgtranslator(WM_COMMAND) if !@_owner.get_msgtranslator(WM_COMMAND)
|
|
355
|
+
@_owner.register_event(idcmd, WM_COMMAND, 0, "#{name}_clicked", "h")
|
|
356
|
+
|
|
357
|
+
mii = MENUITEMINFO[MENUITEMINFO::Size, MIIM_STRING | MIIM_ID | MIIM_DATA]
|
|
358
|
+
|
|
359
|
+
# buf = TCHAR[capt.size+1]
|
|
360
|
+
# buf[0,capt.size] = capt.encode(Encoding::UTF_16LE); dpp buf.to_s
|
|
361
|
+
mii.dwTypeData = capt.dup
|
|
362
|
+
mii.cch = capt.size+1; # dpp capt, mii.dwTypeData, mii.cch
|
|
363
|
+
mii.wID = idcmd
|
|
364
|
+
if type
|
|
365
|
+
mii.fMask |= MIIM_FTYPE
|
|
366
|
+
mii.fType = type
|
|
367
|
+
end
|
|
368
|
+
if image
|
|
369
|
+
mii.fMask |= MIIM_BITMAP
|
|
370
|
+
mii.dwItemData = image
|
|
371
|
+
mii.hbmpItem = HBMMENU_CALLBACK
|
|
372
|
+
else
|
|
373
|
+
mii.dwItemData = -1
|
|
374
|
+
end
|
|
375
|
+
super(idx, true, mii)
|
|
376
|
+
if accel=capt.split("\t")[1]
|
|
377
|
+
@_owner.register_keyaccel(accel, idcmd)
|
|
378
|
+
end
|
|
379
|
+
_add_accessor(idcmd, name) unless respond_to?(name)
|
|
380
|
+
else
|
|
381
|
+
@_menus.insert(idx, arg);
|
|
382
|
+
end
|
|
383
|
+
elsif arg==:sep
|
|
384
|
+
if alive?
|
|
385
|
+
idcmd = @_owner.new_control_id
|
|
386
|
+
super(idx, true, '_sep', idcmd, MFT_SEPARATOR)
|
|
387
|
+
else
|
|
388
|
+
@_menus.insert(idx, arg)
|
|
389
|
+
end
|
|
390
|
+
else
|
|
391
|
+
raise TypeError, "argument must be Menu or Array or :sep"
|
|
392
|
+
end
|
|
393
|
+
else
|
|
394
|
+
alive? ? super(idx, *arg) : @_menus.insert(idx, arg)
|
|
395
|
+
end
|
|
396
|
+
end
|
|
397
|
+
alias _insert insert
|
|
398
|
+
|
|
399
|
+
alias __delete__ delete
|
|
400
|
+
|
|
401
|
+
# Deletes specifired index of this menu, or deletes self when given no argument.
|
|
402
|
+
def delete(idx=nil)
|
|
403
|
+
raise ArgumentError, "Argument must be an Integer" if idx && !idx.is_a?(Integer)
|
|
404
|
+
unless alive?
|
|
405
|
+
if idx
|
|
406
|
+
@_menus.delete_at(idx)
|
|
407
|
+
else
|
|
408
|
+
@_parent._menus._delete(self)
|
|
409
|
+
end
|
|
410
|
+
return
|
|
411
|
+
end
|
|
412
|
+
if idx
|
|
413
|
+
raise ArgumentError, "Too large index: #{idx}" if idx > ModParent::ItemBaseID
|
|
414
|
+
obj = self[idx] #; dpp idx , obj
|
|
415
|
+
if obj.is_a?(Menu)
|
|
416
|
+
obj.count.times{|i| obj.delete(i)}
|
|
417
|
+
elsif accel=obj.caption.split("\t")[1]
|
|
418
|
+
@_owner.unregister_keyaccel(accel)
|
|
419
|
+
end
|
|
420
|
+
super(idx, true)
|
|
421
|
+
_delete_accessor_by_obj(obj)
|
|
422
|
+
else
|
|
423
|
+
if @_parent.is_a?(Menu)
|
|
424
|
+
@_parent._delete_accessor_by_obj(self)
|
|
425
|
+
@_parent._delete(@_parent.index(self))
|
|
426
|
+
else
|
|
427
|
+
self.destroy()
|
|
428
|
+
end
|
|
429
|
+
end
|
|
430
|
+
end
|
|
431
|
+
alias _delete delete
|
|
432
|
+
|
|
433
|
+
# []=(index, length, *arguments)<br>
|
|
434
|
+
# Inserts and replaces specified index and length of this menu with given arguments.
|
|
435
|
+
def []=(idx, *args)# dpp self, alive?, @_owner
|
|
436
|
+
len = args[0].is_a?(Integer) ? args.shift : 1
|
|
437
|
+
args = args[0] if args[0].is_a?(Array) #;dp "@%p, %p", alive?, args
|
|
438
|
+
n = 0
|
|
439
|
+
while i=args.shift
|
|
440
|
+
if i == :sep
|
|
441
|
+
_insert(idx + n, i)
|
|
442
|
+
elsif i.is_a?(Symbol)
|
|
443
|
+
ar = [i]
|
|
444
|
+
while args[0] &&
|
|
445
|
+
!args[0].is_a?(Symbol) && !args[0].is_a?(Menu) && !args[0].is_a?(Array)
|
|
446
|
+
ar << args.shift
|
|
447
|
+
end #; dpp ar
|
|
448
|
+
_insert(idx + n, ar)
|
|
449
|
+
elsif i.is_a?(Array) || i.is_a?(Menu) #; dpp self, name, alive?, @_owner, i
|
|
450
|
+
_insert(idx + n, i)
|
|
451
|
+
else
|
|
452
|
+
raise TypeError, "Unknown argument: #{i.inspect}"
|
|
453
|
+
end
|
|
454
|
+
n += 1
|
|
455
|
+
end
|
|
456
|
+
end
|
|
457
|
+
|
|
458
|
+
# Retreives an item or a menu specifiied <i>idx</i> in this menu.<br>
|
|
459
|
+
# The <i>idx</i> can be an index of items or an ID of menu-item.
|
|
460
|
+
def [](idx)
|
|
461
|
+
return @_menus[idx] unless alive?
|
|
462
|
+
if r=GetSubMenu(idx)
|
|
463
|
+
return r
|
|
464
|
+
elsif idx > ModParent::ItemBaseID
|
|
465
|
+
return Item.new(self, idx)
|
|
466
|
+
elsif id=GetMenuItemID(idx) #; dpp idx, id
|
|
467
|
+
return Item.new(self, id)
|
|
468
|
+
end
|
|
469
|
+
nil
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
# Appends the items or menus at last of this menu.
|
|
473
|
+
def <<(arg)
|
|
474
|
+
self[_count, 0] = arg
|
|
475
|
+
self
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
# Retreives an index of given object in this menu.<br>
|
|
479
|
+
# If no argument was given, retreives an index of this menu in the parent.
|
|
480
|
+
def index(obj=nil)
|
|
481
|
+
return parent._index(self) unless obj
|
|
482
|
+
if alive?
|
|
483
|
+
self.count.times{|i|
|
|
484
|
+
if obj.is_a?(Integer)
|
|
485
|
+
return i if GetMenuItemID(i) == obj
|
|
486
|
+
else
|
|
487
|
+
return i if GetSubMenu(i) == obj || GetMenuItemID(i) == obj.idcmd
|
|
488
|
+
end
|
|
489
|
+
}
|
|
490
|
+
nil
|
|
491
|
+
else
|
|
492
|
+
@_menus.index(obj)
|
|
493
|
+
end
|
|
494
|
+
end
|
|
495
|
+
alias _index index
|
|
496
|
+
|
|
497
|
+
# Retreives parent of this menu.
|
|
498
|
+
def parent()
|
|
499
|
+
@_parent
|
|
500
|
+
end
|
|
501
|
+
alias _parent parent
|
|
502
|
+
|
|
503
|
+
# Sets parent of this menu. Give a Menu as parent.
|
|
504
|
+
def parent=(prt) #;dpp self, prt, caller[0, 2]
|
|
505
|
+
_set_owner_and_parent(prt, prt)
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
# Gets an imagelist assigned to this menu.
|
|
509
|
+
def imagelist()
|
|
510
|
+
@_imagelist
|
|
511
|
+
end
|
|
512
|
+
alias _imagelist imagelist
|
|
513
|
+
|
|
514
|
+
# Assignes an imagelist to this menu.
|
|
515
|
+
def imagelist=(imglst)
|
|
516
|
+
@_imagelist ||= imglst #; dpp self, alive?, @_imagelist
|
|
517
|
+
if alive?
|
|
518
|
+
if @_imagelist
|
|
519
|
+
unless @_owner.respond_to?(:__drawitem__)
|
|
520
|
+
@_owner.register_event(WM_DRAWITEM, "__drawitem__", 'xs', DRAWITEMSTRUCT)
|
|
521
|
+
@_owner.instance_eval "
|
|
522
|
+
def __drawitem__(dis)
|
|
523
|
+
APP.hrsc2ref(dis.hwndItem).__send__(:__drawitem, dis)
|
|
524
|
+
end"
|
|
525
|
+
end
|
|
526
|
+
each{|i| i.imagelist ||= @_imagelist if i.is_a?(Menu)}
|
|
527
|
+
else
|
|
528
|
+
@_owner.unregister_event(WM_DRAWITEM, "__drawitem__")
|
|
529
|
+
end
|
|
530
|
+
end
|
|
531
|
+
end
|
|
532
|
+
|
|
533
|
+
# Creates as child or popup menu.
|
|
534
|
+
def create()
|
|
535
|
+
createpopup()
|
|
536
|
+
end
|
|
537
|
+
alias _create create
|
|
538
|
+
|
|
539
|
+
# Shows this menu at the specified coordiates on the owner window.
|
|
540
|
+
def popup(x, y)
|
|
541
|
+
@_owner.TrackPopupMenu(self, x, y)
|
|
542
|
+
end
|
|
543
|
+
alias _popup popup
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
# each(){|item| ... }
|
|
547
|
+
# Performs the block for each <i>item</i> in this menu as a block parameter.<br>
|
|
548
|
+
# An <i>item</i> may be a Menu or a Menu::Item.
|
|
549
|
+
def each()
|
|
550
|
+
_count.times{|i| yield self[i]}
|
|
551
|
+
end
|
|
552
|
+
alias _each each
|
|
553
|
+
|
|
554
|
+
# Clears all items and submenus.
|
|
555
|
+
def clear()
|
|
556
|
+
self.count.times{|i| self.delete(0)}
|
|
557
|
+
self
|
|
558
|
+
end
|
|
559
|
+
alias _clear clear
|
|
560
|
+
|
|
561
|
+
protected
|
|
562
|
+
def _set_owner_and_parent(onr, prt) #; dpp self, onr
|
|
563
|
+
onr.set_msgtranslator(WM_COMMAND) if onr && !onr.get_msgtranslator(WM_COMMAND)
|
|
564
|
+
@_owner = onr unless @_owner #; dp "@%p, @_owner=%p", self, onr
|
|
565
|
+
@_parent = prt
|
|
566
|
+
@_imagelist ||= prt.imagelist if prt.is_a?(Menu)
|
|
567
|
+
end
|
|
568
|
+
|
|
569
|
+
private
|
|
570
|
+
def __drawitem(dis)
|
|
571
|
+
return unless @_imagelist
|
|
572
|
+
cv = Canvas.new(dis.hDC)
|
|
573
|
+
cv.DrawImagelist(@_imagelist, dis.itemData, 1, 1)
|
|
574
|
+
end
|
|
575
|
+
|
|
576
|
+
def _create_substance() #; dpp name, @_menus
|
|
577
|
+
self[0, 0] = @_menus
|
|
578
|
+
@_menus = nil # recycle
|
|
579
|
+
self
|
|
580
|
+
end
|
|
581
|
+
|
|
582
|
+
def _define_access_method(name, obj)
|
|
583
|
+
if obj.is_a?(Integer)
|
|
584
|
+
instance_eval "def #{name}() Menu::Item.new(self, @_accessors[:#{name}]); end"
|
|
585
|
+
instance_eval "def _#{name}() Menu::Item.new(self, @_accessors[:#{name}]); end"
|
|
586
|
+
else
|
|
587
|
+
instance_eval "def #{name}() @_accessors[:#{name}]; end"
|
|
588
|
+
instance_eval "def _#{name}() @_accessors[:#{name}]; end"
|
|
589
|
+
end
|
|
590
|
+
end
|
|
591
|
+
end
|
|
592
|
+
end
|