2010-09-17 63 views
0

使用mfc绘制自定义菜单,除了它周围有一个令人讨厌的外观边框。我如何摆脱边界或划过边界?为所有者绘制的菜单定制后台地面

例如:

http://d.imagehost.org/0661/menuborder.png

(周围边缘的白色边框)

编辑:

我知道留下了它的只有三个小时,但没有下文的工作的事情。我曾尝试使用下面的代码尝试过:

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); 
+3

其实我喜欢的边框。 – 2010-11-15 04:17:47

+0

我也是,虽然我明白需要删除边框。任何机会你可以发布你的项目的地方,所以我们可以修改代码? – 2010-11-16 19:23:03

回答

0

我只用WTL的UI编码,它已经有好几年我看过MFC,但它也是非常接近的Windows API。您可以检查菜单的创建标志。

调用GetWindowLong并特别地,检查GWL_EXSTYLE是否为WS_EX_CLIENTEDGE;这可能是您的问题的原因。您可以随时将其输出并致电SetWindowLong并重新绘制菜单进行测试。

希望这有些帮助!

更新: 我在想如果框架没有被更新。尝试:

ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED);

+0

它没有工作。 ( – Lodle 2010-11-17 08:53:39

+0

)你可以发布你的菜单创建代码吗? – 2010-11-17 10:19:04

+0

请参阅上面的更新 - 尝试ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED); – 2010-11-17 11:04:51

1

实际上,对于自由落体的建议来说,它可能只是一个简单的WS_BORDER。

尝试使用其取出:

ModifyStyle(WS_BORDER, 0, SWP_FRAMECHANGED); 
相关问题