关于使用CToolTip的问题,如何在右键菜单弹出后,使鼠标移动到菜单的某一项上时弹出提示信息?

forfuture1 2004-04-06 02:49:02
我想使得在一个对话框中点击鼠标右键弹出菜单,然后当鼠标移动到菜单的某一项上时出现响应的提示信息框,这个怎么能够实现呢?
如何在对话框的按钮上出现提示信息,这个我已经实现了
...全文
236 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
forfuture1 2004-04-08
  • 打赏
  • 举报
回复 1
还是参照 http://www.codeproject.com/menu/menuitemtooltip.asp
将MenuToolTip.h中的OnMenuSelect函数更改如下:
inline
void CMenuToolTip::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSubMenu)
{
if(nFlags & MF_POPUP
|| (nFlags == 0xFFFF && hSubMenu == NULL)) { // menu closing
ShowToolTip(FALSE);
}

if(!(nFlags & MF_POPUP)) {

// Set the position
SetToolTipPosition(hSubMenu, nItemID);

// Upodate the text of the tool tip
/* TCHAR szBuff[256];
szBuff[0] = 0;
int nRet = ::LoadString(m_hInstance, nItemID, szBuff, 256);
#if 0
for(int i = 0; i < nRet; i++)
{
if(szBuff[i] == _T('\n'))
{
szBuff[i] = 0;
break;
}
}
#endif

if(szBuff[0] != 0) {
UpdateToolTipText(szBuff);
}
else {
UpdateToolTipText(m_szDefault);
}
*/
UpdateToolTipText(show); //增加一个CString 型的show成员变量
ShowToolTip(TRUE);
}
}
然后将MenuItemToolTipDlg下的OnMenuSelect函数更改一下
void CMenuItemToolTipDlg::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSubMenu)
{
if(nItemID==ID_test) myMenuToolTip.show="武汉";//针对特定ID的菜单显示不同的提示

myMenuToolTip.OnMenuSelect(nItemID, nFlags, hSubMenu);
myMenuToolTip.show="aBc";//默认的显示信息
CWnd::OnMenuSelect(nItemID, nFlags, hSubMenu);
}
_foo 2004-04-07
  • 打赏
  • 举报
回复
OK,既然你试了就当我什么都没说过。
因为他在弹出tooltips时计算是直接取menuitemrect的值,而用GetMenuItemRect取弹出式菜单的菜单项区域时,只取了其宽度和高度,而没有取坐标。所以你得自己处理。

我的方法是:
1。给CMenuToolTip类添加一个公开变量POINT trackPoint;
在其构造函数中初始化为0
CMenuToolTip():m_hToolTip(0), m_hParent(0) {trackPoint.x=0;trackPoint.y=0;}
在其SetToolTipPosition函数中做一下修改:
// move position
::SendMessage(m_hToolTip, TTM_TRACKPOSITION, 0,(LPARAM)MAKELPARAM( trackPoint.x+rt.right + 10, trackPoint.y+rt.top + 2));

2。在你弹出右键菜单的时候先把菜单的位置传过去
void CMenuItemToolTipDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CMenu popMenu;
popMenu.LoadMenu(IDR_MENU1);
myMenuToolTip.trackPoint.x=point.x;
myMenuToolTip.trackPoint.y=point.y;
ClientToScreen(&point);
popMenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN ,point.x,point.y,this);
myMenuToolTip.trackPoint.x=0;
myMenuToolTip.trackPoint.y=0;
CDialog::OnLButtonDown(nFlags, point);
}

xuanzg 2004-04-07
  • 打赏
  • 举报
回复
重载菜单,重载 CWnd

在菜单初始化 建立 CWnd,自画函数中,更新CWnd 现实内容
forfuture1 2004-04-07
  • 打赏
  • 举报
回复

我在添加的菜单的Properties->Prompt下加入了字符串后,是可以显示提示信息了,但是提示信息的位置不对,没有出现在弹出菜单的旁边而是固定在左上角,而且这样一来菜单的提示信息可以在程序中动态调整吗?因为我的菜单显示内容是动态的,要求提示信息也动态地做出调整
forfuture1 2004-04-07
  • 打赏
  • 举报
回复
楼上的怎么知道我没有看呢????????????????

我下载下来看了的啊,但是那个好象只能针对主菜单。
我在对话框上响应了右键消息,加入了一个菜单,我是想当鼠标右键点击对话框的时候,我能够在弹出的右键菜单上移动鼠标到某一个菜单项的时候出现提示信息。

不知道大家都明白了我意思没有啊?
_foo 2004-04-07
  • 打赏
  • 举报
回复
楼主,不是我说你。
问问题就应该有问问题的样,人家给你提供线索了你至少应该去看看,把源码下载下来看看效果,连看都没看就问,很不尊重人的。
ylredsun 2004-04-07
  • 打赏
  • 举报
回复
mark
forfuture1 2004-04-07
  • 打赏
  • 举报
回复
vcforever(霓裳羽衣):
这个好象只能针对主菜单,
能够在弹出的右键菜单上显示吗?
grasshopperliu 2004-04-07
  • 打赏
  • 举报
回复
问一下楼主,你是怎么修改的“提示信息能够动态地变化呢?”
forfuture1 2004-04-07
  • 打赏
  • 举报
回复
问题已经解决,送分!
forfuture1 2004-04-07
  • 打赏
  • 举报
回复
To _foo(void):
谢谢了,但是如果我想使得出现的提示信息能够动态地变化呢?

现在它是根据Prompt中的值来显示提示信息的,这个值在程序中可以修改的吗?
vcforever 2004-04-06
  • 打赏
  • 举报
回复
see this:
http://www.codeproject.com/menu/menuitemtooltip.asp
forfuture1 2004-04-06
  • 打赏
  • 举报
回复
真的没有人知道吗?应该是可以实现的吧?
forfuture1 2004-04-06
  • 打赏
  • 举报
回复
这个大家都没有做过吗?没人知道的吗?
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色常数的方法 3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView的交互 3.14 控制不同的文字字体——Typeface对象使用 3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮覆盖——动态产生按钮并最大化 3.20 今晚到哪儿打牙祭?——具选择功能的对话框 3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox的isChecked属性 4.5 消费券采购列表——多选项CheckBox的应用 4.6 向左或向右——RadioGroup组与onCheckedChanged事件 4.7 专业相框设计——ImageView的堆栈应用 4.8 自定义下拉菜单模式——Spinner与setDropDownViewResource 4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与数组 4.14 数字及模拟小时钟设计——AnalogClock与DigitalClock的原理 4.15 动态输入日期与时间——DatePicker与TimePicker应用 4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——ListView的布局 4.20 以动态列表配置选项——ListActivity与Menu整合技巧 4.21 查找程序根目录下所有文件——JavaI/O与ListActivity的结合.. 4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID 4.26 离开与关闭程序的弹出窗口——对话窗口上的ICON图标 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的TextView——Linkify规则 5.2 ACTION!CALL!拨打电话——Intent.ACTION.CALL的使用 5.3 自制发送短信程序——SmsManager与PendingIntent对象 5.4 自制发送Email程序——Intent在Email上的使用 5.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用 5.9 搜索手机通讯录自动完成——使用ContentResolver 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件资源管理器——自定义Adapter对象 5.12 还原手机默认桌面——重写clearWallpaper方法 5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与setImageDrawable 5.15 文件资源管理器再进化——JavaI/O修改文件名及删除 5.16 取得目前File与Cache的路径——getCacheDir与getFilesDir 5.17 打开/关闭WiFi服务——WifiManager状态判断 5.18 取得SIM卡内的信息——TelephonyManager的应用 5.19 调用拨号按钮——打电话CALL_BUTTON 5.20 DPAD按键处理——onKeyDown事件与Layout坐标交互 5.21 任务管理器正在运行的程序——RunningTaskInfo 5.22 动态更改屏幕方向——LANDSCAPE与PORTRAIT 5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒——常驻BroadcastReceiver的应用 6.2 手机电池计量还剩多少——使用BroadcastReceiver捕捉Intent.ACTION_BATTERY_CHANGED 6.3 群发拜年短信给联系人——ACTION_PICK与Uri对象 6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——PhoneStateListener与ACTION_SEND 6.8 存储卡剩余多少容量——Environment加StatFs 6.9 访问本机内存与存储卡——File的创建与删除 6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的状态——BroadcastReceiver聆听PendingIntent 6.15 后台服务送出广播信息——sendBroadcast与BroadcastReceiver 6.16 开机程序设计——receiver与intent-filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得手机内置媒体里的图文件——ACTION_GET_CONTENT取回InputStream 7.7 相片导航向导与设置背景桌面——ImageSwitcher与Gallery 7.8 调整音量大小声——AudioManager控制音量 7.9 播放mp3资源文件——raw文件夹与MediaPlayer的使用 7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——MediaRecorder与BroadcastReceiver实例 7.13 内置影片播放器载入3gp电影——VideoViewWidget 7.14 自制3gp影片播放器——MediaPlayer与实现SurfaceView 7.15 相机预览及拍照临时文件——Camera及PictureCallback事件 第8章 当Android与Internet接轨 8.1 HTTPGET/POST传递参数——HTTP连接示范 8.2 在程序里浏览网页——WebView.loadUrl 8.3 嵌入HTML标记的程序——WebView.loadData 8.4 设计前往打开网页功能——Intent与Uri.parse 8.5 将网络图像网址放入Gallery中显示——URL.URLConnection.BaseAdapter 8.6 即时访问网络图文件展示——HttpURLConnection 8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景图案——URLConnection与setWallpaper()搭配 8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客发布器——以XML-RPC达成远程过程调用 8.13 移动RSS阅读器——利用SAXParser解析XML 8.14 远程下载安装Android程序——APKInstaller的应用 8.15 手机下载看3gp影片——Runnable混搭SurfaceView 8.16 访问网站LoginAPI——远程服务器验证程序运行权限 8.17 地震速报!——HttpURLConnection与Service侦测服务 第9章 Google服务与Android混搭 9.1 Google帐号验证Token——AuthSub 9.2 Google搜索——AutoCompleteTextView与GoogleSearchAPI 9.3 前端产生QRCode二维条形码——GoogleChartAPI 9.4 以经纬度查找目的地位置——GeoPoint与MapView的搭配运用 9.5 GPSGoogle地图——LocationListener与MapView实时更新 9.6 移动版GoogleMap——Geocoder反查Address对象 9.7 规划导航路径——DirectionsRoute 9.8 移动设备上的Picasa相册——GooglePicasaAPI 9.9 随身翻译机——GoogleTranslateAPI 第10章 创意Android程序设计 10.1 手机手电筒——PowerManager控制WakeLock并改变手机亮度 10.2 GPS轨迹记录器——利用LocationListener在地图上画图并换算距离 10.3 女性贴身看护——AlarmManager.DatePicker.TimePicker 10.4 手机QRCode二维条形码生成器——Canvas与SurfaceHolder绘图 10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧