收藏 分销(赏)

定时器相关内容.doc

上传人:pc****0 文档编号:7730099 上传时间:2025-01-14 格式:DOC 页数:3 大小:34KB
下载 相关 举报
定时器相关内容.doc_第1页
第1页 / 共3页
定时器相关内容.doc_第2页
第2页 / 共3页
点击查看更多>>
资源描述
1、让Windows直接将定时器消息发送给程序的另一个函数。 计时器函数:SetTimer(hwnd,iTimerID,iMseclnterval,TimerProc); hwnd:窗口句柄;iTimerID:定时器的ID;iMseclnterval:每隔多少毫秒调一次回调函数;TimerProc:时间到了的时候被调用的回调函数,实际是一个函数指针。 回调函数:void CALLBACK TimerProc(HWND hwnd,UNIT message,UNIT iTimerID,DWORD dwTime ); hwnd:窗口句柄;message:消息;iTimerID:定时器ID;dwTime:时间。 例如: SetTimer(hwnd,0,1000,MyTimerProc); void CALLBACK TimerProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime ) { SYSTEMTIME time; GetLocalTime(&time); TCHAR strTime[256]; //%后面的0表示不够的位数补零,5是总位数 wsprintf(strTime,”%04d-%02d-%02d %02d:%02d:%02d”, time.wYear,time.wMonth,timw.wDay,time.wHour,time.wMinute,time.wSecond); } 2、得到当前日期 void GetLocalTime(LPSYSTEMTIME); //LP是指针的前缀 例如: SYSTEMTIME stLocal; char chBuf[256]; GetLocalTime(&stLocal); //显示时间间隔 Wsprintf(chBuf,TEXT(“%u%u%u %u:%u:%u:%u 周%d\r\n”), stLocal.wYear,stLocal.wMonth,stLocal.wDay, stLocal.wHour,stLocal.wMinute,stLocal.wSecond, stLocal.wMilliseconds,stLocal.wDayOfWeek); MessageBox(NULL,chBuf,””,MB_OK); SetTimer(hwnd,1,1000,TimerProc); 例2: void CALLBACK MyTimerProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime ) { SYSTEMTIME stLocal; GetLocalTime(&stLocal); TCHAR strTime[256]; //%后面的0表示不够的位数补零,5是总位数 wsprintf(strTime,"%i年%i月%i日 %i:%i:%i",stLocal.wYear,stLocal.wMonth, stLocal.wDay,stLocal.wHour,stLocal.wMinute,stLocal.wSecond); SetDlgItemText(hwnd,IDC_EDITTIME,strTime); } 3、取得复选按钮是否被选中 LRESULT Button_GetCheck(HWND hwndCtl); BST_CHECKED BST_UNCHECKED(有三种状态,此为常见的2种) 设置复选按钮是否被选中 LRESULT Button_SetCheck(HWND hwndCtl,int check); BST_CHECKED BST_UNCHECKED 技巧:正向缩进(选中代码后按“Tab”键),反向缩进(选中代码后按“Tab”+“Shift”键组合)。 例如: case IDC_OK: { HWND hwndCheck=GetDlgItem(hwnd,IDC_CHECK1); int checkState=Button_GetCheck(hwndCheck); if(BST_CHECKED==checkState) { MessageBox(hwnd,TEXT("复选框被选中!"),TEXT(""),MB_OK); } if(BST_UNCHECKED==checkState) { MessageBox(hwnd,TEXT("复选框没有被选中!"),TEXT("提示"),MB_OK); } } break; case IDC_BUTTON1: { HWND hwndCheck=GetDlgItem(hwnd,IDC_CHECK1); int checkState=Button_GetCheck(hwndCheck); if(BST_CHECKED==checkState) { Button_SetCheck(hwndCheck,BST_UNCHECKED); } if(BST_UNCHECKED==checkState) { Button_SetCheck(hwndCheck,BST_CHECKED); } } break; 4、ListBox(和Combo类似) (1)添加项 如果采用LBS_SORT样式,那么填入清单方块最简单的方法是借助ListBox_AddString: int ListBox_AddString(HWND hwndCtl, LPCSTR ipsz); 如果没有采用LBS_SORT,那么可以使用ListBox_InsertString指定一个索引值,将字符串插入到清单方块中: int ListBox_InsertString(HWND hwndCtl , int index , LPCSTR lpsz); (2)删除项 int ListBox_DeleteString( HWND hwndCtl , int index); (3)取得有多少项 int ListBox_GetCount( HWND hwndCtl ); (4)选定某一项 Int ListBox_GetCurSel( HWND hwndCtl , int index ); 将iParam设定为-1,则取消所有项。 (5)确定目前选项的索引 int ListBox_GetCurSel( HWND hwndCtl ); 如果没有项目被选中,那么从呼叫中传回的iIndex值为LB_ERR。 (6)将某项目复制到文字缓冲区中 int ListBox_GetText( HWND hwndCtl , int index , LPCTSTR lpszBuffer); 5、菜单资源 (1)制作好菜单资源后,在对话框的Menu属性中选择刚才制作好的对话框。 (2)响应菜单操作。菜单点击后也会发送WM_COMMAND消息,id就是被选择菜单的id。 例子: case IDM_QUIT; EndDialog( hwnd , id ); case ID_MENUITEMOPEN: { MessageBox(hwnd,TEXT("打开"),TEXT(""),MB_OK); } 退出对话框: case IDC_BUTTONQUIT: { EndDialog(hwnd,IDD_MAIN); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服