一、设置窗体透明度和指定透明色(如指定了黑色,即所有黑色的部分将会变得透明)

DWORD dwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);

if((dwExStyle&WS_EX_LAYERED)!=WS_EX_LAYERED)

SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle|WS_EX_LAYERED);

HMODULE hInst = LoadLibrary(_T("User32.DLL"));

typedef BOOL (WINAPI *MYFUNC)(HWND, COLORREF, BYTE, DWORD);

MYFUNC SetLayeredWindowAttributes = NULL;

SetLayeredWindowAttributes = (MYFUNC)::GetProcAddress(hInst, "SetLayeredWindowAttributes");

if(SetLayeredWindowAttributes)

{

if(!SetLayeredWindowAttributes(m_hWnd, RGB(0,0,0), 150, LWA_COLORKEY|LWA_ALPHA))

{

assert(false && _T("SetLayeredWindowAttributes 失败了!"));

}

}

上面的代码:1、首先让WINDOWSTYLE加上GWL_EXSTYLE样式,因为SetLayeredWindowAttributes只能对这种样式操作,而只有PUPUP类型的窗体才能更成这种样式,所以也就是说,只有弹出窗体才能用这个函数设置透明度和透明色,主窗体是不行的

DUILIB 篇

一、皮肤路径更改问题

一旦确定了皮肤路径,中途是不能更改皮肤路径的,这样会导致在其它位置的图片找不到!!!!

二、如何实现拖动窗体

在XML中,给Window,加上caption属性,最后一个值就指定可拖动的标题栏的大小,标题栏的顶端默认是窗体顶部

代码:

三、图片的corner属性,九宫格拉伸

首先,要拉伸,必然图片要比窗体要小,才能看到拉伸效果,对于DUILIB的拉伸,说是参考了安桌的九宫格,但我试了试,应该没那么高级,也没搞清楚到底是怎么回事,反正这回,我试验着各种数据,实现了我想要的效果。贴几个博客吧,对我有很大的启发作用。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐