📄 alermview.cpp
字号:
if(IDOK==samdlg.DoModal())
{
m_pSet->Edit();
m_pSet->m___ID=samdlg.m_ID;
m_pSet->m_column1=samdlg.m_HOUR;
m_pSet->m_column2=samdlg.m_MINUTE;
m_pSet->m_column3=samdlg.m_SECOND;
m_pSet->m_column4=samdlg.m_CONTEXT;
m_pSet->m_column5=1;
m_pSet->Update();
UpdateData(FALSE);
MessageBox("成功修改一组闹钟");
CRecordsetStatus rStatus;
m_pSet->GetStatus(rStatus);
initial();
m_pSet->SetAbsolutePosition(rStatus.m_lCurrentRecord+1);
m_Report.DeleteAllItems();
OnInitialUpdate();
}
//CDBVariant varBookmark;
//m_pSet->GetBookmark(varBookmark);
}
void CALERMView::OnbtnNEW()
{
// TODO: Add your control notification handler code here
CTASKDLG samdlg;
samdlg.m_ID=GetMaxID()+1;
UpdateData(TRUE);
if(IDOK==samdlg.DoModal())
{
m_pSet->AddNew();
m_pSet->m___ID=samdlg.m_ID;
m_pSet->m_column1=samdlg.m_HOUR;
m_pSet->m_column2=samdlg.m_MINUTE;
m_pSet->m_column3=samdlg.m_SECOND;
m_pSet->m_column4=samdlg.m_CONTEXT;
m_pSet->m_column5=1;
m_pSet->Update();
m_pSet->Requery();
UpdateData(FALSE);
CRecordsetStatus rStatus;
m_pSet->GetStatus(rStatus);
initial();
m_pSet->SetAbsolutePosition(rStatus.m_lCurrentRecord+1);
m_Report.DeleteAllItems();
OnInitialUpdate();
MessageBox("成功添加一组闹钟");
}
}
long CALERMView::GetMaxID()
{
m_pSet->MoveLast();
return m_pSet->m___ID;
}
void CALERMView::OnSeproter()
{
// TODO: Add your control notification handler code here
}
void CALERMView::OnPaint()
{
CPaintDC dc(this); // device context for painting
if(flag==0)
{
initial();
flag=1;
}
// TODO: Add your message handler code here
GetClientRect(&rc);
CBrush brush,*oldbrush;
brush.CreateSolidBrush(RGB(0,0,0));
dc.SelectObject(&brush);
dc.Rectangle(0,0,220,200); //-----中心轴
oldbrush=dc.SelectObject(&brush);
dc.SelectObject(oldbrush);
brush.DeleteObject();
centerpos.x=rc.right/4;
centerpos.y=rc.bottom;
dc.SetViewportOrg(100,100); //------------------------------设置圆心为坐标原点;
CPen pen(0,1,RGB(0,255,0)),*oldpen;
dc.SelectObject(&pen);
dc.SetTextColor(RGB(0,255,0));
dc.SetBkColor(RGB(0,0,0));
for(angle=PI/6;angle<=2*PI;angle+=(PI/6))//-----------------------------------画表盘数字;
{
timenumber++;
timepos.x=80*sin(angle)-5;
timepos.y=-80*cos(angle)-8;
sprintf(timeword,"%d",timenumber);
if(timenumber<10)
{
dc.TextOut(timepos.x,timepos.y,timeword,1);
}
else
{
dc.TextOut(timepos.x,timepos.y,timeword,2);
}
//dc.SetPixel(90*sin(angle),-90*cos(angle),RGB(255,0,0)); //----------------------画正点像素点;(红色)
}
timenumber=0;
// dc.MoveTo(centerpos);
pen.DeleteObject();
pen.CreatePen(0,1,RGB(255,255,0));
dc.SelectObject(&pen);
SYSTEMTIME time;//----------------------------------------------------------------时间结构体,用以得到当前时间;
GetLocalTime(&time);//------------------得到当前时间;
dc.SetTextColor(RGB(0,255,0));
if(time.wHour<=12)
{
dc.TextOut(-20,40,"上午");
}
else
{
dc.TextOut(-20,40,"下午");
}
dc.MoveTo(0,0);
now_h.x=50*sin( (time.wHour%12) * (PI/6) );
now_h.y=-50*cos( (time.wHour%12) * (PI/6) );
dc.LineTo(now_h.x,now_h.y);
pen.DeleteObject();
pen.CreatePen(0,1,RGB(0,255,255));
dc.SelectObject(&pen);
dc.MoveTo(0,0);//-----------------------------------------------------------------画分针;70为分针长度;
now_m.x=80*sin( (time.wMinute) * (PI/30) );
now_m.y=-80*cos( (time.wMinute) * (PI/30) );
dc.LineTo(now_m.x,now_m.y);
dc.MoveTo(0,0);//-----------------------------------------------------------------画分针尾巴;10为长度;
now_m.x=-15*sin( (time.wMinute) * (PI/30) );
now_m.y=15*cos( (time.wMinute) * (PI/30) );
dc.LineTo(now_m.x,now_m.y);
pen.DeleteObject();
pen.CreatePen(0,1,RGB(255,0,0));
dc.SelectObject(&pen);
dc.MoveTo(0,0); //----------------------------------------画秒针;90为秒针长度;
now_s.x=90*sin( (time.wSecond) * (PI/30) );
now_s.y=-90*cos( (time.wSecond) * (PI/30) );
dc.LineTo(now_s.x,now_s.y);
dc.MoveTo(0,0); //----------------------------------------画秒针尾巴;20为秒针尾巴长度;
now_s.x=-20*sin( (time.wSecond) * (PI/30) );
now_s.y=20*cos( (time.wSecond) * (PI/30) );
dc.LineTo(now_s.x,now_s.y);
//pixelpos=0;
for(angle=PI/30;angle<=2*PI;angle+=(PI/30),pixelpos++)
{
if((pixelpos+1)%5==0)
{
timepos.y=-90*cos(angle);
timepos.x=90*sin(angle);
CBrush brush1;
brush1.CreateSolidBrush(RGB(255,255,0));
dc.SelectObject(&brush1);
dc.Ellipse(timepos.x-5,timepos.y-5,timepos.x+5,timepos.y+5);
dc.SelectObject(oldbrush);
brush1.DeleteObject();
}
else
{
timepos.y=-90*cos(angle);
timepos.x=90*sin(angle);
dc.SetPixel(timepos,RGB(255,255,0));
}
}
brush.CreateSolidBrush(RGB(255,0,0));
dc.SelectObject(&brush);
dc.Ellipse(-5,-5,5,5); //-----中心轴
oldbrush=dc.SelectObject(&brush);
dc.SelectObject(oldbrush);
brush.DeleteObject();
// Do not call CRecordView::OnPaint() for painting messages
}
void CALERMView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CHECK();
RECT rc;
rc.left=0;
rc.right=220;
rc.top=0;
rc.bottom=200;
InvalidateRect(&rc);
CRecordView::OnTimer(nIDEvent);
}
int CALERMView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CRecordView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
SetTimer(1,1000,NULL);
return 0;
}
void CALERMView::initial()
{
long MaxID;
MaxID=GetMaxID();
int j=GetIDCount();
for(long i=0;i<m_pSet->GetRecordCount();i++)
{
alerm[i].id=m_pSet->m___ID;
alerm[i].hour=m_pSet->m_column1;
alerm[i].minute=m_pSet->m_column2;
alerm[i].second=m_pSet->m_column3;
alerm[i].context=m_pSet->m_column4;
alerm[i].power=m_pSet->m_column5;
m_pSet->MoveNext();
}
m_pSet->MoveFirst();
}
BOOL CALERMView::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
// nowID=m_pSet->m___ID;
CString str;
CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CStatusBar* pStatus=&pFrame->m_wndStatusBar;
if(pStatus)
{
CRecordsetStatus rStatus;
m_pSet->GetStatus(rStatus);
str.Format("第%d条记录/共%d条",1+rStatus.m_lCurrentRecord,m_Report.GetItemCount());
pStatus->SetPaneText(1,str); //更新第二个窗格的文本
}
return CRecordView::OnCommand(wParam, lParam);
}
void CALERMView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRecordView::OnMouseMove(nFlags, point);
}
int CALERMView::GetIDCount()
{
IDCount=0;
m_pSet->MoveFirst();
while(!m_pSet->IsEOF())
{
IDCount++;
m_pSet->MoveNext();
}
m_pSet->MoveFirst();
return IDCount;
}
BOOL CALERMView::CHECK()
{
SYSTEMTIME now;
GetLocalTime(&now);
for(long i=0;i<m_pSet->GetRecordCount();i++)
{
if(alerm[i].hour==now.wHour && alerm[i].minute==now.wMinute && alerm[i].second==now.wSecond)
{
MessageBox(alerm[i].context);
}
}
return TRUE;
}
void CALERMView::OnPower()
{
// TODO: Add your control notification handler code here
CRecordsetStatus rStatus;
m_pSet->GetStatus(rStatus);
initial();
m_pSet->SetAbsolutePosition(rStatus.m_lCurrentRecord+1);
OnInitialUpdate();
}
void CALERMView::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POINT point;
GetCursorPos(&point);
CMenu menu;
menu.LoadMenu(IDR_DELETEMENU);
menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
*pResult = 0;
}
void CALERMView::OnDelete()
{
// TODO: Add your command handler code here
int i=m_Report.GetSelectionMark()+1;
m_pSet->SetAbsolutePosition(i);
OnbtnDELETE();
}
void CALERMView::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int i=m_Report.GetSelectionMark()+1;
m_pSet->SetAbsolutePosition(i);
OnbtnEDIT();
*pResult = 0;
}
void CALERMView::OnEdit()
{
// TODO: Add your command handler code here
int i=m_Report.GetSelectionMark()+1;
m_pSet->SetAbsolutePosition(i);
OnbtnEDIT();
}
void CALERMView::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int i=m_Report.GetSelectionMark()+1;
m_pSet->SetAbsolutePosition(i);
UpdateData(FALSE);
*pResult = 0;
}
void CALERMView::OnFileNew()
{
// TODO: Add your command handler code here
OnbtnNEW();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -