用VC++编写 网络计时计费工具
2008-11-13 19:30:22 来源:WEB开发网首先实现程序最小化时在系统区显示图标的功能。为“确定”按钮对应的OnOk事件响应函数写入如下代码
NOTIFYICONDATA nc
nc.cbSize = sizeofNOTIFYICONDATA
nc.hIcon = AfxGetApp->LoadIconIDR_MAINFRAME
nc.hWnd = m_hWnd
lstrcpync.szTip,″hello″
nc.uCallbackMessage = WM_NC//自定义的消息
nc.uID = IDC_NC
nc.uFlags = NIF_TIP | NIF_MESSAGE | NIF_ICON
Shell_NotifyIconNIM_ADD,&nc //在托盘区显示IDR_MAINFRAME对应的图标
ShowWindowfalse//隐藏窗口
然后在NetTimerDlg.cpp的文件头部写入
#define WM_NC1001
#define IDC_NC 1002
以上代码中关键的函数是Shell_NotifyIcon,第一个参数表示你要增加、修改还是删除图标;第二个参数是一个NOTIFYICONDATA结构变量对应的地址,它的主要作用是提供必要的信息,使托盘区图标能够正常工作。需要注意的一点是一定要把原先默认的CButtonOnOk语句从函数里删除否则程序会在每次按下回车之后就自动退出。
下面代码是双击图标时的响应函数
void CNetTimerDlgOnNcWPARAM wParam,LPARAM lParam
switchlParam
case WM_LBUTTONDBLCLK//如果是双击图标
ShowWindowtrue//显示窗口
break
case WM_MOUSEMOVE//如果鼠标移动到了图标对应的矩形区域
NOTIFYICONDATA nc //以下代码用来显示当前连接时间和上网费用,如果没有连接则显示“未连接”
nc.cbSize = sizeofNOTIFYICONDATA
nc.hIcon = AfxGetApp->LoadIconIDR_MAINFRAME
nc.hWnd = m_hWnd
nc.uCallbackMessage = WM_NC
nc.uFlags = NIF_MESSAGE | NIF_TIP | NIF_ICON
nc.uID = IDC_NC
ifm_bConnected
lstrcpync.szTip,m_strTime + ″n″ + m_strFee
else
lstrcpync.szTip,″未连接″
Shell_NotifyIconNIM_MODIFY,&nc
break
更多精彩
赞助商链接