我使用mfc绘制自定义菜单,除了它周围有一个讨厌的边框。我如何摆脱边界或划过它?
例如:
(边缘周围的白色边框)
编辑:
我知道它只剩下三个小时,但下面没有任何工作。我使用以下代码尝试了它们:
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);
答案 0 :(得分:1)
实际上,对于freefallr的建议,它可能只是一个简单的WS_BORDER。
尝试使用以下方法将其删除:
ModifyStyle( WS_BORDER, 0, SWP_FRAMECHANGED );
答案 1 :(得分:0)
我只使用WTL进行UI编码,自从我看过MFC已经有好几年了,但它也非常接近Windows API。您可以检查菜单的创建标志。
调用GetWindowLong,具体来说,检查GWL_EXSTYLE是否为WS_EX_CLIENTEDGE;这个可能是导致问题的原因。您可以随时将其输出并调用SetWindowLong并重新绘制菜单以进行测试。
希望这有一些帮助!
更新: 我想知道框架是否没有更新。尝试:
ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED);