• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 在IE工具栏中创建下拉菜单的问题

在IE工具栏中创建下拉菜单的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了ie工具栏在哪里,ie浏览器工具栏在哪,ie工具栏,ie的工具栏在哪,ie浏览器工具栏不见等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 在IE工具栏中创建下拉菜单的问题
描述:

我使用ATL作类似Google工具条的东东,大体都完成了.现在在TBN_DROPDOWN的响应函数里创建菜单,但有一个问题,就是不能用LoadMenu来载入菜单资源,只能用CreatePopupMenu + AppendMenu创建菜单,不知道为什么.
1.这个代码可以运行
void CKBToolBarCtrl::OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult)
{
NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNotifyStruct;
SetFocus();
CRect rect;
// 得到下拉箭头的位置;
this->GetRect(pNMToolBar->iItem, &rect);
rect.top = rect.bottom;
::ClientToScreen(pNMToolBar->hdr.hwndFrom, &rect.TopLeft());
if(pNMToolBar->iItem == ID_BUTTON1)
//判断下拉箭头;
{
CMenu pp;
pp.CreatePopupMenu();
pp.AppendMenu(0,IDM_EN,"英汉/汉英");
pp.AppendMenu(0,IDM_RU,"俄汉/汉俄");
pp.AppendMenu(0,IDM_JP,"日汉/汉日");
pp.AppendMenu(0,IDM_KO,"韩汉/汉韩");
pp.AppendMenu(0,IDM_FR,"法汉/汉法");
pp.AppendMenu(0,IDM_GR,"德汉/汉德");
pp.TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, rect.left, rect.top + 1, this);
}
}
2.这个代码可以编译通过,但运行时停在LoadMenu这句,不知为什么?
void CKBToolBarCtrl::OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult)
{
NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNotifyStruct;
SetFocus();
CRect rect;
// 得到下拉箭头的位置;
this->GetRect(pNMToolBar->iItem, &rect);
rect.top = rect.bottom;
::ClientToScreen(pNMToolBar->hdr.hwndFrom, &rect.TopLeft());
if(pNMToolBar->iItem == ID_BUTTON1)
//判断下拉箭头;
{
CMenu pp;
pp.LoadMenu(IDR_MENU1);
CMenu* p = pp.GetSubMenu(0);
p->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON, rect.left, rect.top + 1, this);
}
}


解决方案1:

不要用MFC的类库,改用SDK的方式来写?工具条你应该是用ATL来写的吧?
HMENU LoadMenu(
  HINSTANCE hInstance, 
  LPCTSTR lpMenuName 
); 
HMENU GetSubMenu(
  HMENU hMenu, 
  int nPos 
); 
BOOL TrackPopupMenu(
  HMENU hMenu, 
  UINT uFlags, 
  int x, 
  int y, 
  int nReserved, 
  HWND hWnd, 
  const RECT* prcRect 
); 
参考一下这几个函数

解决方案2:

http://support.microsoft.com/default.aspx?scid=kb;EN-US;150121


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • IE工具栏制作~~高手请指教
  • IE工具栏按钮问题,急问
  • 建立了IE工具栏,如何建立按钮提示,即tooltip
  • 如何在ATL创建的IE工具栏上添加TOOLBUTTON
  • 点击IE工具栏上一自定义的按钮出现一个对话框
  • 如何在IE工具栏上面添加多个图标用ATL急!!!
  • 怎么在IE工具栏使用不同宽度的图标???
  • 使用BHO创建了IE工具栏一个按钮,如何给这个按钮添加点击事件呢?
  • 要开发一个IE工具栏需要哪方面的知识?
  • 能不能实现IE工具栏按钮的动态改变?

相关文章

  • 2017-06-05 线程传入参数的问题?
  • 2017-06-05 在MFC的规则Dll里建立文档,视图结构的窗体
  • 2017-06-04 控件倒入出现奇怪错误!(急)
  • 2017-06-04 关于IActiveScriptSite接口的一些问题
  • 2017-06-05 OCX接口指针传递数据问题
  • 2017-06-04 VC60操作Excel表,打开excel失败。。。
  • 2017-06-04 请教高手atl&&com入门
  • 2017-06-04 新手请问如何学好COM
  • 2017-06-04 超级郁闷的问题,请各位帮帮忙
  • 2017-06-05 求多线程资料、经验

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 多线程问题?
    • 如何自己编写滚动条控件?
    • 关于DLL与VB之间参数传递的问题?
    • 为什么全局钩子不能钩住所有的应用?
    • 有什么方式可以调试COM组件
    • 如何动态改变ComboBox的下拉框的高度
    • 那里有COM技术内幕和EsstenalCOMjjhou的
    • 本人出售大型软件源程序代码
    • WTL的CListViewCtrl就地编辑项标签怎么使用
    • 可能是老问题:如何隐藏进程,即使在任务管理器中也看不到?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有