4

私はバックグラウンドでいくつかの操作を行う小さなアプリケーションを書きました。

ユーザーの注意を必要としないので、アプリケーションをシステムトレイに送りたいのですが、誰かがそれをクリックすると、ウィンドウが再びポップアップするはずです。

問題は、私がやりたいことをすべて実行するMFCプログラム(ダイアログ)を作成したことです。そして今、私はそれをトレイに送る方法を見つける必要があります。

タイプ:MFC(ダイアログウィンドウ)言語:C ++ IDE:Visual Studio 2012

私がこれをどのように行うことができるかについて何かアイデアがありますか?または、素敵なチュートリアルや必要な関数/クラスを知っていますか?

私はすでにcodeprojects.comとgoogleで検索しましたが、これについてはあまりないようです。ありがとう。

編集1:

私はこのようなことを試みました:

HWND hMainWindow = this->GetSafeHwnd();
HICON hProgramIcon = this->GetIcon(false);
char szTip[16] = "Tracker"; 
nidTrayIcon.cbSize = sizeof(nidTrayIcon); 
nidTrayIcon.hIcon = hProgramIcon; 
nidTrayIcon.hWnd = hMainWindow; 
nidTrayIcon.uCallbackMessage = (WM_USER + 1); 
nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nidTrayIcon.uID = 0x0200; 
strcpy_s((char*)nidTrayIcon.szTip,16, szTip2);
nidTrayIcon.szTip[strlen(szTip)] = '\0'; 
Shell_NotifyIcon(NIM_ADD, &nidTrayIcon);

このコードを実行すると、アプリケーションがコード「0x03」でシャットダウンします(パスが見つかりません...)

編集2:

this->ShowWindow(SW_HIDE);

また、動作しません。同じ問題。

4

1 に答える 1

-1

NotifyIconクラスを探しています:http: //msdn.microsoft.com/en-gb/library/system.windows.forms.notifyicon.aspx

そしてここにチュートリアルがあります:http: //alanbondo.wordpress.com/2008/06/22/creating-a-system-tray-app-with-c/

つまり、アプリケーションをシステムトレイに追加するだけでは、UIのアイデアは非常に悪くなります。これは、Windows 95/98の時代には非常に人気があり、Microsoftは、誰もがコピーして貼り付けた実用的なコード例を提供してくれました。すぐに、システムトレイで魚と目が泳ぎました。そして、トレイはどんどんいっぱいになり、それゆえ完全に役に立たなくなりました。

アプリケーションがユーザーの注意を必要としないことを実行している場合は、それをサービスにするか、ユーザーがダイアログをタスクバーに最小化してダイアログに進行状況バーを表示できるようにします。このように、タスクバーアイコンにカーソルを合わせると、ユーザーは進行状況を確認できます。

システムを使用して、役立つ通知を表示してみてください。アイコンがユーザーの現在の作業(ネットワーク接続など)に影響を与える可能性のあるシステムレベルのアクティビティを伝える場合にのみ、アイコンを追加します。それ以外の場合は、システムトレイを乱雑にしないでください。システムトレイで跳ねるバニーを見るのに注意が必要な作業(あなたはそうは思わないと言った)から目を離したくありません。

于 2013-01-16T15:31:43.283 に答える