Windows MobileVisual C++ 7.1Visual C++ 7.0Windows 2003Windows 2000Visual C++ 6.0Windows XP移动应用MFC中级开发Visual StudioWindowsC++
PocketPC 上带有自定义图像背景的透明控件
PocketPC 上带有自定义图像背景的透明控件
引言
我在 PPC 2002 上编写一个程序,该程序的 UI 需要一个带有位图图像背景的对话框。 在 eVC++ 3.0 对话框模板编辑器中设计对话框时,我添加了静态文本、组框等控件。 我检查了添加到对话框中的每个控件的属性中的透明选项。 但是在 PPC 2002 上,透明选项不像在 PC 平台操作系统上那样工作。 在 CE 上,透明窗口的行为就像设置了 WS_CLIPCHILDREN
样式一样。 你可以看到通过父对话框窗口本身。 这绝对不是我希望的效果。
在 http://www.pocketpcdn.com/ 和 http://www.pocketpcdn.com/articles/transparent_static.html 上有一篇文章介绍如何制作透明静态文本。 它基本上在父对话框过程的 WM_PAINT
处理程序中绘制所有静态文本。 但是,如果您有其他控件,例如组框,则必须自己绘制组框。
为了解决这个问题,我使用了 WM_CTLCOLORSTATIC
消息处理程序。 我首先使用要用作对话框背景的位图图像创建一个模式画笔。 然后在对话框过程中的 WM_CTLCOLORSTATIC
消息处理程序中,我返回之前创建的画笔句柄。 这种方法的缺点是您必须为每个要透明的控件创建单独的画笔,这意味着更多的内存使用。 但是你可以得到想要的效果。