ホーム » 2015 » 9月 » 01

日別アーカイブ: 2015/09/01

2015年9月
 12345
6789101112
13141516171819
20212223242526
27282930  

カテゴリー

アーカイブ

ブログ統計情報

  • 99,614 アクセス


NotifyIcon クラスの使用

NotifyI.hxx


ダイアログまたは相当のクラスのヘッダに,NotifyIcon の変数を確保.
タスクトレイにアイコンを表示したい時は,NotifyIcon::Add または Mod を呼出す.
タスクトレイのアイコンを消したい時は,NotifyIcon::Del .


アニメーションの場合,NotifyIcon::StartAnimate とタイマで NotifyIcon::AnimateIcon .
アニメーションアイコンの登録は,NotifyIcon::AddIconA .登録されてない場合は,exe のアイコンと表示なしのトグル.
CAppDlg::OnInitDailog で StartAnimate ,CAppDlg::OnTimer で AnimateIcon だけで,exe アイコンが点滅する.


チップの設定は,NotifyIcon::SetTip .


最小化されたときに表示
  void CXxxxDlg::OnSize(UINT nType, int cx, int cy)
  {
    CDialog::OnSize(nType, cx, cy);
    ::FitWindow(this,&m_Image,0) ;
    if (nType == SIZE_MINIMIZED) {
      ShowWindow(SW_HIDE) ;
      NotifyI.Mod() ;
      }
    }


ヘッダとソースへの MESSAGE MAP の追加
  afx_msg LRESULT OnTrayCallback (WPARAM wParam,LPARAM lParam);
  ON_MESSAGE (WM_TRAY_CALLBACK, OnTrayCallback)
マウスのクリックによる動作
  LRESULT CXxxxDlg::OnTrayCallback (WPARAM wParam,LPARAM lParam)
  {
    UINT uID = (UINT)wParam;
    UINT uMouseMsg = (UINT)lParam;
    if (uMouseMsg == WM_LBUTTONDOWN) {
      AfxGetMainWnd()->ShowWindow(SW_SHOW) ;
      AfxGetMainWnd()->ShowWindow(SW_SHOWNORMAL) ;
      }
    if (uMouseMsg == WM_RBUTTONUP) {
      CPoint curPos ; ::GetCursorPos(&curPos) ;
      PopupMenu (NULL,IDR_POP_MENU,curPos,ID_XXXX) ;
      }
    return 0 ;
    }
WM_TRAY_CALLBACK は,NotifyI.hxx に定義済.


2015/09/03
メニュー表示後,デスクトップなどのクリックでメニューが消えなかったので検索すると,
SetForegroundWindow呼べば良いとのこと
    if (uMouseMsg == WM_RBUTTONUP) {
      CPoint curPos ; ::GetCursorPos(&curPos) ;
      SetForegroundWindow() ;
      PopupMenu (NULL,IDR_POP_MENU,curPos,ID_XXXX) ;
      }

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.