最小化窗口至右下角

             托盘图标绘制的函数:

-------------------------------------------------

WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(

DWORD dwMessage,

PNOTIFYICONDATA pnid

);

第一个参数就是负责向系统传递消息的

  NIM_ADD

  向托盘区域添加一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示这个图标,以便以后再次使用Shell_NotifyIcon对此图标操作。

  NIM_DELETE

  删除托盘区域的一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示需要被删除的这个图标。

  NIM_MODIFY

  修改托盘区域的一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示需要被修改的这个图标。

 

 

第二个参数是一个NOTIFYIONDATA结构体!

  typedef struct _NOTIFYICONDATA {

  DWORD cbSize;  //结构体大小

  HWND hWnd;  //句柄

  UINT uID;

  UINT uFlags;      //此成员表明具体哪些其他成员为合法数据(即哪些成员起作用)。

  UINT uCallbackMessage;   //应用程序定义的消息标示。

  HICON hIcon;

  TCHAR szTip[64];

  DWORD dwState;

  DWORD dwStateMask;

  TCHAR szInfo[256];

  union {

  UINT uTimeout;

  UINT uVersion;

  };

================================================

          具体用法

================================================

1.先定义一个消息标示(可以定义于头文件的开头)

#define MYWM_NOTIFYICON WM_USER+5

 

2.按钮响应消息

void CMyPlayerDlg::CreateNotifyIcon()

{

 NOTIFYICONDATA nd;

//赋值-----

 nd.cbSize = sizeof(NOTIFYICONDATA);

 nd.hWnd = m_hWnd;

 nd.uID = IDI_ICON;

 nd.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;

 nd.uCallbackMessage = MYWM_NOTIFYICON;       //消息标示

 nd.hIcon = m_hIcon;

 strcpy(nd.szTip, "星空旋律");

 Shell_NotifyIcon(NIM_ADD, &nd);

}

 

3.OnInitDialog()函数中调用CreateNotifyIcon()

BOOL CMyPlayerDlg::OnInitDialog()

{

     ....

 

  CreateNotifyIcon()

    ....

}

 

 

4.添加一个按钮响应隐藏窗口消息

void CMyPlayerDlg::OnBtnHide()

{

 // TODO: Add your control notification handler code here

 ShowWindow(SW_HIDE);

}

 

==============================================================

                 响应鼠标点击托盘图标消息

==============================================================

5.在 头文件中添加消息函数

//{{AFX_MSG(CMyPlayerDlg)

 afx_msg void OnNotifyIcon(WPARAM wParam, LPARAM lParam);

//}}AFX_MSG

 

6.在源文件中 添加消息映射

BEGIN_MESSAGE_MAP(CMyPlayerDlg, CDialog)

 //{{AFX_MSG_MAP(CMyPlayerDlg)

 ON_MESSAGE(MYWM_NOTIFYICON,OnNotifyIcon)

 //}}AFX_MSG_MAP

END_MESSAGE_MAP()

 

7.添加消息响应函数具体内容

void CMyPlayerDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)

{

 if (lParam == WM_LBUTTONDBLCLK)

 {

  UINT MODE;

  MODE = IsWindowVisible() ? SW_HIDE : SW_SHOW;  //判断窗口是否显示

  ShowWindow(MODE);

 }

 

}

 

转载于:https://www.cnblogs.com/blogpro/p/11426923.html

你可能感兴趣的:(最小化窗口至右下角)