智能终端定制开发 ad
MTK/瑞芯微/高通-Android,智能模块/智能终端方案商

深度定制各类智能终端和智能硬件产品,提供硬件选型咨询、参考设计、元器件推荐、驱动开发、行业模块集成、操作系统定制与算法集成等软硬件定制服务。
contact.aspx

Android核心板产品覆盖2G、3G、4G通讯,双核、四核、八核CPU,可选的平台有MTK6580、MTK6737、MTK6750等,Android版本有5.1 6.0 7.0等。
contact.aspx

可广泛应用于低端智能POS、安防监控、车载设备、低端智能机器人、智能家居、智能硬件、工业智能手持设备、低端智能对讲设备、低端警务或执法设备、智能穿戴、贩卖机、物流柜、智能门禁系统等行业和设备。
contact.aspx

可提供以太网转串口透传,WIFI转串口透传,蓝牙转串口透传,CAN总线模拟量控制输出模块等。
contact.aspx

带3G或4G通讯功能,运行android系统,有多个串口,可以外挂各种模块:条码扫描、RFID、指纹识别、身份证识别、磁条卡、ID卡、GPS/北斗模块等。
contact.aspx

具有4G通讯功能,多个RS232或RS485接口,以太网接口,USB接口,CAN接口,多个AD输入。基于Android系统智能平台,方便APP应用开发。器件严格选型,运行稳定,质量可靠。
contact.aspx

在windows系统任务栏的托盘中显示图标
[VC 编程] 2008-04-11

//在windows系统任务栏的托盘中显示图标

//使用vc6.0++
//代码改编自《TCP/IPX协议及网络编程技术》第22章,罗军舟等著,清华大学出版社
//
//    托盘指的是windows桌面窗口右下角显示图标的区域
//    管理托盘图标的函数是Shell_NotifyIcon
//    为了简化使用,定义了CyctNotifyIcon类,封装了Shell_NotifyIcon
//    该类用于构建、维护任务栏图标,主要目的是为了用户提供基于任务
//    栏图标的图形化使用界面。
//========================================================
//======yctNotifyIcon.h文件===================
//注意:代码并不完整,只包含必需的代码

class CyctNotifyIcon 
{
private:
 NOTIFYICONDATA m_NotifyIconData;//NOTITYICONDAT结构

    void FillNotifyIconData(UINT uIDResource, const char *chTip);

public:
 CyctNotifyIcon(HWND hWnd, UINT uCallbackMessage);
 virtual ~CyctNotifyIcon();

 void AddIcon(UINT uIDResource, const char *chTip); 
 void ChangeIcon(UINT uIDResource, const char *chTip);
 void DeleteIcon();
};

//========================================================
//======yctNotifyIcon.cpp文件===================
#include "stdafx.h"
#include "yctNotifyIcon.h"

CyctNotifyIcon::CyctNotifyIcon(HWND hWnd, UINT uCallbackMessage)
{
//hWnd: 指定使用任务栏托盘图标的应用程序的窗口句柄
//uCallbackMessage: 指定任务栏托盘图标鼠标事件的用户回调消息;
//   可以参考msdn中的NOTIFYICONDATA结构

 memset(&m_NotifyIconData, 0, sizeof(NOTIFYICONDATA));

 m_NotifyIconData.hWnd = hWnd;
 ASSERT(m_NotifyIconData.hWnd != NULL);
 m_NotifyIconData.uCallbackMessage = uCallbackMessage;

}

CyctNotifyIcon::~CyctNotifyIcon()
{
}
   
void CyctNotifyIcon::FillNotifyIconData(UINT uIDResource, const char *chTip)
{
//填充NOTITYICONDAT结构
//uIDResource:指定图标资源ID
//chTip:指定在托盘图标上显示的ToolTip文本

 HICON hIcon = AfxGetApp()->LoadIcon(uIDResource);
 m_NotifyIconData.cbSize = sizeof(NOTIFYICONDATA);
 m_NotifyIconData.hIcon = hIcon;
 sprintf(m_NotifyIconData.szTip,chTip);
 m_NotifyIconData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
 m_NotifyIconData.uID = uIDResource;
}

void CyctNotifyIcon::AddIcon(UINT uIDResource, const char *chTip)
{
//添加(在托盘中的)图标和ToolTip文本
//uIDResource:指定图标资源ID
//chTip:指定在图标上显示的ToolTip文本

 FillNotifyIconData(uIDResource, chTip);
 Shell_NotifyIcon(NIM_ADD, &m_NotifyIconData);
}

void CyctNotifyIcon::ChangeIcon(UINT uIDResource, const char *chTip)
{
//改变(在托盘中的)图标和ToolTip文本
//uIDResource:指定图标资源ID
//chTip:指定在图标上显示的ToolTip文本

 FillNotifyIconData(uIDResource, chTip);
 Shell_NotifyIcon(NIM_MODIFY, &m_NotifyIconData);
}

void CyctNotifyIcon::DeleteIcon()
{
//删除任务栏图标

 Shell_NotifyIcon(NIM_DELETE, &m_NotifyIconData);
}

//========================================================
//使用示例步骤:
//========================================================

1)在CMainFrame中定义成员变量及构造函数中初始化:
 
CyctNotifyIcon* m_pNotifyIcon;

CMainFrame::CMainFrame()
{
 ......

 m_pNotifyIcon = NULL;
 
 ......
}
2)自定义YCT_NOTIFY_ICON消息及其响应函数:

#define  YCT_NOTIFY_ICON WM_USER+15 //自定义消息

LRESULT CMainFrame::OnNotifyIcon( WPARAM wParam, LPARAM lParam )
{
//YCT_NOTIFY_ICON消息响应函数
//用于响应任务栏图标的鼠标事件
//wParam:任务栏图标的ID
//lParam:鼠标事件值
//附:此消息的触发来自于CMainFrame::OnCreate中CyctNotifyIcon构造函数的第二个参数的设定

 switch(lParam)
 {
 case WM_RBUTTONUP:
  //做自己想自己的事,如弹出右键菜单
  ......
  break;
 case WM_LBUTTONDBLCLK:
  //做自己想自己的事,如显示主窗口
  ......
  break;
 default:
  ;
 }

 return 0;
}

3)(利用ClassWizard)重载OnCreate函数:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 ......
 
 //显示windows任务栏图标
 if(m_pNotifyIcon == NULL)
 {
  m_pNotifyIcon = new CyctNotifyIcon(this->GetSafeHwnd(),
   YCT_NOTIFY_ICON); 
  m_pNotifyIcon->AddIcon(IDR_MAINFRAME,(char *)YCT_TASKBAR_TOOLTIP_TEXT);
 }

 ......
}

4)重载OnDestroy函数;目的:删除任务栏图标。

void CMainFrame::OnDestroy()
{
 CFrameWnd::OnDestroy();

 ......
 
 //删除windows任务栏图标
 if(m_pNotifyIcon != NULL)
  m_pNotifyIcon->DeleteIcon();

}

5)在析构函数中释放m_pNotifyIcon:

CMainFrame::~CMainFrame()
{
 ......

 if(m_pNotifyIcon != NULL)
  delete m_pNotifyIcon;

 ......
}

//水平有限,如有错误请指正。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1918285


[VC 编程添加评论 | 评论/阅读(0/458)
评论
昵称
主页
内容
递交


Copyright @ 我的开发笔记     2008 - 2017         粤ICP备19155526号-1