第一部分 制造测试ActiveX控件的容器程序
第一步:
打开F:\Program Files\Microsoft Visual Studio 10.0\Samples\2052,可以看到一个VC2010Samples.zip的压缩包,解压之,里面有个C++的文件夹,继续打开其下的MFC\ole\TstCon,在里面有个TstCon.sln,打开之,里面有2个工程TCProps和TstCon,先编译TCProps,再编译TstCon,完成后,你应该在Debug目录下看到
TstCon.exe
,它正是我们需要的ActiveX测试工具.
第二步:
打开VS2010,点 “工具”-->“外部工具”,再点击“添加”按钮,再在下面的“标题”栏里,修改为TstCon(名称随便取),再在 “命令”栏里,选择第一步里编译好的TstCon.exe,再点“应用”,“确定”按钮即可。然后就可以在VC2010里点 “工具”-->“TstCon”,就可以象VC6那样测试ActiveX控件了。
测试方法: Tool -> TstCon Edit-> InsertNew Control 然后在列表中选择注册过的控件就可以了
第二部分 ocx文件的生成与注册
新建MFC ActiveX工程 编译 会在Debug文件夹下自动生成ocx文件,同时向注册表注册控件
从注册表中删除ActiveX控件的方法: 窗口键+R 打开开始运行
regsvr32 /u "K:\vc++深入详解\2015-07-02B ActiveX时钟\clock\Debug\clock.ocx"
路径获得的技巧:将ocx文件拖入运行窗口中 会自动生成路径
从注册表中添加ActiveX控件的方法:
regsvr32 "K:\vc++深入详解\2015-07-02B ActiveX时钟\clock\Debug\clock.ocx"
第三部分 初次的实验
int CclockCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
//::AfxMessageBox(_T("hi~"));
this->SetTimer(1,100,NULL);
return 0;
}
void CclockCtrl::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
this->Invalidate(); //使窗口无效,会导致窗口重绘 得以更新时间显示
COleControl::OnTimer(nIDEvent);
}
void CclockCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
if (!pdc)
return;
// TODO: Replace the following code with your own drawing code.
//pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
//pdc->Ellipse(rcBounds);
CTime time=CTime::GetTickCount();
CString str=time.Format("%H:%M:%S");
pdc->TextOutW(0,0,str);
}