本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/48054203
首先说一下GDI+Flat:我有写过一个GDI+Flat的系列博客,一共有10篇,都是顺着的,这是第一篇:GdiplusFlat(1)GDI+平面API:用GDI的思想进行GDI+编程,有兴趣的可以看一看。因为本篇中的绘图函数都是用的GDI+Flat,因此我们需要自己声明函数,自己定义数据结构,只用Win32和c语言的基本数据类型。
好了,废话不多说,先上图:
测试结果:XP、Win7(Areo/Basic)、Win8.1、Win10下都能很好的工作
如果觉得标题栏和边框不好看,可以改颜色,也可以改成渐变的,还可以用图片,比如画个透明玻璃的PNG图片,如果是带阴影的玻璃的图片,就和Win7的Aero差不多了,可惜我不会PS。
源代码如下:
#include "stdafx.h"
//#include <gdiplus.h>
//#include <gdiplusflat.h>
#pragma comment(lib,"gdiplus.lib")//very important
#include <windows.h>
#include <windowsx.h>
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"gdi32.lib")
#pragma comment(lib,"Msimg32.lib")
#include<OleCtl.h>
#pragma comment(lib,"OleAut32.lib")
//GDI+Flat
#define ARGB(a,r,g,b) ((int)(((BYTE)a)<<24)|(((BYTE)r)<<16)|(((BYTE)g)<<8)|((BYTE)b))
typedef struct _GdiplusStartupInput{
unsigned int GdiplusVersion;
unsigned int DebugEventCallback;
BOOL SuppressBackgroundThread;
BOOL SuppressExternalCodecs;
}GdiplusStartupInpu