项目中用到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类
在类型库中找到National Instrucments UI

在VC++项目中使用Labview的slider控件,遇到设置填充颜色的问题。自动化向导生成的接口类名称与方法不匹配,导致无法直接设置FillColor属性。通过参考VC6.0的处理方式,手动创建和修改接口类,最终解决了颜色设置问题。同时发现VS2005自动化向导存在接口类错误和参数类型不一致的bug。
最低0.47元/天 解锁文章
1131

被折叠的 条评论
为什么被折叠?



