使用Compact Framework绘制ListBox的所有者

时间:2011-02-10 11:06:09

标签: c# windows-mobile compact-framework listbox

我想继承ListBox控件并设置LBS_OWNERDRAWVARIABLE‎样式。子类化没有问题,我可以通过自己的WndProc获取消息。 (实际上,在这种情况下,我将ListBox的父类子类化,因为它应该接收WM_MEASUREITEMWM_DRAWITEM消息。问题是,我从未收到WM_MEASUREITEMWM_DRAWITEM消息,控件继续自行绘制。

WM5.0及更高版本应支持这两种风格:
WinCE3.0既不支持:http://msdn.microsoft.com/en-us/library/ms959988.aspx
WinCE5.0支持:http://msdn.microsoft.com/en-us/library/aa453299.aspx

即使LBS_OWNERDRAWFIXED也是一个开始,但我无法继续工作。

我最好的猜测是LBS_OWNERDRAWx样式需要在CreateWindowEx()时间设置,因为SetWindowLong()似乎不会改变它。如果是这种情况,CF不公开任何让我覆盖窗口创建的方法,也不暴露任何类似CreateParams(在完整框架中)或PreCreateWindow()允许在创建之前修改窗口样式的东西。 (他们都在Control班级,但他们是internal,因此无法访问。

有没有人设法在CF上使用实际的Windows ListBox控件成功完成所有者绘图(甚至修复)?或者,有没有人想出一种方法来覆盖在基于控件的控件中传递给CreateWindowEx()的窗口样式?如果是这样,请分享您的秘密: - )

注意:我不想从头开始创建列表控件;我能做到这一点,那里有很多很好的例子,但这不是这个问题的关键。

CF2.0; WM6.1。

0 个答案:

没有答案