我有点困惑,MSDN http://msdn.microsoft.com/en-us/library/windows/desktop/ms647575%28v=vs.85%29.aspx中的 menuinfo 结构说:
hbrBack
Type: HBRUSH
A handle to the brush to be used for the menu's background.
所以...我怎样才能获得必要的画笔句柄?,我看不到画笔对象的任何句柄方法...是画笔,这令人困惑。
而且,我不能只使用位图作为菜单背景吗?我尝试使用位图句柄,但菜单背景没有改变。
更新
此代码不起作用,不会更改背景颜色。
Public Sub SetMenuBackground()
MenuHandle = GetSystemMenu(form.Handle, False)
Dim brush As IntPtr =
CreateSolidBrush(CUInt(ColorTranslator.ToWin32(Color.Red)))
Dim mi As New MenuInfo
mi.cbSize = Marshal.SizeOf(GetType(MenuInfo))
mi.fMask = &H2 ' MIM_BACKGROUND
mi.hbrBack = brush
SetMenuInfo(MenuHandle, mi)
End Sub
API函数和结构:
<DllImport("user32.dll")> _
Private Shared Function SetMenuInfo(
ByVal hmenu As IntPtr,
<[In]> ByRef lpcmi As MenuInfo
) As Boolean
End Function
Private Structure MenuInfo
Dim cbSize As Int32
Dim fMask As Int32
Dim dwStyle As Int32
Dim cyMax As Int32
Dim hbrBack As IntPtr
Dim dwContextHelpID As Int32
Dim dwMenuData As Int32
Public Sub New(ByVal owner As Control)
cbSize = Marshal.SizeOf(GetType(MENUINFO))
End Sub
End Structure