标题栏自绘是很多初学者最苦恼的问题,目前网上的例子要么是系统默认的标题按钮时不时的会重现出来,要么是影响了窗口非客户区原来默认的行为(去掉系统菜单)等等,各种的不如意,于是本人研究试验了下,感觉这个是比较完美的了,不影响任何原来窗口的特性,比如标题栏系统菜单等,要么是把非客户区去掉了,然后自己模拟,笔者也有这样处理过,不过这里只演示非客户区标题栏绘制的例子,代码简单易学,代码是用VS2008+SP1开发的。
没什么关键技术,就是NCPAINT和NCCALLSIZE这两个处理好。绘制的时候用CWindowDC dc(this);,然后设置绘制的裁剪区域,按钮用Dui的思想绘制并封装成一个类CDUIButton,这样可以随便往标题添加任何按钮。
以上内容来自:http://bbs.csdn.net/topics/390624967
感谢原作者,源码下载:NCSkinDemo.rar
当然也可以整个标题栏全部自绘,这样更简便些。先设置Dialog为无边框的,然后在OnPaint函数中指定上面一个区域绘制标题栏,元素可以以图片(位图)填充,这样做非常灵活,一些软件漂亮的界面都是采用图片GDI自绘拼出来的。
本文系清泛网整理。