Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich habe eine Anwendung, die als Icon in der Trayleiste läuft.

Wenn ich nun mit der rechten Maustaste auf das Icon klicke soll ein Kontextmenü aufpoppen.

Das klappt auch einigermaßen, allerdings geschieht das nicht bei jedem Rechtsklick auf das Icon.

Es kommt also vor, dass man drei bis vier mal aud das Icon klicken muss, bis sich das Kontextmenü zeigt...

Hier mal der Code:

void CMainFrame::OnAusblenden() //Versteckt Anwendung und zeigt Icon im Tray

{

HICON hIcon=AfxGetApp() ->LoadIcon(IDR_MAINFRAME);

ShowWindow( SW_HIDE );

NOTIFYICONDATA nid;

memset( &nid, 0, sizeof( nid));

nid.cbSize = sizeof(NOTIFYICONDATA);

nid.hWnd = GetSafeHwnd();

nid.uID = 0;

nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;

nid.uCallbackMessage = UM_TRAY_ACTION;

wsprintf( nid.szTip, TEXT("Monitor"));

nid.hIcon = hIcon;

Shell_NotifyIcon( NIM_ADD, &nid);

}

// Wird aufgerufen wenn Nachricht an Icon geht

void CMainFrame::OnTrayAction(WPARAM wParam, LPARAM lParam)

{

//bei Doppelklick Anwendung zeigen und Icon entfernen

//Das klappt einwandfrei

if( lParam == WM_LBUTTONDBLCLK )

{

NOTIFYICONDATA nid;

memset( &nid, 0, sizeof( nid));

nid.cbSize = sizeof(NOTIFYICONDATA);

nid.hWnd = GetSafeHwnd();

nid.uID = 0;

Shell_NotifyIcon( NIM_DELETE, &nid);

ShowWindow( SW_SHOW );

}

//Bei Rechtsklick Kontextmenü aufrufen, klappt nur manchmal

else if(lParam == WM_RBUTTONDOWN)

{

CPoint Point;

GetCursorPos(&Point);

SetForegroundWindow();

CMenu menu;

menu.LoadMenu(IDR_MENU1);

menu.GetSubMenu(0)->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON,Point.x ,Point.y, AfxGetMainWnd(),NULL); }

}

Hat jemand ne Idee warum das nicht immer klappt???

  • 4 Monate später...
Geschrieben

Ich hab da irgendwie noch Probleme mit. Bei mir stellt er das Popupmenü

nur ca 2mm breit dar, sodass man nichts lesen kann. Man kann aber trotzdem

die einzelnen Einträge auswählen:confused:


if(lParam == WM_RBUTTONDOWN)
{
POINT Point;
GetCursorPos(&Point);

SetForegroundWindow(hWnd);
TrackPopupMenu(LoadMenu(g_.hInst,MAKEINTRESOURCE(IDR_MENU1)),
TPM_CENTERALIGN,
Point.x,Point.y,0,hWnd,0);
}
[/PHP]

Geschrieben

::TrackPopupMenu verlangt ein HMENU, dass du aus CreatePopupMenu oder GetSubMenu erhalten hast. Hol dir das nullte SubMenu des geladenen Menüs und verwende dessen HMENU für TrackPopupMenu.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...