最近我想写一个对话框和控件背景都透明的程序,也就是说我的控件上面的字体看上去就像是直接在桌面上显示一样。在网上查了很多资料,关于控件透明很多仁兄都说应该在OnCtlColor()函数中添加pDC->SetBkMode(TRANSPARENT); 来设置背景透明,但是我试了一下,根本没有效果。哪位大哥帮忙解决一下,多谢了。还有基本每个控件都有一个transparent属性,我试了一下,选中和不选中没有什么区别,我想问一下,这个属性在什么情况下使用呢?多谢各位了!
解决方案 »
- 有点复杂,望gelivable
- 一个数据包recv要多次收才能收到才3K数据,是什么原因,收发缓存都8K?????
- x.264编码器的使用
- winsock函数获取完整机器名
- 有选取网页部分内容保存的软件(IE插件)么?
- WINDOWS是怎样生成一个进程和它的主线程的??
- 求救!!!
- 关于多台电脑的串口通信,请高手执教!!!!!!不够可以在加!!!!
- 用HIBYTE,LOBYTE能取高位和低位,有什么函数能反向吗?
- vs2013,MFC测绘程序计算前方交会,后方交会,边长交会。
- [求助]在多核下,怎么返回当前运行的是哪个CPU的编号?
- vc使用多文档时关闭所有的frame后,菜单自动切换成另外一个,怎么不让它自动切换?
看看这个
http://www.vckbase.com/document/viewdoc/?id=1345
SetLayeredWindowAttributes在OnInitDialog()加入://加入WS_EX_LAYERED扩展属性
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)fun(this->GetSafeHwnd(),0,128,2);
FreeLibrary(hInst);
}
http://www.cnblogs.com/laowen/archive/2009/05/17/1458683.html代码网上能找到,我这边也有
typedef BOOL(FAR PASCAL*LAYERFUNC)(HWND,COLORREF,BYTE,DWORD); void SetTransparent(HWND hwnd,UINT alpha)
{
LAYERFUNC SetLayer;
HMODULE hmod=LoadLibrary(_T("user32.dll"));
SetWindowLong(hwnd,GWL_EXSTYLE,GetWindowLong(hwnd,GWL_EXSTYLE)|0x80000L);
SetLayer=(LAYERFUNC)GetProcAddress(hmod, "SetLayeredWindowAttributes ");
SetLayer(hwnd,0,alpha,0x2); FreeLibrary(hmod);
}