2010-09-17 17 views
0

Im utilisant mfc pour dessiner un menu personnalisé, sauf qu'il a une bordure désagréable autour de lui. Comment puis-je me débarrasser de la frontière ou dessiner dessus?Fond d'écran personnalisé pour le menu dessiné par le propriétaire

Par exemple:

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

(la bordure blanche autour du bord)

Edit:

Je sais que trois heures gauche, mais aucune des choses ci-dessous fonctionnent. Je les ai essayé en utilisant le code suivant:

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

je fait comme la frontière. –

+0

Moi aussi, même si je comprends la nécessité de supprimer la bordure. N'importe quelle chance vous pouvez poster votre projet quelque part, ainsi nous pouvons bricoler avec le code ??? –

Répondre

0

Je n'utilise que WTL pour le codage de l'interface utilisateur, il est fait des années que j'ai regardé MFC, mais il est également très proche de l'API Windows. Vous pouvez vérifier les indicateurs de création pour le menu.

Appelez GetWindowLong et plus précisément, vérifiez GWL_EXSTYLE pour WS_EX_CLIENTEDGE; ce peut être la cause de votre problème. Vous pouvez toujours OU sortir et appeler SetWindowLong et redessiner le menu pour tester.

Espérons que cela aide!

Mise à jour: Je me demande si le cadre n'est pas mis à jour. Essayez:

ModifyStyleEx (WS_EX_CLIENTEDGE, 0, SWP_FRAMECHANGED);

+0

cela n'a pas fonctionné. :( – Lodle

+0

pouvez-vous poster votre code de création de menu? –

+0

Voir mise à jour ci-dessus - essayer ModifyStyleEx (WS_EX_CLIENTEDGE, 0, SWP_FRAMECHANGED); –

1

Actuellement, en plus des conseils de freefallr, il se peut que ce soit simplement un simple WS_BORDER.

Essayez de supprimer à l'aide:

ModifyStyle(WS_BORDER, 0, SWP_FRAMECHANGED); 
Questions connexes