最小化窗口到托盘区-VC++

1、在窗口类的.h文件中添加变量:NOTIFYICONDATA  pnid;

2、在窗口类的.CPP文件中自定义消息:WM_MYMESSAGE

3、在窗口类的初始化函数OnInitDialog中添加代码:

pnid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);

pnid.hWnd = m_hWnd;

pnid.uID = (UINT)m_hIcon;

pnid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP; 

//图标有效|自定义消息有效|鼠标指向显示文字有效

pnid.uCallbackMessage = WM_MYMESSAGE;

pnid.hIcon = m_hIcon;

strcpy(pnid.szTip,"局域网监控系统客户端");

4、为WM_MYMESSAGE添加消息响应函数:

BEGIN_MESSAGE_MAP(CClientDlg, CDialog)

ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)

ON_WM_SIZE()//窗口消息(在类向导中添加)

END_MESSAGE_MAP()

5、OnMyMessage函数的实现:

LRESULT CClientDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)

{

if (lParam == WM_LBUTTONDOWN)//如果在图标中单击左键则还原

{

Shell_NotifyIcon(NIM_DELETE,&pnid);//删除托盘图标

ShowWindow(SW_SHOWNORMAL);//显示主窗口

                                        //使窗口总是在最前面

this->SetWindowPos(&wndTopMost,0,0,0,0,

                                                           SWP_NOMOVE|SWP_NOSIZE);    

}

return 0;

}

6、在类向导中为对话框添加ON_WM_SIZE()消息,并实现OnSize函数

void CClientDlg::OnSize(UINT nType, int cx, int cy) 

{

CDialog::OnSize(nType, cx, cy);

if (nType==SIZE_MINIMIZED)//如果事件为最小化

   {

Shell_NotifyIcon(NIM_ADD,&pnid);//在托盘区添加图标

ShowWindow(SW_HIDE);//隐藏主窗口 

   }

}


你可能感兴趣的:(最小化到托盘区)