项目中用到Labview的slider控件,需要在程序中控制slider填充区域的颜色(图中绿色区域)
.
颜色参数为属性分组中的Pointer中的FillColor属性.
查找slider类的成员函数,希望找到能设置FillColor的函数,发现其中并没有直接设置的函数,但有一个获取CwPointer指针的函数
CWPointer * GetActivePointer()
{
CWPointer * result;
GetProperty(0x105, VT_DISPATCH, (void*)&result);
return result;
}
接着查找CwPointer的成员变量,发现了设置FillColor属性的方法
CWPointer : IDispatch
{
OLE_COLOR GetFillColor ( );
void PutFillColor ( OLE_COLOR _val );
于是尝试先通过slider变量获取Cwpointer属性,在调用Cwpointer的方法设置颜色,结果程序报错:提示CwPointer类为抽象类,不能实例化。由此发现了vs2005自动化向导的一个Bug:
没有正确的定义控件类包含的所有接口类(根本就没有定义),需要自己手动添加这些接口类。
手动添加接口类的方法:类视图->添加类->MFC->TypeLib中的MFC类
在类型库中找到Nat