有解决办法。不过如果你的线条要改变的话,效果就可能不太好。方法是:不要使用 SetLayeredWindowAttributes 函数,而是使用 SetWindowRgn 函数。把你的线条集合作为一个异形窗口的形状,这样天然实现了你想要的最理想的全透明,而且还兼容 Windows 2000 之前的操作系统。
解决方案 »
- 关于wm_create的疑问
- C语言解决常识问题,,帮忙,急,
- 实现屏幕取词时遇到些问题
- 属性页如何改变Tab上的颜色???????(急)
- 如何解决 PostMessage 导致的指针参数变量容易丢失的问题?
- 有人用vc++写过windows下的power led, reset led, floppy led的测试程序么?请帮忙来
- 算法问题:如何快速的使有序数组变得随机无序
- 请教VC数据库问题,高分请教!!!高人请进!!!!
- listctrl用icon方式显示,请问怎样把纵向的滚动条改为横向的呢
- 关于Keybd_event函数的使用
- 有用Xtreme ToolkitPro v11.2.1的吗?我遇到一个奇怪问题,来看看
- sql数据库如何和应用程序一起打包发送
SetWindowRgn倒是不会闪烁,但是对于复杂形状会比较麻烦,比如文字窗体。文字窗体虽然可以通过文字的路径转换成窗口边界,但是你如果希望得到良好效果的话,需要对文字进行反锯齿处理。
最好的方法是在DX表面直接绘制你的窗体。
我也这么期待,虽然后期我那个线条是可移动的,但现在的问题是 SetWindowRgn 函数编译出错,说不是三个
参数,其实查询得到都是三个参数的,不知道你使用的时候有没有发现这个错误啊。
我的要求了 因为这个SetWindowRgn 里 HRGN类成员里没有直线函数,有椭圆和矩形的我现在在使用E_xplorer 介绍的办法,SetLayeredWindowAttributes可以设置某种颜色为透明啊,在这里你只要设置对话框的背景色为透明即可。
实验下 现在出在得到背景颜色的点上了。
欢迎大家一起来讨论
他的代码和解释如下:一个对话框
想把指定的颜色的窗口背景透明掉 void CtestmfcDlg::OnBnClickedOk()
{
HDC dc = ::GetDC(this-> m_hWnd);
COLORREF cref = ::GetBkColor(dc); //SetBkMode(dc,TRANSPARENT) ;
SetWindowLong(this-> m_hWnd , GWL_EXSTYLE,GetWindowLong(m_hWnd,GWL_EXSTYLE)|WS_EX_LAYERED); ::SetLayeredWindowAttributes(this-> m_hWnd ,cref , 127 , LWA_COLORKEY);
} 这样总是不成功 但改改可以把整个窗体给透明了
请问 我想把窗口的背景色透明了该怎么做后来他解决了 这么说的:已解决 取背景色出错请问上面代码有什么错的地方么,我现在不要解决透明后线条的移动问题,
现在首先要解决的是先把背景透明了线条和按钮显示出来先的问题,
请大家帮着一起看看上面的代码 那是能实现的 就是取背景色出了点问题造成的。
http://blog.csdn.net/Tinary3v0/archive/2008/10/19/3097884.aspx
下载实例地址:
http://download.csdn.net/source/700104记住到文章中去看缺点和注意事项。
我觉得既然是自己的窗口,那么设定自己想的背景色就好了,一般设为RGB(255, 0, 255),这个颜色在任何图像中几乎不会用到.
[email protected]
谢谢!
http://download.csdn.net/source/2375702
Alphac.BlendOp = AC_SRC_OVER;
Alphac.BlendFlags = 0;
Alphac.SourceConstantAlpha = 0;
Alphac.AlphaFormat = 0;
CClientDC dc(GetParent());
AlphaBlend(pDC->m_hDC,0,0,btnRect.right,btnRect.bottom,
dc.m_hDC,0,0,btnRect.right,btnRect.bottom,
Alphac);用AlphaBlend函数吧可以控制明度在0-255范围内。值越大越透明
*pDC是要透明的CDC
dc是背景的CDC透明单个CDC能实现部分组件透明;如果透明正个窗体就用
CDC
CClientDC dc=创建一个谦容DC函数(pDC);//串的值是当前
范围是当前CDC的宽高,
AlphaBlend函数想透明谁就透明谁;
要先获得要透明窗体的CDC比如透明windows XP 的任务栏
枚举 任务栏上CDC
做透明即可