Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Transparent Popup Menu

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.11.2006, 14:08 Uhr
CppProgrammer



Hallo
Ich versuche schon seit einiger Zeit ein Popup Menu transparent zu machen.
Im Internet bin ich hierzu auf diese Seite gestoßen. Ich hab jedoch das Gefühl dass dieser Code nur auf Win2k funktioniert und nicht auf meinem WinXP+SP2 (VC++ 6.0). Zumindest konnte ich den Code weder im Demo Projekt noch einzeln kompilieren.
Mein Popup Menu öffne ich mit folgender Funktion:

C++:
bool TrackPopupMenu(CWnd* pWnd, UINT nIDResource, UINT nFlags=TPM_LEFTALIGN|TPM_RIGHTBUTTON)
{
    CPoint CurPos;  CMenu* MMnu = new CMenu();
    if(!MMnu->LoadMenu(nIDResource)){ delete MMnu; return false; }
    GetCursorPos(&CurPos);
    MMnu->GetSubMenu(0)->TrackPopupMenu(nFlags, CurPos.x, CurPos.y, pWnd);
    MMnu->DestroyMenu();
    delete MMnu;
    return true;
}


Normale Fenster auf die ich auch ein Handle hab kann ich mit dieser Funktion transparent machen:

C++:
BOOL MakeWindowTransparent(HWND hWnd, int value=255)
{
    if(value > 255) value = 255;
    if(value < 0) value = 0;

    typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD);
    static PSLWA pSetLayeredWindowAttributes = NULL;
    static BOOL initialized = FALSE;
    #define WS_EX_LAYERED           0x00080000    
    #define LWA_COLORKEY            0x00000001
    #define LWA_ALPHA               0x00000002
    
    HMODULE hDLL = LoadLibrary ("user32");
    pSetLayeredWindowAttributes = (PSLWA) GetProcAddress(hDLL, "SetLayeredWindowAttributes");
    if(pSetLayeredWindowAttributes == NULL) return FALSE;
    SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
    if(GetLastError()) return FALSE;
    int result = pSetLayeredWindowAttributes (hWnd, RGB(200, 200, 200), (int)(value), LWA_ALPHA);
    
    return result;
}


Hat irgendjemand vielleicht etwas Code oder ne Idee wie man ein solches transparentes Menu umsetzen kann?

Danke schon mal.

Dieser Post wurde am 26.11.2006 um 14:18 Uhr von CppProgrammer editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.11.2006, 17:45 Uhr
xXx
Devil


1. Copy & Past ist net guuut.
2. Crosspostin auch net ...
3. Was für Fehler bekommst du denn wenn du das Projekt von www.codeproject.com kompilierst?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: