タスクトレイにアイコンを表示する
 
手順
1. CxxxDlg.h に NOTIFYICONDATA
型の変数を作成。
   例> NOTIFYICONDATA m_iconTray;

2. CxxxDlg.cpp にアイコン用の識別子とメッセージ ID を定義。
  
例> #define TRAY_ID 1
       #define NOTIFY_TRAYICON ( WM_APP + 100 ) 

3. ICON リソースを作成(16x16)し ID を付ける。
   例> IDI_ICONTRAY

4. 下記 AddSystemTrayIcon() のコードを追加。

5. OnPaint() で AddSystemTrayIcon() を呼び出す。

   
   
void CxxxDlg::AddSystemTrayIcon()  
{  
   
ZeroMemory ( &m_iconTray, sizeof( NOTIFYICONDATA ));  // NOTIFYICONDATA は型
m_iconTray.cbSize = sizeof ( NOTIFYICONDATA ); // 構造体のサイズ 
m_iconTray.hWnd = m_hWnd;  // メッセージを受け取るウィンドウハンドル 
m_iconTray.uID = TRAY_ID;  // アイコンの識別子 
m_iconTray.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;  // フラグ 
m_iconTray.uCallbackMessage = NOTIFY_TRAYICON;  // ウィンドウに送られるメッセージ 
   
m_iconTray.hIcon = (HICON)LoadImage( AfxGetInstanceHandle(),  // IDI_ICONTRAY はアイコンリソースの ID
  MAKEINTRESOURCE ( IDI_ICONTRAY ), IMAGE_ICON, 16, 16, 0 );  // 表示するアイコンのハンドル
strcpy (m_iconTray.szTip, "HelpMessage" );  // アイコン上にマウスカーソルがあるとき表示する文字列
Shell_NotifyIcon ( NIM_ADD, &m_iconTray );  // タスクトレイに表示(追加) 
   
}  

TOPへ


タスクトレイのアイコンからショートカットを表示する
手順
1. Menu リソースを作成し、ID を付ける。
   例>
IDR_MENU_TASK

2. DefWindowProc にてマウスイベントを取得し、任意の動作で mySelectMenu を実行する。

3. メニュー表示後は、通常のメニューと同じ手順で、動作をつける。

 
   
LRESULT CHelpCallClientDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)  
{  
   
switch (lParam) { // lParam でよいのかなぁ?これで動いているからいいか?
case WM_LBUTTONDOWN:  
mySelectMenu();  
break;  
}  
   
Return;  
   
}  
   
   
void CxxxDlg::mySelectMenu()  
{  
   
CMenu myMenu;  
POINT point;  
   
SetForegroundWindow();  
myMenu.LoadMenu(IDR_MENU_TASK); // メニューリソースを呼び出す(関連付ける?)
CMenu *mySubmenu = myMenu.GetSubMenu(0); // メニューの項目をポップアップとして使用するので、SubMenu として取得
   
GetCursorPos(&point);  // マウスの座標取得
   
mySubmenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this); // 表示
   
PostMessage(WM_NULL);  
return;  
   
}  
   
備考
ModifyMenu や DeleteMenu を GetSubMenu の後に行うとメニュー表示前にメニュー項目のカスタマイズができます。

TOPへ


INI ファイルの読み取り - GetPrivateProfileString の使用方法
INI ファイル(初期化ファイル)は次の形式のテキストファイルです。

  [section]
  key=string
構文  
GetPrivateProfileString (lpAppName , lpKeyName , lpDefault , lpReturnedString , nSize , lpFileName)
lpAppName  INI ファイルの section
lpKeyName  INI ファイルの Key
lpDefault  取得しようとした値が NULL の場合、この値が lpReturnedString に保存されます
lpReturnedString  取得したデータ格納領域
nSize  lpReturnedString のサイズ
lpFileName INI ファイル名
   
説明
lpFileName の lpAppName section の lpKeyName Key の string を lpReturnedString に書き込みます。string が NULL の時は、lpDefault を lpReturnedString に書き込みます。

TOPへ


INI ファイルの書き込み - WritePrivateProfileString の使用方法
INI ファイル(初期化ファイル)は次の形式のテキストファイルです。

  [section]
  key=string
構文  
WritePrivateProfileString(lpAppName , lpKeyName , lpString , lpFileName)
lpAppName  INI ファイルの section
lpKeyName  INI ファイルの Key
lpString  登録する文字列
lpFileName INI ファイル名
   
説明
lpFileName の lpAppName section の lpKeyName Key に lpString を書き込みます。

TOPへ