1.ActiveX控件编程的思路
①表达:OnDraw
②属性设置:
③方法设置:
④事件设置:
2.集体过程:
①显示时间:在OnDraw()中
CTime time = CTime::GetCurrentTime();
CString strTime = time.Format("%H:%M:%S");
pdc->TextOut(0,0,strTime);
②设置定时器:
OnCreate()中添加SetTimer;OnTimer()中添加Invalidate();
③属性设置:
添加默认属性:设置前景色/背景色
CBrush brush(TranslateColor(GetBackColor()));
pdc->FillRect(rcBounds,&brush);
pdc->SetBkMode(TRANSPARENT);
pdc->SetTextColor(TranslateColor(GetForeColor()));
添加自定义属性提示框:
BEGIN_PROPPAGEIDS(CClockActiveXCtrl, 2)
PROPPAGEID(CClockActiveXPropPage::guid)
PROPPAGEID(CLSID_CColorPropPage)
END_PROPPAGEIDS(CClockActiveXCtrl)
添加自定义属性:
void CClockActiveXCtrl::OnUpdateIntervalChanged(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加属性处理程序代码
if (m_UpdateInterval < 1000 || m_UpdateInterval > 5000)
{
m_UpdateInterval = 1000;
}
else
{
m_UpdateInterval = (m_UpdateInterval/1000)*1000;
}
KillTimer(1);
SetTimer(1,m_UpdateInterval,NULL);
SetModifiedFlag();
}
添加方法:
void CClockActiveXCtrl::Hello(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
AfxMessageBox(_T("Hello World"));
// TODO: 在此添加调度处理程序代码
}
添加事件:
在×××Ctrl类中添加事件:NewMinute
if (time.GetSecond() == 0)
{
NewMinute();
}