2010-09-17 50 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); 
相關問題