我刚学ATL,现在想用ATL做一个控件,要求可以改变控件背景色、边框色,还要画上指定类型的网格,颜色也要可变,对于背景色、边框色我选择了stock属性,对于网格类型及其颜色,新增加了属性:long型和OLE_COLOR型,但问题因此产生:1、我用VC++6.0 制作该控件,编译后,用VB6.0建一个窗体,添加该控件,第一次运行前可以编辑该控件的各种属性,但只要一运行就会出现错误,提示:“System Error &H80004005(-2147467259),未指定的错误”,确定后,窗体也无法编辑了,只有关闭工程。怪哉,百思不得其解。2、由于前一个问题,我只好用VS7.0来做这个控件,还好,控件做成后,可以在VB6中添加、编辑并运行,但同时出现的问题是,在编辑状态下可以通过属性表设定控件对象的各种属性,包括背景色、边框色、网格类型、网格色等,但是对于stock类型的属性如背景色、边框色等,在运行程序时其属性和编辑状态下保持一致,即背景设定为蓝色,运行时控件即为蓝色,而自己添加的属性则不行,编辑时设定的属性,运行时全部失效,又恢复到缺省值,不知这是何故,怎样解决。以上两问题,还望高手赐教,谢谢!!!

解决方案 »

  1.   

    这种问题一般是参数类型的不支持所导致!你应该好好看看variant支持的类型!不行就一个一个方法或者属性屏蔽测试找出原因,用variant来替代它!
      

  2.   

    仔细研究一下MSDN的polygon例子吧。
      

  3.   

    第二个问题我已经解决,只要对相应的属性添加 PROP_ENTRY("GridStyle", 3, __uuidof(类名)) 就可以了,但第一个问题仍然无解。
      

  4.   

    看看http://support.microsoft.com/kb/q197257/