⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alermview.cpp

📁 一些有用的资料,关于数学的常微分方程和线形代数的,快去下载吧
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -