关闭

设置鼠标忙碌状态

标签: 鼠标忙碌状态屏蔽消息响应
1022人阅读 评论(0) 收藏 举报
分类:
在MFC C++编程中,我们可能会碰到点击某个按钮后程序要进行较长一段时间的处理,这期间不想让用户到处乱点导致误操作,这个类可以将鼠标设置为忙碌状态且屏蔽用户在忙碌期间的操作消息
//类头文件
//tqw于2016.12.09封装,用于快捷设置鼠标忙碌状态,相比于系统自带的CWaitCursor类多了屏蔽忙碌状态下消息响应功能

#pragma once
class CMyWaitCursor
{
public:
	CMyWaitCursor(void);
	void Restore();
	~CMyWaitCursor(void);
};
//类实现
#include "StdAfx.h"
#include "MyWaitCursor.h"


CMyWaitCursor::CMyWaitCursor(void)
{
	AfxGetApp()->BeginWaitCursor();
}

void CMyWaitCursor::Restore()//如果你执行了可能会使光标改变的操作,比如显示消息框或对话框,则应调用Restore成员函数以恢复光标。即使当前正在显示等待光标也可以调用Restore函数
{
	AfxGetApp()->RestoreWaitCursor();
}

CMyWaitCursor::~CMyWaitCursor(void)
{
	//消耗掉消息队列中的所有消息以达到在鼠标忙碌状态下点击不响应的效果
	MSG msg; 
	while(::PeekMessage(&msg,NULL,0,0,PM_REMOVE))
	{
		//WM_PAINT不能被REMOVE,需要Dispatch
		if (msg.message=WM_PAINT)
		{
			::DispatchMessage(&msg);
		}
	}
	AFX_BEGIN_DESTRUCTOR

		AfxGetApp()->EndWaitCursor();

	AFX_END_DESTRUCTOR
}


使用案列

void CMy2010testDlg::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码
 CMyWaitCursor wait; // 显示等待光标,只要创建一个对象就会自动设置鼠标忙碌状态,在超出对象作用范围时会自动调用析构函数还原状态(如果用New方式创建则需要手动delete)
 Sleep(5*1000);//延时以体现忙碌光标效果
}





0
0
查看评论

C#系列——实现鼠标忙碌状态

在c#程序中,当程序执行某功能时,可以将鼠标设置成忙碌状态。  private void Ddocilck_Click(object sender, EventArgs e)         {        ...
  • u011009362
  • u011009362
  • 2015-07-29 15:03
  • 436

MFC中显示沙漏状的鼠标

在MFC界面中进行相应的控件操作,若算法需要较长时间,可加入Windows系统常见的漏斗型鼠标。 方法: 1)在点击了鼠标后加入BeginWaitCursor(); 2)在执行完了相关算法后,恢复鼠标EndWaitCursor();
  • u010213393
  • u010213393
  • 2014-10-29 16:37
  • 1286

MFC 鼠标悬停事件,提示信息

MFC里这个类叫做CToolTipCtrl,具体用法很简单。 1.在类头文件中声明CToolTipCtrl的类对象m_stat。 CToolTipCtrl    m_stat;//鼠标提示信息 2.在初始化函数OnInitDialog()中设置m...
  • dongganxiao_maidou
  • dongganxiao_maidou
  • 2018-01-21 20:17
  • 59

改变鼠标的状态,显示为忙碌

主要步骤是先创建自定义的鼠标指针,然后利用JFrame的setCursor方法设置鼠标import java.awt.*;import java.awt.event.*;import javax.swing.*;public class AnimatedCursor implements Runna...
  • hakunamatata2008
  • hakunamatata2008
  • 2009-03-28 12:52
  • 1715

【MFC 定义消息、设置鼠标状态】

【MFC 定义消息、设置鼠标状态】 一般情况: AfxGetMainWnd()->BeginWaitCursor();//设置等待光标 AfxGetMainWnd()->EndWaitCursor();//结束等待光标 在线程中发送消息: SendMessage((HWND)P...
  • kbkiss2010
  • kbkiss2010
  • 2014-08-11 14:57
  • 599

VC设置鼠标光标方法

一、在MFC中设置鼠标光标 1、载入系统光标 ::SetCursor( ::LoadCursor( NULL, IDC_HAND )  ); 注意: LoadCursor第一个参数必须为NULL,否则会载入失败。如果以以下方式调用,则会失败...
  • s634772208
  • s634772208
  • 2015-06-07 22:16
  • 3807

win7 64位出现桌面右键鼠标显示忙碌

*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com **************************************************...
  • aidem_brown
  • aidem_brown
  • 2014-12-17 00:13
  • 696

vb MousePointer(鼠标形状)

MousePointer属性用来显示鼠标箭头的形状的。 可在C:/WINDOWS/Cursors 找到这些形状。  常数               ...
  • yangjun07167
  • yangjun07167
  • 2010-07-12 22:48
  • 5855

关于XMPP和openfire中的消息回执和聊天状态

1 协议层: XMPP扩展协议已经定义了消息回执,参见 http://xmpp.org/extensions/xep-0184.html      同样也定义了聊天状态,参见 http://xmpp.org/extensions/x...
  • jiankeufo
  • jiankeufo
  • 2015-01-28 09:49
  • 1199

Qt设置鼠标等待状态与恢复。

设置 QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); 恢复 QApplication::restoreOverrideCursor();
  • life_is_too_hard
  • life_is_too_hard
  • 2017-04-13 19:24
  • 1013
    个人资料
    • 访问:2447次
    • 积分:55
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档