1、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;dwTi
2、me:时间。例如:SetTimer(hwnd,0,1000,MyTimerProc);void CALLBACK TimerProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime )SYSTEMTIME time;GetLocalTime(TCHAR strTime256;/%后面的 0 表示不够的位数补零,5 是总位数wsprintf(strTime,”%04d-%02d-%02d %02d:%02d:%02d”,time.wYear,time.wMonth,timw.wDay,time.wHour,time.wMinute,time.w
3、Second);2、得到当前日期void GetLocalTime(LPSYSTEMTIME); /LP 是指针的前缀例如:SYSTEMTIME stLocal;char chBuf256; GetLocalTime(/显示时间间隔Wsprintf(chBuf,TEXT(“%u%u%u %u:%u:%u:%u 周%drn”),stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute,stLocal.wSecond,stLocal.wMilliseconds,stLocal.wDayOfWeek);Messag
4、eBox(NULL,chBuf,”,MB_OK);SetTimer(hwnd,1,1000,TimerProc);例 2:void CALLBACK MyTimerProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime )SYSTEMTIME stLocal;GetLocalTime(TCHAR strTime256;/%后面的 0 表示不够的位数补零,5 是总位数wsprintf(strTime,“%i 年%i 月%i 日 %i:%i:%i“,stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLoca
5、l.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”+
6、“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 hwnd
7、Check=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
8、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_G
9、etCurSel( 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);