怎样让我的程序最小化时显示在。。。(音量控制的小喇叭那儿)(那叫什么区??) 如提! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 .h中NOTIFYICONDATA m_tnid;BOOL AddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip);BOOL DeleteIcon(HWND hwnd, UINT uID);.cppBOOL CXXXDlg::AddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip) { BOOL res; m_tnid.cbSize = sizeof(NOTIFYICONDATA); m_tnid.hWnd = hwnd; m_tnid.uID = uID; m_tnid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE; m_tnid.uCallbackMessage = WM_LIBEN; m_tnid.hIcon = hicon; if (lpszTip) lstrcpyn(m_tnid.szTip, lpszTip, sizeof(m_tnid.szTip)); else m_tnid.szTip[0] = '\0'; res = Shell_NotifyIcon(NIM_ADD, &m_tnid); if (hicon) DestroyIcon(hicon); return res; } BOOL CXXXDlg::DeleteIcon(HWND hwnd, UINT uID) { BOOL res; m_tnid.cbSize = sizeof(NOTIFYICONDATA); m_tnid.hWnd = hwnd; m_tnid.uID = uID; res = Shell_NotifyIcon(NIM_DELETE, &m_tnid); return res; } http://www.codeproject.com/shell/cjbtaskbarapplet.asphttp://www.codeproject.com/shell/systemtray.asp 调用:int CXXXDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here HICON theIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME)); AddIcon(GetSafeHwnd(),IDR_MAINFRAME, theIcon, _T("测试图标"),FALSE); return 0;} 在程序退出时使用DeleteIcon( GetSafeHwnd(),IDR_MAINFRAME);释放图标 1LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class if(message==WM_USER ) { if(lParam==WM_RBUTTONDOWN) { CMenu menu,*pSubMenu; menu.LoadMenu(IDR_MENU1); pSubMenu=menu.GetSubMenu(m_idIcon); POINT pt; GetCursorPos(&pt); pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON,pt.x,pt.y,this); } } return CFrameWnd::WindowProc(message, wParam, lParam);}2 m_nid.cbSize=sizeof(NOTIFYICONDATA); m_nid.hWnd=m_hWnd; m_nid.uID=0; m_nid.uCallbackMessage=WM_USER; m_nid.hIcon=AfxGetApp()->LoadIcon(IDI_ICON1); ::lstrcpy(m_nid.szTip,"Hello"); m_nid.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP; //以上为初始化结构 m_idIcon=0; ::Shell_NotifyIcon(NIM_ADD,&m_nid); //加图标,并在析构函数中删除 ::DestroyIcon(m_nid.hIcon);对了,还要做一个菜单 IDM_SHOWvoid CMainFrame::OnShow() { // TODO: Add your command handler code here ShowWindow(SW_SHOW); }void CMainFrame::OnHide() { // TODO: Add your command handler code here ShowWindow(SW_HIDE); }void CMainFrame::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if(m_idIcon==0) { m_nid.hIcon=AfxGetApp()->LoadIcon(IDI_ICON2); m_idIcon=1; } else { m_nid.hIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1)); m_idIcon=0; } ::Shell_NotifyIcon(NIM_MODIFY,&m_nid); ::DestroyIcon(m_nid.hIcon); CFrameWnd::OnTimer(nIDEvent);}CREATE 中 SetTimer(0,2000,NULL); 最后响应鼠标消息,这需要自己手工添加一个消息如WM_LIBEN(在AddIcon中的回调消息)LRESULT CXXXDlg::OnLiben( WPARAM wParam, LPARAM lParam ){ UINT nID; UINT uMouseMsg; nID = (UINT)wParam; uMouseMsg = (UINT) lParam; if (uMouseMsg == WM_LBUTTONDBLCLK) { //当左键双击时 } else if (uMouseMsg == WM_RBUTTONUP) { //当右键单击时 } return 1;} 专门的掩饰程序要不要?[email protected] 在MSDN里面的索引里输入:Taskbar你就会明白你该做什么了。 散分——QQ2011版界面模拟(给大家尝尝鲜) vc++解析pdf文件。急... 制作小软件应如何入手?? VC分割窗口的父类可否为CView类 栈溢出该如何解决? 怎样知道"鼠标在某个图片上的停留到了指定时间,例如停留了5秒?" 求助!关与对象删除。 MFC 开发Activex控件问题 做折线图 打开一个文档后,用什么函数读取文档中指定位置的字符串呀。 哪儿有8583的资料,急用!!! 什么情况把消息加入Doc类,什么情况把加入View类,什么时候加入MainFrame类?
NOTIFYICONDATA m_tnid;
BOOL AddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip);
BOOL DeleteIcon(HWND hwnd, UINT uID);.cpp
BOOL CXXXDlg::AddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
{
BOOL res;
m_tnid.cbSize = sizeof(NOTIFYICONDATA);
m_tnid.hWnd = hwnd;
m_tnid.uID = uID;
m_tnid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
m_tnid.uCallbackMessage = WM_LIBEN;
m_tnid.hIcon = hicon;
if (lpszTip)
lstrcpyn(m_tnid.szTip, lpszTip, sizeof(m_tnid.szTip));
else
m_tnid.szTip[0] = '\0';
res = Shell_NotifyIcon(NIM_ADD, &m_tnid);
if (hicon)
DestroyIcon(hicon);
return res;
}
BOOL CXXXDlg::DeleteIcon(HWND hwnd, UINT uID)
{
BOOL res;
m_tnid.cbSize = sizeof(NOTIFYICONDATA);
m_tnid.hWnd = hwnd;
m_tnid.uID = uID;
res = Shell_NotifyIcon(NIM_DELETE, &m_tnid);
return res;
}
http://www.codeproject.com/shell/systemtray.asp
int CXXXDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
HICON theIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
AddIcon(GetSafeHwnd(),IDR_MAINFRAME, theIcon, _T("测试图标"),FALSE);
return 0;
}
DeleteIcon( GetSafeHwnd(),IDR_MAINFRAME);
释放图标
{
// TODO: Add your specialized code here and/or call the base class
if(message==WM_USER )
{
if(lParam==WM_RBUTTONDOWN)
{
CMenu menu,*pSubMenu;
menu.LoadMenu(IDR_MENU1);
pSubMenu=menu.GetSubMenu(m_idIcon);
POINT pt;
GetCursorPos(&pt);
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON,pt.x,pt.y,this);
}
}
return CFrameWnd::WindowProc(message, wParam, lParam);
}2 m_nid.cbSize=sizeof(NOTIFYICONDATA);
m_nid.hWnd=m_hWnd;
m_nid.uID=0;
m_nid.uCallbackMessage=WM_USER;
m_nid.hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);
::lstrcpy(m_nid.szTip,"Hello");
m_nid.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
//以上为初始化结构
m_idIcon=0;
::Shell_NotifyIcon(NIM_ADD,&m_nid); //加图标,并在析构函数中删除
::DestroyIcon(m_nid.hIcon);
对了,还要做一个菜单 IDM_SHOW
void CMainFrame::OnShow()
{
// TODO: Add your command handler code here
ShowWindow(SW_SHOW);
}
void CMainFrame::OnHide()
{
// TODO: Add your command handler code here
ShowWindow(SW_HIDE);
}void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(m_idIcon==0)
{
m_nid.hIcon=AfxGetApp()->LoadIcon(IDI_ICON2);
m_idIcon=1;
}
else
{
m_nid.hIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1));
m_idIcon=0;
}
::Shell_NotifyIcon(NIM_MODIFY,&m_nid);
::DestroyIcon(m_nid.hIcon);
CFrameWnd::OnTimer(nIDEvent);
}
CREATE 中 SetTimer(0,2000,NULL);
{
UINT nID;
UINT uMouseMsg;
nID = (UINT)wParam;
uMouseMsg = (UINT) lParam; if (uMouseMsg == WM_LBUTTONDBLCLK)
{
//当左键双击时
}
else if (uMouseMsg == WM_RBUTTONUP)
{
//当右键单击时
} return 1;
}
你就会明白你该做什么了。