使用WinAPI创建自定义菜单的最佳方法是什么

时间:2019-07-19 11:33:28

标签: c++ winapi menu controls

由于无法进行深度自定义(例如渐变背景)win32控件(例如按钮,菜单项等),因此许多人建议创建自己的自定义控件。

如果需要自定义按钮,我将使用WM_MOUSEMOVE,WM_LBUTTONDOWN和阴影缓冲区。我将在阴影缓冲区上绘制所有控件,然后将BitBlt(hDC,...)用于我的窗口。

但是,如果要创建自定义菜单,则必须预见可以在客户区域之外绘制菜单。 首先,我需要在客户区域之外进行鼠标跟踪。 SetCapture(hWnd)似乎是一个糟糕的解决方案,因为它会阻止鼠标跟踪下面的窗口。 然后,我需要在窗口外部绘制/擦除项目。用InvalidateRect(NULL,NULL,TRUE / FALSE)擦除似乎也是一个不好的解决方案,因为它会引起闪烁。

使用WinAPI创建自定义菜单的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

可以使用TrackPopupMenu()函数显示可以出现在屏幕上任何地方的运行时菜单。使用CreateMenu(),AppendMenu()等创建菜单,然后使用TrackPopupMenu()显示菜单。