首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

编程实现最小化窗口到桌面右上角图标的代码

2012-12-24 
编程实现最小化窗口到桌面右下角图标的代码//*********************************************************

编程实现最小化窗口到桌面右下角图标的代码

//***********************************************************
//函数名称 : ToTray
//函数功能 : 最小化到系统托盘
//输入参数 :
//输出参数 :
//返回代码 :
//***********************************************************
//本地注释 :
//***********************************************************
void CBackupUIDlg::ToTray()
{
?nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);// 结构的长度,用“位”来做单位。
?nid.hWnd = this->m_hWnd;//消息传送的窗口句柄
?nid.uID = IDR_MAINFRAME;//在工程中定义的图标ID
?nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
?nid.uCallbackMessage = WM_SHOWTASK;//自定义的消息名称
?nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
?_tcscpy_s(nid.szTip,sizeof(nid.szTip)+1,_T("备份客户端"));//信息提示条为“备份客户端”
?Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
?ShowWindow(SW_HIDE);//隐藏主窗口
}
//**************************************************************
//函数名称 : onShowTask
//函数功能 : 托盘事件回调函数
//输入参数 :
//输出参数 :
//返回代码 :
//**************************************************************
//本地注释 :
//**************************************************************
LRESULT CBackupUIDlg::onShowTask(WPARAM wParam,LPARAM lParam)
{
?if(wParam!=IDR_MAINFRAME) return 1;
?switch(lParam)
?{
?case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”
? {
?? LPPOINT lpoint=new tagPOINT;
?? ::GetCursorPos(lpoint);//得到鼠标位置
?? CMenu menu;
?? //载入事先定义的菜单
?? VERIFY(menu.LoadMenu(IDR_MENU_TRAY));
?? CMenu *pMenu = (CMenu *)(menu.GetSubMenu(0));
?? ASSERT(pMenu != NULL);
?? //确定弹出式菜单的位置
?? pMenu->TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);
?? //资源回收
?? HMENU hmenu=menu.Detach();
?? menu.DestroyMenu(); delete lpoint;
? }
? break;
?case WM_LBUTTONDBLCLK://双击左键的处理
? {
?? this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿
? }
? break;
?}
?return?? 0;
}
/*********************************************/
/*??????????????????? 最小化到托盘后点击右键退出??????????????????????? */
/*********************************************/
void CBackupUIDlg::OnExit()
{
?::PostQuitMessage(0);
}

热点排行