タスクトレイにアイコンを表示する | |
手順 1. CxxxDlg.h に NOTIFYICONDATA 型の変数を作成。 例> NOTIFYICONDATA m_iconTray; 2. CxxxDlg.cpp
にアイコン用の識別子とメッセージ ID を定義。 3. ICON
リソースを作成(16x16)し ID を付ける。 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 ); | // タスクトレイに表示(追加) |
} |
タスクトレイのアイコンからショートカットを表示する | |
手順 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 の後に行うとメニュー表示前にメニュー項目のカスタマイズができます。 |
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 に書き込みます。 |
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 を書き込みます。 |