C++ SetTimer

C++ SetTimer我搞了好久 最终也没成功的让SetTimer 回调一个非静态成员函数不过问题是解决了那就是把成员函数和要用到的那个成员变量换成静态了(有点拆东墙补西墙了)不过方法肯定是有的UINT_PTRSetTimer(HWNDhWnd,//窗口句柄UINT_PTRnIDEvent,//定时器ID,多个定时器

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定
我搞了好久 

最终也没成功的让SetTimer  回调一个非静态成员函数 只能通过定义一个高级的对象指针,通过普通回掉函数里面执行成员函数:)

不过问题是解决了

那就是 把成员函数 和 要用到的那个成员变量换成静态了(有点拆东墙补西墙了) 不过方法肯定是有的

举个栗子

public:
	static bool bulletlock;
	static void CALLBACK bulletinterval(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime);   //普通回掉函数

Jetbrains全家桶1年46,售后保障稳定 这是给子弹限制速度的函数   就是发射间隔  其中用lock的形式实现的(我不会讲我实现还不完全)

		else if (kbd.SpaceIsPressed()&&(Game::bulletlock==true))
		{
				
				Game::bulletlock = false;
				Bullet *temp = getBuletState();
				PlayerBullet.push_back(temp);   //这两行就是发射子弹的 
				SetTimer(hWnd, 1, 2000, bulletinterval);
			
			//把子弹放进去		
		}

SetTimer原型

UINT_PTR SetTimer(
  HWND hWnd,              // 窗口句柄
  UINT_PTR nIDEvent,      // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
  UINT uElapse,           // 时间间隔,单位为毫秒
  TIMERPROC lpTimerFunc   // 回调函数
);

第一个NULL的话  计时器第二个参数无效,这样需要一个UINT_PTR  iTimerID = SetTimer(….来保存这个计时器,删除的时候使用KillTimer(NULL,iTimerID)

Callback函数格式

void CALLBACK TimerProc
(
  HWND hWnd,
  UINT nMsg,
  UINT nTimerid,
  DWORD dwTime
);

最后别忘记删除SetTimer

KillTimer(HWND hWnd,uIDEvent)  
第一个是句柄 第二个是计时器ID,一次性计时器的话,KillTimer可以写在回掉函数中

void Game::bulletinterval(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime)
{
	Game::bulletlock = true;
	KillTimer(hWnd, 1);
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203456.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 华为OJ:2041 放苹果

    华为OJ:2041 放苹果

    2022年1月31日
    58
  • php源码审计_静态代码审计

    php源码审计_静态代码审计最近在学PHP代码审计,那就将学习的笔记都整理一遍吧~前期准备:1、安装相关软件,如Sublimetext、 Notepad++、editplus、 Seay源代码审计系统等2、获得源码,可以到网上下载各种网站源码3、安装网站审计方法:通读全文法:麻烦但全面敏感函数参数回溯法:高效常用,Seay源代码审计系统定向功能分析法:主要根据程序的业

    2022年10月2日
    5
  • 奇怪的电梯

    奇怪的电梯奇怪的电梯【问题描述】某栋大楼有一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第i层楼(1≤i<N)上有一个数字K(≤K≤N)电梯只有四个按钮:开、关、上、下。上、下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:33125代表了Ki(K1=3,K2=3,…),从一层开始。在一层按“上”可以到4层,按“下”是不起作用的,因为没有-2层。那么从A层到B层至少要按几次按钮呢?【输入格式】第1行为3个用1个空格隔开的正整数,表示N、A、B(l≤N≤200,1≤

    2022年6月14日
    39
  • 利用java实现发送邮件

    利用java实现发送邮件电子邮件的应用非常广泛,常见的如在某网站注册了一个账户,自动发送一封激活邮件,通过邮件找回密码,自动批量发送活动信息等。很显然这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送。本文将简单介绍如何通过Java代码来创建电子邮件,并连接邮件服务器发送邮件。电子邮件协议电子邮件在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括SMTP,POP3,IMA…

    2022年5月15日
    44
  • Hello,C++(4)继承

    Hello,C++(4)继承

    2021年7月6日
    60
  • allow_url_fopen设置

    allow_url_fopen设置使用file,fopen或file_get_contents函数打开远程url时,需要PHP配置中(php.ini)将allow_url_fopen的值设置为On。按照默认设置,这个值本身就是On的。如果allow_url_fopen已经为on,但file,fopen,file_get_contents依然报错,就是服务器的DNS问题,造成了路由结果中有部份路由执行超时,最终PHP执行…

    2022年7月16日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号