资源描述
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);
}
展开阅读全文