VC++ 6.0最小化实现托盘图标
网络上很多都是错误的。让后程序最小化在任务栏那里显示图标,点那图标它又跑出来,图标右键加入退出。哪个高手可以一部部指导我完成???我不会声明什么结构体变量。。。需要一步步...
网络上很多都是错误的。 让后程序最小化在任务栏那里显示图标,点那图标它又跑出来,图标右键加入退出。
哪个高手可以一部部指导我完成???
我不会声明 什么结构体变量。。。
需要一步步指点我完成。
我操作后成功的,立刻给分~ 展开
哪个高手可以一部部指导我完成???
我不会声明 什么结构体变量。。。
需要一步步指点我完成。
我操作后成功的,立刻给分~ 展开
3个回答
展开全部
自己的笔记(程序运行、最小化后图标在右下角,类似QQ)
在头文件MainFrm.h中声明NOTIFYICONDATA nid;
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//***** 初始化系统托盘图标 *****//
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_USER+1;//自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,"双击打开多功能电子钟");//信息提示条
Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
//***** 初始化系统托盘图标 *****//
//CenterWindow();
}
LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message){
case WM_USER+1: //如果是用户定义的消息
if(lParam==WM_LBUTTONDOWN) //WM_LBUTTONDBLCLK不怎么灵
{
//鼠标单击时主窗口出现
::SetForegroundWindow(this->m_hWnd); //::SetWindowPos(this->m_hWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
WindowIsHide=false;
return 0;
}
else if(lParam==WM_RBUTTONDOWN) // && WindowIsHide
{
::SetForegroundWindow(this->m_hWnd); //将主框架窗口置前,左击其他地方,菜单消失
//鼠标右键单击弹出菜单
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME);
CMenu* pMenu=menu.GetSubMenu(0);
CPoint point;
GetCursorPos(&point);
pMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,AfxGetMainWnd());
::PostMessage(this->m_hWnd, WM_NULL, 0,0); //左击其他地方,菜单消失
menu.DestroyMenu();
return 0;
}
break;
case WM_SYSCOMMAND: //如果是系统消息
if(wParam==SC_MINIMIZE||wParam==SC_CLOSE||wParam==SC_MAXIMIZE||wParam==SC_SIZE)
{
//主窗口隐藏
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
WindowIsHide=true;
return 0;
}
break;
}
return CFrameWnd::WindowProc(message, wParam, lParam);
}
void CMainFrame::OnDestroy()
{
CFrameWnd::OnDestroy();
::Shell_NotifyIcon(NIM_DELETE,&nid);
}
在头文件MainFrm.h中声明NOTIFYICONDATA nid;
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//***** 初始化系统托盘图标 *****//
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_USER+1;//自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,"双击打开多功能电子钟");//信息提示条
Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
//***** 初始化系统托盘图标 *****//
//CenterWindow();
}
LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message){
case WM_USER+1: //如果是用户定义的消息
if(lParam==WM_LBUTTONDOWN) //WM_LBUTTONDBLCLK不怎么灵
{
//鼠标单击时主窗口出现
::SetForegroundWindow(this->m_hWnd); //::SetWindowPos(this->m_hWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
WindowIsHide=false;
return 0;
}
else if(lParam==WM_RBUTTONDOWN) // && WindowIsHide
{
::SetForegroundWindow(this->m_hWnd); //将主框架窗口置前,左击其他地方,菜单消失
//鼠标右键单击弹出菜单
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME);
CMenu* pMenu=menu.GetSubMenu(0);
CPoint point;
GetCursorPos(&point);
pMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,AfxGetMainWnd());
::PostMessage(this->m_hWnd, WM_NULL, 0,0); //左击其他地方,菜单消失
menu.DestroyMenu();
return 0;
}
break;
case WM_SYSCOMMAND: //如果是系统消息
if(wParam==SC_MINIMIZE||wParam==SC_CLOSE||wParam==SC_MAXIMIZE||wParam==SC_SIZE)
{
//主窗口隐藏
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
WindowIsHide=true;
return 0;
}
break;
}
return CFrameWnd::WindowProc(message, wParam, lParam);
}
void CMainFrame::OnDestroy()
{
CFrameWnd::OnDestroy();
::Shell_NotifyIcon(NIM_DELETE,&nid);
}
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
展开全部
悬赏200分的话,我在vc 6下给你做一遍,再一步步指导。这个分,就给你个在vc9下的关键代码吧。
http://hi.baidu.com/%BA%CE%B4%A6%B4%E3%CE%E2%B9%B3/blog/item/ea5051426cd768179313c6f2.html
http://hi.baidu.com/%BA%CE%B4%A6%B4%E3%CE%E2%B9%B3/blog/item/ea5051426cd768179313c6f2.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询