托盘左键单击和双击问题

最近项目中有个托盘左键单击、双击事件,但发现双击的时候总是先弹出单击的菜单(这个是正常的,因为双击必定先触发单击事件嘛),那如何避免这样的情况呢....

方案1 : 用线程处理单击事件,延时判断,如果是双击,则不显示单击的菜单

首先在 对话框中添加  BOOL m_bLButtonFlag; //  0 表示单击  1 表示双击

然后再  

LRESULT XXX::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 

 case WM_LBUTTONDOWN:
   {
    // 显示菜单

afxbeginthread()...
    

   return TRUE;
   }

  case WM_LBUTTONDBLCLK: // 恢复显示
   {
    m_bLButtonFlag = TRUE;

      ...

  }

然后再线程中处理单击的事件信息

方案2 ,延时处理,SETTIMER(), 在ONTIMER 中处理相应的事件

 if (LOWORD(lParam) == WM_LBUTTONDOWN )
 { 
  SetTimer(111,500,NULL); 
 }

void CMy12314Dlg::OnTimer(UINT nIDEvent)
{
 // TODO: Add your message handler code here and/or call default

    if (m_showflag == false )
   {
    CMenu menu, *pSubMenu;
   if (!menu.LoadMenu(IDR_MENU2)) return ;
  if (!(pSubMenu = menu.GetSubMenu(0))) return;
 
   // Make first menu item the default (bold font)
  // ::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);
 
   //Display and track the popup menu
   CPoint pos;
   ::GetCursorPos(&pos);
   ::SetForegroundWindow(nd.hWnd); 
    ::TrackPopupMenu(pSubMenu->m_hMenu, 0, pos.x, pos.y, 0, this->GetSafeHwnd(), NULL);
   }
   else
   {
   m_showflag = true;
   }

 

问题: 在线程中菜单显示一直没解决,后来改用定时器,单击菜单可以正常显示。

时间: 2024-09-23 14:41:11

托盘左键单击和双击问题的相关文章

鼠标左键单击变双击的解决方法_应用技巧

偶的罗技鼠标有点问题了,看来是微动开关的问题,从网上找了点资料,有时间了试试. Quote: 把鼠标打开,找到鼠标左按键的微动开关,一个黑色的小盒子卡在电路板上.打开微动开关的方法是用牙签从侧面下方的小洞插入撬开,轻撬微动开关中部的卡子,注意不要盲目乱插,观察一下上面的机关再动手,小心别用力过猛导致塑料上盖损坏.轻轻将微动开关的上盖打开,这时可以看到下面的铜片,铜片如果变型就取下来小心撑回原来的形状,然后装回原处. 用棉花棒蘸上酒精清洗一下铜片,清洗的过程中,用力要均匀,避免铜片移位.一定不要带

如何在winXP电脑中将左键单击打开文件夹变成双击打开?

  熟悉咱们Windows系统的用户应该都知道,在咱们的Windows系统中,不管是打开文件夹还是打开文件,亦或是要打开一个程序驱动什么的,咱们都只需要双击打开就可以了,但是最近,却有使用winXP系统的用户反映说自己的winXP电脑可以直接左键单击打开文件夹,也就是说鼠标点击一下就会打开文件夹了,虽然这样节省了一个步骤,但是有时候,这个操作还真不是很好,例如咱们想要选中文件夹,然后点击右键进行操作的时候,文件夹却自动的打开了,这岂不是很麻烦?当然,咱们首先需要确定一下不是鼠标的问题,如果与鼠标

请教:如何在鼠标左键单击时,获得鼠标选中的文件名称或文件夹名称。

问题描述 开发环境vb.net2008.实现功能:主程序最小化到托盘运行(类似于有道词典或金山词霸),此时,当鼠标通过左键单击选中某一个文件或文件夹时,主程序能截或这一事件,并获得选中的文件夹或文件的名称,传给主程序变量strFileOrFolderName.在此谢谢各位高手!补充一下,最好不要像屏幕取词那么复杂,仅仅想获得选中文件夹或文件的名称. 解决方案 本帖最后由 wenjiug 于 2012-05-11 17:14:07 编辑解决方案二:windowsapi编程吧解决方案三:自己顶一下,

鼠标左键单击冲突的问题解决方法(防止冒泡)_javascript技巧

本人在一个页面实现了两种右键菜单,当鼠标左键单击空白处时,右键菜单并不隐藏.于是,Google之,最后找到一种方法,将鼠标左键单击事件改为: 复制代码 代码如下: <span style="font-size:24px;">$(document).click( function () { }</span> 改为 复制代码 代码如下: <span style="font-size:24px;">$(document).on('cli

winXP左键单击文件就打开文件的解决方法

  1.首先,咱们随意的在自己的winXP电脑中打开一个文件夹,之后,咱们就可以进入到如下图中所示的窗口了,之后,咱们在打开窗口上方的工具栏中依次点击工具-文件夹选项. 2.之后咱们就可以打开winXP电脑的文件夹选项设置窗口了,在打开的窗口中,咱们将界面切换到常规这一栏中,然后就可以看到下面有一个打开项目的方式了,咱们直接在其中选择"通过双击打开项目",设置好之后点击确定保存设置就可以了.

鼠标单击变双击怎么办

用鼠标单击文件夹时,不是显示被选中,而是直接打开了,好像双击操作一样.对程序的操作也是一样,只是点击了一下快捷方式,程序就打开了.这类问题一般是由于不小心改动了相关设置引起的,严格讲不是故障,我们只需把设置再改回来就行了,具体设置涉及到以下几个. 步骤方法 设置一: 有时候移动设备使用后会出现鼠标左键单击变双击的情况,这时可以打开任务管理器,并结束进程中的"wowexec.exe"和"cdilla10.exe"两项,这样就会恢复正常,但下次使用移动设备后还会出现此问

win7系统鼠标单击变双击怎么办

  方法一:当电脑出现了鼠标左键单击变成双击情况,可以打开任务管理器,然后在任务管理器中,选择结束"wowexec.exe"和"cdilla10.exe"两项进程. 方法二:还有一种方法就是在开始菜单中打开控制面板,然后点击"鼠标",,在鼠标属性窗口中,在单击锁定下勾选"启用单击锁定",再点击确定按钮保存设置.

js鼠标单击和双击事件冲突问题的快速解决方法_javascript技巧

情况一 如果在一个DOM对象上同时绑定单击(click)和双击(dblclick)事件,当在这个DOM对象上发生双击事件时,第一次点击(click)会 触发一次单击(click)事件,第二次点击(连续的)也会触发双击(dblclick)事件,还是会触发单击(click)事件(IE7与 firefox). 解决方法: <button onclick="test(1)" ondblclick="test(2)"></button> <scr

VC++窗体应用程序,鼠标左键托盘显示提示,右键显示菜单

问题描述 VC++窗体应用程序,鼠标左键托盘显示提示,右键显示菜单 如题,希望左键单击托盘Icon时,有提示,类似于"安全弹出设备":右键时弹出菜单: 右键菜单我会做,左键不会做 解决方案 无非就是在你的托盘中拦截消息,wm_lbuttonup,判断按键是左键还是右键