Dunque basilarmente le parti sono queste

codice:
	Menu = LoadMenu(hInstance,MAKEINTRESOURCE(ID_MENU));
	fakedialog = CreateDialogParam(hInstance,MAKEINTRESOURCE(FAKE_DIALOG),GetDesktopWindow(),DialogProc,NULL);
Se metto NULL come parentwindow fakedialog = NULL. Non sapendo come fare, ho messo il primo HWND che mi è venuto in mente.

codice:
	memset(&ref,0,sizeof(ref));
	ref.cbSize = sizeof(NOTIFYICONDATA);
	ref.uID = 10182;
	ref.uFlags = NIF_ICON|NIF_INFO|NIF_ICON|NIF_MESSAGE;
	ref.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1));
	ref.dwInfoFlags = NIIF_ERROR;
	ref.hWnd = fakedialog;
	ref.uVersion = NOTIFYICON_VERSION;
	ref.uCallbackMessage = WM_USER + 1100;
	strcpy_s(ref.szInfo,"Errore!");
	strcpy_s(ref.szInfoTitle,"errore");
	strcpy_s(ref.szTip,"errore");
Ed ecco la DialogProc che mai arriva ad eseguire le istruzioni.

codice:
INT_PTR CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if (uMsg == WM_USER + 1100)
		if (lParam == WM_RBUTTONDOWN)
		{
			SetForegroundWindow(fakedialog);
			TrackPopupMenuEx(Menu,TPM_RIGHTALIGN,100,100,fakedialog,NULL);
		}
	return 0;
}