时间: 2021-07-31 作者:daque
属性: 菜单总体作风
public property get style() as menuuserstyle
style = menustyle
end property
public property let style(byval nmenustyle as menuuserstyle)
menustyle = nmenustyle
select case nmenustyle
case style_windows ' windows 默许作风
set barimage = loadpicture()
barwidth = 20
barstyle = lbs_none
barstartcolor = getsyscolor(color_menu)
barendcolor = barstartcolor
selectscope = iss_icon_text
textenabledcolor = getsyscolor(color_menutext)
textdisabledcolor = getsyscolor(color_graytext)
textselectcolor = getsyscolor(color_highlighttext)
iconstyle = iis_none
edgestyle = ises_solid
edgecolor = getsyscolor(color_highlight)
fillstyle = isfs_solidcolor
fillstartcolor = edgecolor
fillendcolor = fillstartcolor
bkcolor = getsyscolor(color_menu)
sepcolor = textdisabledcolor
sepstyle = mss_default
case style_xp ' xp 作风
set barimage = loadpicture()
barwidth = 20
barstyle = lbs_none
barstartcolor = getsyscolor(color_menu)
barendcolor = barstartcolor
selectscope = iss_icon_text
textenabledcolor = getsyscolor(color_menutext)
textdisabledcolor = getsyscolor(color_graytext)
textselectcolor = textenabledcolor
iconstyle = iis_shadow
edgestyle = ises_solid
edgecolor = rgb(49, 106, 197)
fillstyle = isfs_solidcolor
fillstartcolor = rgb(180, 195, 210)
fillendcolor = fillstartcolor
bkcolor = getsyscolor(color_menu)
sepcolor = rgb(192, 192, 192)
sepstyle = mss_solid
case style_shade ' 突变作风
set barimage = loadpicture()
barwidth = 20
barstyle = lbs_verticalcolor
barstartcolor = vbblack
barendcolor = vbwhite
selectscope = iss_icon_text
textenabledcolor = getsyscolor(color_menutext)
textdisabledcolor = getsyscolor(color_graytext)
textselectcolor = getsyscolor(color_highlighttext)
iconstyle = iis_none
edgestyle = ises_none
edgecolor = getsyscolor(color_highlight)
fillstyle = isfs_horizontalcolor
fillstartcolor = vbblack
fillendcolor = vbwhite
bkcolor = getsyscolor(color_menu)
sepcolor = textdisabledcolor
sepstyle = mss_default
case style_3d ' 3d 立体作风
set barimage = loadpicture()
barwidth = 20
barstyle = lbs_none
barstartcolor = getsyscolor(color_menu)
barendcolor = barstartcolor
selectscope = iss_text
textenabledcolor = getsyscolor(color_menutext)
textdisabledcolor = getsyscolor(color_graytext)
textselectcolor = vbblue
iconstyle = iis_raised
edgestyle = ises_sunken
edgecolor = getsyscolor(color_highlight)
fillstyle = isfs_none
fillstartcolor = edgecolor
fillendcolor = fillstartcolor
bkcolor = getsyscolor(color_menu)
sepcolor = textdisabledcolor
sepstyle = mss_default
case style_colorful ' 炫彩作风
set barimage = frmmenu.picture
barwidth = 20
barstyle = lbs_image
barstartcolor = getsyscolor(color_menu)
barendcolor = barstartcolor
selectscope = iss_icon_text
textenabledcolor = vbblue
textdisabledcolor = rgb(49, 106, 197)
textselectcolor = vbred
iconstyle = iis_none
edgestyle = ises_dot
edgecolor = vbblack
fillstyle = isfs_verticalcolor
fillstartcolor = vbyellow
fillendcolor = vbgreen
bkcolor = rgb(230, 230, 255)
sepcolor = vbmagenta
sepstyle = mss_dashdotdot
end select
end property
这个类模块中包括了百般属性和本领及对于菜单的少许列举典型,我想夸大的有以次几点:
1、在createmenu本领顶用setwindowlong从新设置了frmmenu的窗口进口因变量的地方,menuwndproc是规范模块中的一个因变量,即是处置动静的谁人因变量。
2、additem这个本领是增添菜单项的,运用一个叫作myiteminfo的动静数组保存菜单项的实质,在“画”菜单项的功夫要用到它。在additem本领的结果,将菜单项的ftype树立成了mft_ownerdraw,也即是主人画图,这一步最要害,由于将菜单项树立成了owner draw,windows将不会替咱们写入,不会替咱们绘图标,十足都由咱们本人来。
3、在popupmenu本领中,挪用了api因变量中的trackpopupmenu,看到第6个参数了吗?将处置菜单动静的窗口树立成了frmmenu,而咱们又对frmmenu举行了子类处置,十足都在咱们的控制之中。
4、牢记要在class_terminate中恢复frmmenu的窗口进口因变量的地方,并开释和菜单关系的资源。
好了,类模块仍旧ok了,大师大概对这个菜单类有了更多的领会,也看到了它的属性和本领。如何样?还算比拟充分吧。即使感触不够充分的话,本人加就好了,呵呵。然而,最中心的局部还不在这边,而是在谁人处置动静的因变量,也即是menuwndproc,它将实行搀杂地“画”菜单的工作以及处置百般菜单事变。看看右边的震动条,仍旧够窄了,下一篇再计划吧。 :)