Winapi VB6:子类窗体不接收MF_OWNERDRAW菜单项的WM_DRAWITEM消息

Winapi VB6:子类窗体不接收MF_OWNERDRAW菜单项的WM_DRAWITEM消息,winapi,vb6,Winapi,Vb6,我有一个旧的,旧的,VB6遗留系统要维护。此系统通过调用CreatePopupMenu和InsertMenuItem创建弹出菜单。他们现在希望系统在这些弹出菜单中显示动态颜色方块=颜色选择器 我正在使用以下代码创建菜单项: InsertMenuItem(hMenu, lItem, MF_BYPOSITION Or MF_OWNERDRAW, lpmii) 其中,lItem是humenu中的项索引,lpmii是MENUITEMINFO结构 我的问题是,创建此菜单的表单没有收到我的WM_DRAWI

我有一个旧的,旧的,VB6遗留系统要维护。此系统通过调用CreatePopupMenu和InsertMenuItem创建弹出菜单。他们现在希望系统在这些弹出菜单中显示动态颜色方块=颜色选择器

我正在使用以下代码创建菜单项:

InsertMenuItem(hMenu, lItem, MF_BYPOSITION Or MF_OWNERDRAW, lpmii)
其中,lItem是humenu中的项索引,lpmii是MENUITEMINFO结构

我的问题是,创建此菜单的表单没有收到我的WM_DRAWITEM消息。我在调用TrackPopupMenuEx时传递窗口的hWnd,并使用SetWindowLong对其进行子类化

我做错了什么?

fByPosition的第三个参数是BOOL类型。它控制uItem的含义,不能用于启用菜单项的所有者绘图。要启用菜单项的所有者绘图,必须将MIIM_FTYPE标志添加到MENUITEMINFO::fMask,并为MENUITEMINFO::FTYPE指定MFT_OWNERDRAW值

有关更多信息,请参见。

fByPosition的第三个参数为BOOL类型。它控制uItem的含义,不能用于启用菜单项的所有者绘图。要启用菜单项的所有者绘图,必须将MIIM_FTYPE标志添加到MENUITEMINFO::fMask,并为MENUITEMINFO::FTYPE指定MFT_OWNERDRAW值


有关更多信息,请参见。

哦,太尴尬了——我不知道国旗是从哪里来的。我一定是工作时间太长了。不过谢谢,你的解决方案非常有效!哦,太尴尬了-我不知道这些旗子是从哪里来的。我一定是工作时间太长了。不过谢谢,你的解决方案非常有效!