1.WinCE为了节省资源,不支持透明窗体,只能手工实现(GetPixel + SetPixel,但速度可想而知)因此,要想实现一个类似电视那种的悬空控制界面只能考虑得到桌面的DC,然后绘制图像。擦除图像只要刷新桌面即可,但是我无论如何也无法实现WinCE桌面的刷新,PostMessage 调用DC成员函数都不行....还不知道怎么办
2. 今天倒是解决了一个比较常见的问题:CButton上显示BMP图片。EVC下的CButton无法设置为BITMAP和ICON属性,所以SetBitmap和SetIcon都不行。一种解决方案是使用CBitmapButton,但是这个东西也不好用,要配置n多东西,很麻烦。另一种方法就是重载CButton。我用了这个方案。我从CButton继承了一个CztButton,重载了CButton的DrawItem方法(注意,重载CButton的OnPaint方法是不行的)。在这个方法里加入常规的BMP显示即可。为了加入Button的按下效果,还要根据参数LPDRAWITEMSTRUCT的itemState参数,当其为ODS_SELECTED时,即按钮被按下时,后面的图像显示要向左下分别移1位,显示大小都减2,这样就模拟了图像的“按入”效果。另,再加一个表示BMP图像的UINT参数,就可以了。最后的效果相当好,没的说。更重要的是CztButton可扩展性非常强。