一、XP风格
1)创建manifest文件,首先在RES目录下建一个文件,命名Master.manifest然后用记事本打开放入
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Microsoft.Windows.XXXX"
processorArchitecture="x86"
version="5.1.0.0"
type="win32"/>
<description>Windows Shell</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
2,然后VC导入资源,把这个新建的文件导入,类型为24
3,用记事本打开rc 文件, 找到自定义资源的地方,改成如下句子
IDR_MANIFEST 24 MOVEABLE PURE "res\\Master.manifest" ,MOVABLE PURE是一定不能少的。
编译,,你的程序就有了XP的风格
二、对话框透明效果
在ONINITIALDIALOG中加入一下代码
//设置透明
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
ModifyStyleEx(0,0x00080000);
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes()函数指针
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)fun(this->GetSafeHwnd(),0,220,2);
FreeLibrary(hInst);
}
那个 fun的第3个参数为ALPHA
三、对话框圆角特效
CRect rt;
this->GetWindowRect(&rt);
CRgn rg;
rg.CreateRoundRectRgn(rt.left, rt.top, rt.right, rt.bottom, 55, 55);
this->SetWindowRgn(rg, FALSE);