Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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???

:uli

Klotzkopp ich lieb Dich :hodata :D

Jetzt klappt es, nur ich frage mich warum!

Kannste das vielleicht noch mal kurz erklären?

Original geschrieben von mogli_81

Klotzkopp ich lieb Dich :hodata :D

*rotwerd* Nicht doch... :D

Jetzt klappt es, nur ich frage mich warum!

Kannste das vielleicht noch mal kurz erklären?

Das TrackPopupMenu-Problem bei Trayicons ist angeblich ein Feature. Ich finde den KB-Artikel gerade nicht, aber hier steht etwas darüber, unter "NOTE on TrackPopupMenu":

http://www.codeproject.com/shell/systemtray.asp

Nun ja,

Microsoft halt...

Da sieht mans mal wieder, man muss nicht alles wissen, man muss nur wissen wo es steht :D

  • 4 Monate später...

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]

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.