📄 timer.h
字号:
//这是一个小闹钟sdk程序,支持添加,俢改,删除响铃事件,到点响铃、对话框提醒。
//倪梓鹏 2003/5/14
#include <windows.h>
#include <commctrl.h>//注意这个头文件,要想使用扩展的一些控件就要用这个头文件
#pragma comment(lib,"comctl32.lib")//编译时增加comctl32.lib,里面有扩展控件的接口
#include "resource.h"
#include "List.h"
#define iColMax 4
//=================================================================================
//listview控件添加项目
//iItem为纵向列数,iSubItem为横向列数,lpstr为显示内容
//成功返回TRUE,失败则返回FALSE
BOOL AddItem(HWND hWndListView, int iItem,int iSubItem, LPSTR lpstr);
//-----------------------------------------------------------------------
//初始化控件ListView表头
//iCol为横向列序数,iWidth为某列宽度,lpstr为显示内容
//成功返回TRUE,失败则返回FALSE
BOOL InitListViewColumns(HWND hListView, int iCol, int iWidth, LPSTR lpstr) ;
//-----------------------------------------------------------------------
//选择ListView控件的某一项
//hlistview 是listview 控件句柄
//成功返回该项索引,失败则返回-1
int GetSelectItem(HWND hListView);
//BOOL GetSelectItem(HWND hListView, TCHAR *s);
//-----------------------------------------------------------------------
//删除ListView控件的某一项
//hlistview 是listview 控件句柄,ipos该项索引, L为表
//成功返回TRUE,失败则返回FALSE
BOOL DelItem(HWND hListView, int ipos, EVENTLIST &L);
//-----------------------------------------------------------------------
//俢改ListView控件的某一项前的初始化工作
//hMaindlg是主窗口句柄,hChildDlg是子对话框句柄
//成功返回TRUE,失败则返回FALSE
BOOL MordifySetting(HWND hMaindlg, HWND hChildDlg );
//-----------------------------------------------------------------------
//获得要俢改的ListView控件的某一项信息在链表中的位置
//hMaindlg是主窗口句柄,hdlg是子对话框句柄, L是表
LPEVENTNODE MordifySetting(HWND hMaindlg,HWND hdlg, EVENTLIST &L );
//-----------------------------------------------------------------------
//响铃时间控制函数,SetTimer最后的参数
VOID APIENTRY TimeEventProc(HWND, UINT, UINT, DWORD);
//-----------------------------------------------------------------------
//DialogBox消息处理函数
BOOL APIENTRY lpDialogFunc (HWND, UINT, WPARAM, LPARAM) ;
//-----------------------------------------------------------------------
//主窗口过程函数
LRESULT APIENTRY WndProc (HWND, UINT, WPARAM, LPARAM) ;
//===================================================================================
//以下部分是有关对控件listview的操作
//-----------------------------------------------------------------------
BOOL AddItem(HWND hListView, int iItem, int iSubItem, LPSTR lpstr)
{
if( 0 == iSubItem)
{
LV_ITEM lvi;
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;
lvi.stateMask = 0;
lvi.state = 0;
lvi.iItem = iItem;
lvi.iSubItem = iSubItem;
lvi.pszText = lpstr; // sends an LVN_GETDISPINFO
if( ListView_InsertItem(hListView,(LPARAM)&lvi) == -1)
return FALSE;
}
else if( 0 < iSubItem)
ListView_SetItemText(hListView, iItem, iSubItem ,lpstr);
return TRUE;
}
//------------------------------------------------------------------------
BOOL InitListViewColumns(HWND hListView, int iCol, int iWidth, LPSTR lpstr)
{
if ( iCol <= iColMax )
{
LVCOLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
// Add the columns.
lvc.iSubItem = iCol;
lvc.pszText = lpstr;
lvc.cx = iWidth; // width of column in pixels
lvc.fmt = LVCFMT_LEFT; // left-aligned column
if (ListView_InsertColumn(hListView, iCol, &lvc) == -1)
return FALSE;
return TRUE;
}
else
return FALSE;
}
//-------------------------------------------------------------------------
int GetSelectItem(HWND hListView)
{
int ipos;
ipos = ListView_GetNextItem(hListView, -1, LVIS_SELECTED);
return ipos;
}
//-------------------------------------------------------------------------
BOOL DelItem(HWND hListView, int ipos, EVENTLIST &L)
{
if((GetSelectItem(hListView) == -1) || (0 == L.size))
return FALSE;
TCHAR szTime[256], szListViewItemText[256];
LPEVENTNODE temp1, temp2;
temp1 = L.head;
ListView_GetItemText(hListView, GetSelectItem(hListView) ,0, szListViewItemText,sizeof(szListViewItemText));
while (NULL != temp1)
{
wsprintf(szTime, "%d时%d分%d秒", temp1->iHour, temp1->iMin, temp1->iSecond );
if(lstrcmp(szListViewItemText, szTime) == 0)
{
temp2 = temp1->next;
DelListNod(L,temp1);
temp1 = temp2;
ListView_DeleteItem(hListView, GetSelectItem(hListView) );
}
else
temp1 = temp1->next;
}
return TRUE;
}
//-------------------------------------------------------------------------------------------------------
BOOL MordifySetting(HWND hMaindlg, HWND hChildDlg )
{
int ipos;
TCHAR szItemText[256], szSubItemText[256];
ipos = GetSelectItem(GetDlgItem(hMaindlg, IDC_LISTVIEW));
if(ipos == -1)
return FALSE;
ListView_GetItemText(GetDlgItem(hMaindlg, IDC_LISTVIEW), ipos ,0, szItemText, sizeof(szItemText));
ListView_GetItemText(GetDlgItem(hMaindlg, IDC_LISTVIEW), ipos ,1, szSubItemText, sizeof(szSubItemText));
SetDlgItemText(hChildDlg, IDC_EDIT, szSubItemText);
return TRUE;
}
//------------------------------------------------------------------------------------
LPEVENTNODE GetMordifyNode(HWND hMaindlg, HWND hChildDlg, EVENTLIST L )
{
int ipos;
LPEVENTNODE temp = NULL;
TCHAR szItemText[256], szSubItemText[256], szBuffer[256];
ipos = GetSelectItem(GetDlgItem(hMaindlg, IDC_LISTVIEW));
if(ipos != -1)
{
temp = L.head;
ListView_GetItemText(GetDlgItem(hMaindlg, IDC_LISTVIEW), ipos ,0, szItemText, sizeof(szItemText));
ListView_GetItemText(GetDlgItem(hMaindlg, IDC_LISTVIEW), ipos ,1, szSubItemText, sizeof(szSubItemText));
while (NULL != temp)
{
wsprintf(szBuffer, "%d时%d分%d秒", temp->iHour, temp->iMin, temp->iSecond );
if( (lstrcmp(szItemText, szBuffer) == 0)&& (lstrcmp(szSubItemText, temp->szConten) == 0))
break;
temp = temp->next;
}
}
else
temp = NULL;
return temp;
}
//--------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -