用V C ++实现异形窗口
大连铁道学院(116028)李文辉 随着Microsoft 凭借Windows 在操作系统上取得的巨大成绩,Windows 用户界面也日益成为业界标准
统一的界面给广大用户对应用软件的学习与使用带来了很大方便
但每天都面对同一副面孔,日久天长难免会产生一些厌倦,开发一些“离经叛道”,一改 Windows 应用程序千篇一律的“标准”界面,一定会给你带来一种清新的感觉
标准Windows 应用程序窗口一般为带有标题栏的浅灰色矩形外观,因而“异形”对话框/窗口也主要是颜色与外形上动手脚
改变背景颜色 改变对话框(窗口)的背景颜色是最简单的改变 Windows 应用程序外观的方法,根据 Windows 创建与管理机理,一般有两种方法
一种是处理 WM_CTLCOLOR消息,首先创建所选背景颜色的刷子,然后调用SetBkColor()或 SetDialogBkColor()以所创建的刷子来绘制窗口或对话框的背景
需要重画窗口或对话(或对话的子控件)时,Windows 向对话发送消息 WM_CTLCOLOR,应用程序处理WM_CTLCOLOR 消息并返回一个用来绘画对话背景的刷子句柄
另外一种是响应Windows 的WM_ERASEBKGND 消息,Windows 向窗口发送一个WM_ERASEBKGND 消息通知该窗口擦除背景,可以使用VC++的ClassWizard重载该消息的缺省处理程序来擦除背景(实际是用刷子画),并返回 TRUE 以防止 Windows 擦除窗口
2.改变窗口外形 通过使用新的SDK 函数 SetWindowRgn(),可以将绘画和鼠标消息限定在窗口的一个指定的区域,因此实际上是使窗口成为指定的不规则形状(区域形状)
“区域”是 Windows GDI 中一种强有力的机制,区域是设备上的一块空间,可以是任意形状,复杂的