こんばんは。補足頂きました。
Shell_NotifyIconで出来るそうです。
http://msdn.microsoft.com/en-us/library/bb762159(VS.85).aspx
http://msdn.microsoft.com/ja-jp/library/cc440880.aspx
Shell_NotifyIconで検索すると、使用例が沢山出て来ますので、其方を参照された方が手っ取り早いかもしれません。
一応当方からもサンプルを出させて頂きます。ウィンドウのクライアント領域を左クリックしてタスクアイコン化、タスクアイコン中に左クリックでウィンドウへ戻します。
以下参考程度に。
//タスクアイコン中に送られるメッセージ
const DWORD WM_ICONTRAY = WM_USER + 1;
//hWndをタスクアイコンに追加する
static VOID AddTaskBar(HWND hWnd)
{
NOTIFYICONDATA nid = {sizeof(nid)};
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.hWnd = hWnd;
nid.uCallbackMessage = WM_ICONTRAY;
nid.hIcon = ::LoadIcon(NULL, IDI_WINLOGO);
::_tcscpy(nid.szTip, TEXT("タスク化テスト"));
::Shell_NotifyIcon(NIM_ADD, &nid);
}
//hWndをタスクアイコンから外す
static VOID RemoveTaskBar(HWND hWnd)
{
NOTIFYICONDATA nid = {sizeof(nid)};
nid.hWnd = hWnd;
::Shell_NotifyIcon(NIM_DELETE, &nid);
}
//ウィンドウプロシージャ
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
//クライアント領域が左クリックされた
case WM_LBUTTONDOWN:
//自分を隠して
::ShowWindow(hWnd, SW_HIDE);
//タスクアイコンへ追加する
::AddTaskBar(hWnd);
return 0;
//タスクアイコン中にクリックされた
case WM_ICONTRAY:
switch(lParam)
{
case WM_LBUTTONDOWN:
//自分を表示して
::ShowWindow(hWnd, SW_SHOW);
//タスクアイコンから外す
::RemoveTaskBar(hWnd);
}
return 0;
}
return ::DefWindowProc(hWnd, msg, wParam, lParam);;
}
お礼
出来ました。 何度もありがとうございます。 サンプルがあったので出来ました。 リンクのサンプルはVBで色々書いてあって私は分からなかったので、 サンプルがあって助かりました。