timesetevent(为什么timesetevent()的第四个参数是DWORD类型,能不能传一个结构体类型,看到的多少传this)
本文目录
- 为什么timesetevent()的第四个参数是DWORD类型,能不能传一个结构体类型,看到的多少传this
- vb中 timeSetEvent函数怎么用的
- VC中的timeSetEvent函数使用求助
- 关于timeSetEvent的回调函数
- VC关于使用timeSetEvent()的一个问题
- 多线程中使用 timeSetEvent.求教高手
为什么timesetevent()的第四个参数是DWORD类型,能不能传一个结构体类型,看到的多少传this
第4个参数 一般给0。第4个参数按说明,是 DWORD_PTR,就是 unsigned long int * 指针。不能传一个结构体。看到的 this 要 转换: (DWORD) this。callback 函数里有参数dw1,dw2。void (CALLBACK)(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);
vb中 timeSetEvent函数怎么用的
Option ExplicitPrivate Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As LongPrivate Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, ByVal uFlags As Long) As LongDim p As LongPrivate Const TIME_周期 As Long = 1Private Const TIME_一次性 As Long = 0Private Sub Form_DblClick()timeKillEvent pp = 0End SubPrivate Sub Form_Load()p = timeSetEvent(300000, 10, AddressOf TimeProc, 1, TIME_一次性)Debug.Print timeGetTimeEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)If p Then timeKillEvent p: p = 0: Cancel = True: Timer1.Enabled = TrueEnd SubPrivate Sub Timer1_Timer()Timer1.Enabled = FalseUnload MeEnd Sub模块代码:Option ExplicitPublic Declare Function timeGetTime Lib "winmm.dll" () As LongSub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, ByVal dw1 As Long, ByVal dw2 As Long)Debug.Print timeGetTimeEnd Sub
VC中的timeSetEvent函数使用求助
可以使用SetDlgItemText、GetDlgItem(xx)-》SetWindowText需要注意的是,回调函数应该作为对话框类的成员函数存在。
关于timeSetEvent的回调函数
一、出错的原因是:在timeSetEvent调用中设置定时器回调函数时要遵循其规则,即回调函数的定义要严格遵照MSDN中的格式,而且在回调函数中除了PostMessage、timeGetSystemTime、timeGetTime、timeSetEvent、timeKillEvent、midiOutShortMsg、midiOutLongMsg、OutputDebugString几个函数外,不能调用其他Windows API函数,否则易造成系统出错甚至崩溃,故在实际运用中,使用要特别小心。二、解决办法,使用SetTimer和KillTimer,同样可以达到上述效果。窗体代码:Option ExplicitPrivate Sub Form_Click()Text1.Text = 1 SetTimer Me.hWnd, 0, 10, AddressOf TimeProcEnd Sub模块代码:Option ExplicitDeclare Function SetTimer Lib "User32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As LongPrivate Declare Function KillTimer Lib "User32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As LongPublic lTimeID As Long Sub TimeProc(ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) Form1.Text1.Text = Form1.Text1.Text + 1 If Form1.Text1.Text 》 100 Then KillTimer hWnd, 0 End IfEnd Sub
VC关于使用timeSetEvent()的一个问题
及时能,你也不应该这么做,因为UpdateData必须在该窗口所在的线程里做,而你多媒体定时器在哪个线程都不知道你写一个全局的函数,timeSetEvent用它做callback,然后窗口的句柄作为dwUser传给callback,然后用SendMessage发消息
多线程中使用 timeSetEvent.求教高手
**Dlg::OnBtnOK(){ AfxBeginThread(ReaderThread,¶m1); //新线程1,读取某串口的数据 AfxBeginThread(ReaderThread,¶m2); //新线程2,读取另一串口的数据}static UINT C**Dlg::ReaderThread(LPVOID param){ timeSetEvent(500,1,lpTimeProc,(DWORD)param,TIME_PERIODIC ); //半秒钟周期执行lpTimeProc回调函数。}void PASCAL lpTimeProc(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2){ //在回调函数中 读取某串口数据。并插入到数据库,显示至界面
更多文章:
once in a while(once a while 与once in a while 有什么区别)
2024年7月16日 05:19
feels音标怎么写?she feels happy为什么不用feel
2024年6月25日 07:42
sketch用什么软件打开(sketch格式的文件怎么打开)
2024年7月22日 22:07
java快速排序法(用java快速排序法,求十个数中的最大值)
2024年7月17日 05:50
edittext属性(android 中怎么控制EditText只能输入数字和字母)
2024年7月21日 19:38
css里边写透明样式怎么写?css透明度 css图片透明度设置方法
2024年7月22日 01:16
customer和guest(guest ,customer和client 的区别)
2024年4月17日 08:16
python编辑器mu(mueditor软件是安装在电脑上还是树莓派上)
2024年10月15日 00:25
西东视频教程网(谁有网页制作的视频教程呢网上看太麻烦了最好是下载的)
2024年7月7日 00:18
二级c语言上机考流程(全国计算机二级c语言上机怎么考啊有什么窍门没有啊)
2024年7月20日 09:31
数据库管理技术发展的三个阶段(数据库题目球答案: 1、数据库管理技术的发展经过三个阶段分别是人工管理阶段,文件系统阶段, 数据库系统)
2024年7月19日 14:00
微信小程序disableswipeback(微信制作的视频显示由于小程序限制无法打开)
2024年6月23日 07:21
align属性表示(delphi 中memo的align属性albottom.alclient,alcustom.各代表什么意思啊)
2024年10月12日 08:10