窗口背景透明的方法 因为程序中涉及到背景贴图,但是位图的边框是圆角型的,将位图中多余的颜色透明之后,却看到窗口背景色在那个区域显示 很碍眼 有没有解决方法 查了一下 说是用setlayeredwindowattributes ,但是我贴的图不止一个 不知道该怎么办 有没有例子之内的呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void TransparentForm(HWND hWnd,int n) { HINSTANCE hInstDLL = LoadLibrary("User32.DLL"); if(hInstDLL) { SetWindowLong(hWnd,GWL_EXSTYLE, GetWindowLong(hWnd,GWL_EXSTYLE)^0x80000); typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); MYFUNC fun = NULL; fun=(MYFUNC)GetProcAddress(hInstDLL, "SetLayeredWindowAttributes"); if(fun)fun(hWnd,0,n,2); FreeLibrary(hInstDLL); } } 如果是不规则形状窗口 一定要用到SetWindowRgn的,不管是不是半透明 赞3楼的。可以根据背景图和所想要透明掉的其中颜色;从而得到区域。然后利用SetWindowRgn就可以将窗口创建为你所需要的不规则形状窗口 可以写个函数根据位图转成HRGN网上应该有这样的代码这样就能随意创建出需要的窗口区域 很简单,你获取窗口背景的DC,然后先把背景DC绘制出来,再绘制自己图像还有更厉害的,看链接~http://www.codeproject.com/KB/dialog/PerfectTranlucentDlg.aspx http://www.codeproject.com/ http://www.codeguru.com/ 到这两个网站去吧,一定有你想要的代码,呵呵! 还是这个简单http://www.vckbase.com/document/viewdoc/?id=1345 搞定了 还是用setwindowrgn实现的 谢谢各位 ActiveX控件子类化 EVC 下开发客户与pc上开发服务端通信. 关于COCKET编程的几个问题 请大家帮忙 偶是学生 这样的typedef是什么意思? SOS(紧急呼救!!!) 关于ListBox和ListCtrl的问题?? 多线程问题? 网络收到的音频存到filter中去 高分请教!请高手指教!!!!!!!!!!!!!! ado添加记录addnew()的问题(有代码) 文件传送问题 ActiveX问题
void TransparentForm(HWND hWnd,int n)
{
HINSTANCE hInstDLL = LoadLibrary("User32.DLL");
if(hInstDLL)
{
SetWindowLong(hWnd,GWL_EXSTYLE, GetWindowLong(hWnd,GWL_EXSTYLE)^0x80000);
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
fun=(MYFUNC)GetProcAddress(hInstDLL, "SetLayeredWindowAttributes");
if(fun)fun(hWnd,0,n,2);
FreeLibrary(hInstDLL);
}
}
可以根据背景图和所想要透明掉的其中颜色;从而得到区域。
然后利用SetWindowRgn就可以将窗口创建为你所需要的不规则形状窗口
根据位图转成HRGN
网上应该有这样的代码
这样就能随意创建出需要的窗口区域
http://www.codeproject.com/KB/dialog/PerfectTranlucentDlg.aspx