写了个光驱控制程序,当程序最小化后,点托盘图标没有反应。不知道什么原因。。请各位帮帮忙//托盘图标处理函数单击右键弹出个菜单。。如果不选择菜单在其他地方单击则菜单消失。。当双击左键时程序主窗口重新弹开。。
void CCDROMControlDlg::OnWM_NOTIFYICON(WPARAM wParam, LPARAM lParam)
{
UINT nID=(UINT)wParam;
UINT uMouseMsg=(UINT)lParam;
switch(uMouseMsg)
{
case WM_LBUTTONDBLCLK:
if(m_blsMinimized==TRUE)
{
ShowWindow(SW_SHOW);
m_blsMinimized=!m_blsMinimized;
}
break;
case WM_RBUTTONDOWN:
CMenu menu;
CPoint curpos;
GetCursorPos(&curpos);
if(menu.LoadMenu(IDR_MENU))
{
CMenu * pPopup;
pPopup=menu.GetSubMenu(0);
ASSERT(pPopup!=NULL);
SetForegroundWindow();
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,curpos.x,curpos.y,AfxGetMainWnd());
}
break;
}
}
//在文件前面定义了下面两个消息ID#define WM_NOTIFYICON WM_USER+1
#define IDC_NOTIFYICON WM_USER+2
void CCDROMControlDlg::OnWM_NOTIFYICON(WPARAM wParam, LPARAM lParam)
{
UINT nID=(UINT)wParam;
UINT uMouseMsg=(UINT)lParam;
switch(uMouseMsg)
{
case WM_LBUTTONDBLCLK:
if(m_blsMinimized==TRUE)
{
ShowWindow(SW_SHOW);
m_blsMinimized=!m_blsMinimized;
}
break;
case WM_RBUTTONDOWN:
CMenu menu;
CPoint curpos;
GetCursorPos(&curpos);
if(menu.LoadMenu(IDR_MENU))
{
CMenu * pPopup;
pPopup=menu.GetSubMenu(0);
ASSERT(pPopup!=NULL);
SetForegroundWindow();
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,curpos.x,curpos.y,AfxGetMainWnd());
}
break;
}
}
//在文件前面定义了下面两个消息ID#define WM_NOTIFYICON WM_USER+1
#define IDC_NOTIFYICON WM_USER+2
处理这里你还在哪改过这个值
调试看看操作这个变量是否合理
但是又出现了这个问题:c:\users\administrator.dao-pc\documents\visual studio 2008\projects\cdromcontrol\cdromcontrol\cdromcontroldlg.cpp(78) : error C2440: “static_cast”: 无法从“void (__thiscall CCDROMControlDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
1> 在匹配目标类型的范围内没有具有该名称的函数
出错的地方是:ON_MESSAGE(WM_NOTIFYICON,OnWM_NOTIFYICON)
void CCDROMControlDlg::OnWM_NOTIFYICON(WPARAM wParam, LPARAM lParam)
{
UINT nID=(UINT)wParam;
UINT uMouseMsg=(UINT)lParam;
switch(uMouseMsg)
{
case WM_LBUTTONDBLCLK:
if(m_blsMinimized==TRUE)
{
ShowWindow(SW_SHOW);
m_blsMinimized=!m_blsMinimized;
}
break;
case WM_RBUTTONDOWN:
CMenu menu;
CPoint curpos;
GetCursorPos(&curpos);
if(menu.LoadMenu(IDR_MENU))
{
CMenu * pPopup;
pPopup=menu.GetSubMenu(0);
ASSERT(pPopup!=NULL);
SetForegroundWindow();
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,curpos.x,curpos.y,AfxGetMainWnd());
}
break;
}
}
//在文件前面定义了下面两个消息ID#define WM_NOTIFYICON WM_USER+1
#define IDC_NOTIFYICON WM_USER+2
http://hi.baidu.com/qiujiejia/blog/item/1002a93492b7d547251f1481.html/cmtid/55844101785d710b1d9583e5#55844101785d710b1d9583e5
void CCDROMControlDlg::OnWM_NOTIFYICON(WPARAM wParam, LPARAM lParam)
改成
afx_msg LRESULT CCDROMControlDlg::OnWM_NOTIFYICON(WPARAM wParam, LPARAM lParam)
当我右击那个托盘图标时,程序出现错误
case WM_RBUTTONDOWN:
CMenu menu;
CPoint curpos;
GetCursorPos(&curpos);
if(menu.LoadMenu(IDR_MENU))
{
CMenu * pPopup;
pPopup=menu.GetSubMenu(0);
ASSERT(pPopup!=NULL);
SetForegroundWindow(); pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,curpos.x,curpos.y,AfxGetMainWnd());
}
我自己调试时总是在SetForegroudWindow()函数处出错。
请各位帮忙看看