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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • iOS唯一标示符引导

    iOS唯一标示符引导

    2021年5月11日
    132
  • JAVA获取服务器上文件路径,java 获取远程服务器目录的路径

    JAVA获取服务器上文件路径,java 获取远程服务器目录的路径java获取远程服务器目录的路径内容精选换一换已将所需升级的鲲鹏性能分析工具的软件包下载到本地。获取软件包后,需要校验软件包,确保与网站上的原始软件包一致,详细步骤请参见软件包校验。获取软件包后,需要校验软件包,确保与网站上的原始软件包一致,详细步骤请参见软件包校验。升级前请确认鲲鹏性能分析工具可以正常使用。升级前请确认安装空间至少保留原工具安装目录的大小加上新版本安装空间(1GB)为加强对系…

    2022年7月11日
    63
  • API接口签名验证2

    API接口签名验证2

    2021年10月13日
    36
  • 用Python进行web开发需要学习什么?「建议收藏」

    第一步:HTMLHTML是网页的核心,学好HTML是成为Web开发人员的基本条件。HTML很容易学习的,但也很容易误用,要学精还得费点功夫。  随着HTML5的发展和普及,了解HTML5也将成为Web开发人员的必修课。  涉及到网页外观时,就需要学习CSS了,它可以帮你把网页做得更美观。  利用HTML和CSS模拟一些你所见过的网站的排版和布局(色彩,图片,文字样式等等)。第二步:学习javascript,了解DOMJavaScript是一种能让你的网页更加生动活泼的程序语言。学习JavaScr

    2022年4月11日
    40
  • C语言十字相乘法_三次方十字相乘法

    C语言十字相乘法_三次方十字相乘法视频地址十字相乘法视频教程//初学C语言第2天,2小时写了一个简单的穷举法。#include<stdio.h>#include<math.h>intmain(){ intX=50;//自然数 floata,b,c; a=2;//二次项系数 b=5;//一次项系数 c=-3;//常数项 floata1,a2,a3,a4,…

    2025年6月3日
    5
  • 分布式网站的通讯架构

    分布式网站的通讯架构

    2022年3月13日
    44

发表回复

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

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