Windows还是Linux?

人生是无法阻止的前进! 酒醒诗残梦断,南国正清秋。把剑凄然望,无处归舟。
随笔 - 9, 文章 - 10, 评论 - 1, 引用 - 0
数据加载中……

制作托盘图标(不包含气泡)

在头文件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);

}

posted on 2011-01-11 11:21 向前看勿回头 阅读(678) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理