智能终端定制开发 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

让你的软件界面更漂亮(五)
[VC 编程] 2008-04-03


――完美类WindowXp 开始菜单(CYisongStartMenu) 编程指南


作者:朱一松



下载源代码

类WindowXp 开始菜单到现在基本上是完美实现,在功能上基本和WindowXp 与Vista 操作系统的开始菜单一样,界面当然漂亮,通过编程能实现风格多样,具有个性化的功能菜单。为了方便使用,本人对其进行了封装,库名曰:完美类WindowXp 开始菜单。
1、完美类WindowXp 开始菜单(CYisongStartMenu)有如下主要特点:
   a. 在C++环境实现,界面风格可实现自定义;
   b. 不仅适用Mouse 操作,还支持响应方向按键,快捷键功能;
   c. 可增加和删除菜单中的子项;
   d. 可显示Left Bar 并定义其风格;
   e. 可自定义焦点亮条的风格;
   f. 可设置菜单子项为Check Option 风格
2、完美类WindowXp 开始菜单的用途:
   a. 可实现WindwXp 的两种菜单,经典菜单和分组菜单,非常适在大型应软件。象QQ 的 主菜单就是其中之一的分组菜单
   b. 托盘菜单、右键快捷菜单等应用。

一、编程指南
1.文件说明
类文件:YisongStartMenu.dll YisongStartMenu .lib (开始菜单库)
其它文件:MyStartMenuLib.h,MyStartMenu.h ,CmyToolTipCtrl.h
2.CYisongStartMenu 用法
   a. 先把上述文件拷贝到工程目录下
   b. #include MyStartMenuLib.h ,只要把MyStartMenuLib.h 文件包括到工程文件中就OK
   c. 定义一变量:CYisongStartMenu m_StartMenu;
   d. 在.cpp 文件中现实代码

//主菜单初始化过程
_TextInfo textInfo; //定义主菜顶部文本信息结构
m_StartMenu.GetUserPaneTextInfo(textInfo);//获取文本信息的初始属性
textInfo.clrShadow = GetSysColor(COLOR_BTNSHADOW);//设文本信息的主要属性
textInfo.nOffsetX = 1;
textInfo.nOffsetY = 1;
textInfo.logFontUserText.lfItalic = TRUE;
m_StartMenu.SetUserPaneTextInfo(textInfo); //使设置有效
m_StartMenu.SetUserPaneText(_T("WindowXp Menu")); //设置主菜顶部标题
m_StartMenu.SetUserPaneIcon(IDI_ICON_QQ,CSize(48,48)); //设置主菜顶部显示图标
//设置主菜顶部显示图形
m_StartMenu.GetUserBitmap(0,".\\skin\\1.bmp");
m_StartMenu.GetUserBitmap(1,".\\skin\\2.bmp");
m_StartMenu.GetUserBitmap(2,".\\skin\\3.bmp");
//实现菜单菜项的添加(左边主程序项的添加)
m_StartMenu.AppendProgItem(_T("Internet/nInternet Explorer"), ID_PROGLIST_IE,0,
MENU_DEFAULT,IDI_ICON_IE,NULL,_T("联接国际互际联网页"));
m_StartMenu.AppendProgItem(….)
….
m_StartMenu.AppendProgItem(_T("所有程序"),IDR_MENU_TEST,0,
MENU_BOTTOM|MENU_POPUP,0,NULL,NULL,&m_wndSubMenu);
// m_wndSubMenu 为“所有程序”菜单项的下拉子菜单
//实现菜单项的添加(分组菜单右边的菜单子项的添加)
//和上面方法一样,只不过是用函数AppendProgItem()
m_StartMenu. AppendPlaceItem(_T("My Documents"),
ID_PLACELIST_MYDOCUMENT,0,MENU_DEFAULT,
IDI_ICON_MYDOCUMENT);
…..
m_StartMenu. AppendPlaceItem(….);
//设置菜单子项文本颜色, PLACELIST_TYPE 指Place List 子项颜色
//PROGLIST_TYPE指Prog List(左边列表)子项颜色
m_StartMenu.SetItemTextColor(PLACELIST_TYPE,RGB(0,255,0));
//设置子项有焦点时,其显示的亮条图形,不设置亮条为蓝色
m_StartMenu.SetItemFoucsBitmap(PLACELIST_TYPE,".\\skin\\OverFoucs.bmp")
//设置菜单底部属性
CImageList lst;
lst.Create(IDB_STARTPANE_BUTTONS,24,3,RGB(192,192,192));
HICON hIconTurnOff = lst.ExtractIcon(2);
m_StartMenu.AppendBottomItem(_T("Turn Off Computer"),
ID_BOTTOMBAR_TURNOFFCOMPUTER,
0,MENU_NORMAL,0,hIconTurnOff);
HICON hIconLogOff = lst.ExtractIcon(1);
m_StartMenu.AppendBottomItem(_T("Log Off"),ID_BOTTOMBAR_LOGOFF,
0,MENU_NORMAL,0,hIconLogOff);
//设置菜单底部显的背景图形。
m_StartMenu.GetBottomBarBitmap(0,".\\skin\\1.bmp");
m_StartMenu.GetBottomBarBitmap(1,".\\skin\\2.bmp");
m_StartMenu.GetBottomBarBitmap(2,".\\skin\\3.bmp");
…..

   e. 显示菜单方法
//空口中在某点(x,y)处显示,作为m_hWnd 的子窗口
m_StartMenu.TrackPopPane(point.x, point.y, m_hWnd, 0);

   f. 响应菜单菜单命令
在用AppendPlaceItem()或AppendProgItem()、AppendBottomItem()添加菜单子项时它们第二个参数为菜单项的ID。在响应每个子项mouse 单击事件时,会向菜单其父窗口发送WM_COMMAND 消息,
::SendMessage(m_hWndParent,WM_COMMAND,m_pCurrentItem->uID,0)
所以只要在主窗口为每个菜单项映谢消息ON_COMMAND 的函数函行了,方法是在cpp 文件中找到消息息映射处( 在BEGIN_MESSAGE_MAP(CWindowsXPMenuDlg,
CDialog) 和END_MESSAGE_MAP()之间)。添加如下代码:
ON_COMMAND(ID_MENUITEM,OnFunc)

在.h 头文件对OnFunc()函数声明为消息函数:
afx_msg void OnFunc();


在OnFunc()函数中实现菜单项的命令的功能

二.主要功能接口函数的说明
1.函数名:AppendProgItem()
   功能:添加主程序功能菜单项
   原型及参数说明:

void AppendProgItem(LPCTSTR szItemName,
UINT uID,
ULONG ulData,
UINT uFlags,
UINT uIconResID,
HICON hIcon = NULL,
LPCSTR szTooltip=_T(""),
CYisongStartMenu* pSubMenu = NULL);
szItemName:菜单项文本标题
uID:菜单项ID 标识
ulData: 保留
uFlags: 菜单风格定义,其值可为下列值或组合
AppendProgItem(_T(""),0,0,MENU_SEPARATOR,0);
AppendPlaceItem(_T(""),0,0,MENU_SEPARATOR,0);

与本功能相同用的函数还有AppendPlaceItem(),用法上完全一样。

2.函数名:SetProgItemBackColor()
   功 能:设置菜单列表背景颜色
   原型及参数说明:

void SetProgItemBackColor(COLORREF clrLeftTop,
COLORREF clrRightBottom,
bool bValid)


clrLeftTop:左上角的颜色
clrRightBottom:右下角结束处 颜色
bValid:布尔型变量,TRUE,表示立即设置生效。
说明:SetProgItemBackColor()函数的用法及功能与本函是一样的,请参照此用法。

3.函数名:SetItemTextColor(ITEM_TYPE nType,COLORREF clrText)
   功 能:设置菜单文本颜色
   原型及参数说明:

void SetItemTextColor(ITEM_TYPE nType,COLORREF clrText)

nType :ITEM_TYPE 枚举类型的数参
enum ITEM_TYPE
{
PROGLIST_TYPE, //指Program 列表菜单
PLACELIST_TYPE, //指Place 列表菜单
BOTTOMBAR_TYPE, //菜单底部
}


clrText:本文的颜色
设置 Program 列表菜单项的文本颜色为 红色的方法如下:
Exp.: SetItemTextColor(PROGLIST_TYPE, RGB(255,0,0));
注意:一般在菜单初始完成后调用该函数来设置菜单项的文本颜色。

4.函数名:GetBottomBarBitmap()
   功 能:设置菜单底部背景图象
   原型及参数说明:void GetBottomBarBitmap(int nMode,LPTSTR szFile))
nMode :指出显示方式
szFile : 图像文件及路径。
与些函数功能相同的还有GetUserBitmap(int nMode,LPTSTR szFile)
5.函数名:SetAsSubMenu()
   功 能:设置菜单为弹出(子)菜单
   原型及参数说明:void SetAsSubMenu(BOOL bSubmenu)
bSubmenu =TRUE 时,表示为弹出(子)菜单。如上图的 TEST 菜单
6.函数名:SetItemFoucsBitmap(ITEM_TYPE nType,LPTSTR strFile)
   功 能: 设置菜单项的焦点高亮显示方式
   原型及参数说明:void SetItemFoucsBitmap(ITEM_TYPE nType,LPTSTR strFile)
nType:参考上面介始
strFile:焦点高亮显示图形,为NULL 则显示默认的高亮条
注意:一般在菜单初始完成后调用该函数
可设定不同的焦点亮条风格,上图显示两种亮条不同风格的焦点亮条。当亮条风格不能满足你的要求时,还可设定自已喜欢的图形作为焦点亮条。对亮条图形任意尽寸大小都适合。也可看到上图下拉菜单的Left Bar 风格。可以说,完美类WindowXp 开始菜单是一款用C++实现的非常完美的菜单,实现了多风格,操作上也很友好地支持按键的操作,功能基本上能满足大多应用软件的要求。当然,本开始菜的实现是相当复杂的,存在的问题也是意料之中的,希望大家批评指正并提出保贵意见。

本人的联系方式QQ 号:34544052 邮箱:song_0962@sina.com

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


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