Custom back ground for owner drawn menu
我使用mfc绘制自定义菜单,除了它周围有讨厌的边框。我如何摆脱边界或在边界上绘制?
例如:
(边缘周围的白色边框)
编辑:
我知道只剩下三个小时了,但是下面所有的事情都没有。我已经使用以下代码尝试了它们:
1 2 3 4 5 6 7 8 9 10 | HWND hwnd = m_pParent->getBrowserHWND(); uint32 style = GetWindowLong(hwnd, GWL_STYLE); SetWindowLong(hwnd, GWL_STYLE, style&~WS_BORDER); SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED); HookHwnd hook(hwnd); int res = TrackPopupMenu((HMENU)menu.GetHMenu(), TPM_LEFTALIGN|TPM_RIGHTBUTTON|TPM_RETURNCMD|TPM_RECURSE, xPos, yPos, 0, hwnd, NULL); SetWindowLong(hwnd, GWL_STYLE, style); |
实际上,根据freefaller的建议,它很可能只是一个简单的WS_BORDER。
尝试使用以下命令将其删除:
1 | ModifyStyle( WS_BORDER, 0, SWP_FRAMECHANGED ); |
我只使用WTL进行UI编码,距我看过MFC已经有好几年了,但它也非常接近Windows API。您可以检查菜单的创建标志。
调用GetWindowLong,具体地说,检查GWL_EXSTYLE中的WS_EX_CLIENTEDGE;这可能是造成您问题的原因。您可以始终对其进行OR运算,然后调用SetWindowLong并重新绘制菜单进行测试。
希望这对您有所帮助!
更新:
我想知道框架是否没有更新。尝试:
ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED);