文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 国产软件 | 国外软件 | 汉化补丁 | 设为首页 | 加入收藏
网站首页 软件下载
数码学院 网络学院
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网站建设 | 技术开发 | 专栏
当前位置:abcdown网络学院网站建设Html/CssToolbar制作菜单条过程详解
精品广告
推荐TOP10
·DIV与Table布局在大型网站的可用性比较
·CSS样式表设计的十条技巧
·你知道这些css网页设计技巧吗
·用CSS层叠样式表完成可以控制的闪烁效果
·正则表达式过滤HTML危险脚本
·调整CSS类型的顺序改变链接状态
·学习用Xhtml+CSS2构建网页
·网站重构:利用CSS改善网站可访问性
·解密.htm.html.shtm.shtml的区别与联系
·CSS的十八般技巧
·超强,用CSS构建iframe效果
·锦囊妙计 CSS实现样式布局22招
·网页风格化 用CSS实现皮肤适时切换
·搞定CSS SPAN和DIV的区别
·与HTML相比XHTML有什么特点?
·根据分辨率不同调用不同的css文件
·怎样在Web开发中完美控制IE标题栏
·危险无处不在 Html标签带来的安全隐患
·HTML小技巧的一些小技巧
·网页制作中的小秘诀
阅读TOP10
·CSS初学者应该保持的一种心态
·DIV与Table布局在大型网站的可用性比较
·frameset 使用心得
·DIV下拉式菜单(一)
·网页设计中插入网页音乐的技巧
·动态加载外部css或js文件
·仿DOS窗口的HTM代码
·HTML及XML语言的转义字符
·DIV下拉式菜单(二)
·全屏窗无提示关闭父窗口
·css的一些基础的东西
·CSS+DIV设计实例:超酷的竖排导航栏
·HTML表单元素覆盖样式元素问题及其补救之道
·如何隐藏网页中的层DIV
·学习用Xhtml+CSS2构建网页
·超强,用CSS构建iframe效果
·用层模拟下拉列表框
·用CSS实现鼠标单击特殊效果图
·利用css和js实现firefox和IE都支持的页面局部打印
·使用div仿javascript模态窗口

Toolbar制作菜单条过程详解

日期:2003年10月25日 作者:清风网络学院 查看:[大字体 中字体 小字体]


现在许多用户界面都使用工具栏制作菜单条,小弟最近对此感兴趣,便从网上求助,可是得到的帮助大多是BCGControlBar的源代码或者是SizableRebar的源代码,对于只希望是自己的界面具有该功能的朋友来说,这也许是不错的选择,只要看一下demo,然后直接调用别人的类库就可以了,但对于我等对此话题感兴趣,希望弄懂其来龙去脉的读者来说,直接看这些没有详细解释的源代码,要从中弄出个所以然来,实不是件容易的是,至少对于像我这样的菜鸟来说是这样的,本文出于此种原因,希望对还在寻求此帮助的读者能提供一些帮助。

  下面我们边看边侃:

  在接收到toolbarbutton按下消息时,我们一般使用TrackPopupMenuEx弹出菜单,问题的关键是,在菜单未关闭时,TrackPopupMenuEx并不返回,并拦截鼠标和键盘消息,使用spy可以看到,此时的工具栏收不到任何消息,当然无从改变热点,这就需要我们自己探测鼠标位置并在鼠标移动到下一个热点时关闭上一个菜单并显示下一个菜单。这里我们使用钩子函数SetWindowsHookEx在调用TrackPupupMenuEx前安装WH_MSGFILTER钩子,代码如下:
m_hMsgHook = SetWindowsHookEx( WH_MSGFILTER, MessageProc, 0, GetCurrentThreadId() );
MssageProc是钩子函数,代码如下:



LRESULT CALLBACK  MessageProc(int code, WPARAM wParam, LPARAM lParam)
{
if (code == MSGF_MENU)
{
HookMessageProc(lParam);
}
return CallNextHookEx(m_hMsgHook, code, wParam, lParam);
}
  函数检查消息,如果是来自菜单,则将消息传递给函数HookMessageProc处理,我们所要做的就是在该函数中检测消息WM_MOUSEMOVE,并测试鼠标位置,如果鼠标已经移动到另一个按钮上,则关闭菜单并显示下一个菜单,关闭菜单使用消息WM_CANCELMODE,当菜单关闭后,我们要释放钩子,在下一个菜单弹出时重新安装钩子,弹出菜单示例代码如下:


void TrackPopup(HWND hWndToolBar, int iButton)
{
while (iButton >= 0)
{
SendMessage(hWndToolBar,TB_SETHOTITEM,iButton,0);
iPopup = iButton;
//安装钩子
g_hMsgHook = SetWindowsHookEx(WH_MSGFILTER, MessageProc, 0, GetCurrentThreadId());
//弹出菜单
TrackPopupMenuEx(…);
//卸载钩子
UnhookWindowsHookEx(g_hMsgHook);
iButton = iNextPop; //下一个弹出项,若为负,则退出
}
SendMessage(hWndToolBar,TB_SETHOTITEM,-1,0);

}

  (经验与建议:如果button使用样式TBSTYLE_DROPDOWN,请不要在消息TBN_DROPDOWN中直接调用该函数,应使用中间消息,然后使用PostMessa个发送该消息,以使TBN_DROPDOWN可以直接返回,否则消除第一个高亮热点是很麻烦的事。)

iPopup为当前弹出项,iNextPop为下一个弹出项,这些变量需要在函数HookMessageProc中处理,示例代码如下:



void HookMessageProc(MSG * pMsg)
{
if (pMsg->message == WM_MOUSEMOVE)
{
int iButton, iCount;
POINT pt = { LOWORD(pMsg->lParam), HIWORD(pMsg->lParam) };

[1] [2] 下一页 

上一篇:Java开发精彩教程:JSF系列(三)

下一篇:一款动画Logo制作方法


Toolbar制作菜单条过程详解 相关软件: Toolbar制作菜单条过程详解 相关文章:
·Toolbar制作菜单条过程详解

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
首页 | 本站声明 | 下载帮助 | 发布软件 |
中文版权所有:ABC学院 浙ICP备05000717号