透明对话框 对话框上就一个按钮,怎么才能使对话框透明,而且按钮正常显示,就像按钮直接显示在屏幕上一样?或者有没有其他实现方法,就是加入控件上画了一幅图,然后能够直接显示在屏幕上,没有后面的对话框,多谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://topic.csdn.net/u/20100405/13/97f377fc-615a-4732-9199-f3bbdbef028d.html 这是不可能的,控件只能跟窗口一起透明化,如果想达到你要的效果,只能用图片贴上去,使用UpdateLayeredWindow 来取代窗口的OnPaint函数进行窗口的刷新。 //实现对话框半透明 SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE)^0x80000);//为窗口加入GWL_EXSTYLE扩展 HINSTANCE hInst = LoadLibrary(_T("User32.DLL"));//加载动态链接库 if (hInst) { //定义函数指针,用于获取系统调用函数SetLayeredWindowAttributes typedef BOOL (WINAPI * MYFUNC)(HWND, COLORREF, BYTE, DWORD); MYFUNC fun = NULL; //取得SetLayeredWindowAttributes指针,其原型为: COLORREF clr(RGB(0, 0, 0)); //将进行透明处理的颜色 fun = (MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes"); if (fun) fun(this->GetSafeHwnd(), clr, 220, LWA_ALPHA);//改一下相关参数应该就可以了 FreeLibrary(hInst);//释放动态链接库 } 上面,把 LWA_ALPHA改成LWA_COLORKEY ,clr设置成你对话框的背景色应该能满足要求了 可以方法:建立一个对话框动态建立几个按钮;主要是确定按钮位置在对话框初始化的地方这样处理CRgn r1,r2,r3,rn; //建立区域r1.CreateRectRgn(x11,y11,x12,y12); //按钮1的区域r2.CreateRectRgn(x21,y21,x22,y22); //按钮2的区域........r1.CombineRgn(&r1,&r2,3); //1和2区合并r1.CombineRgn(&r1,&r3,3); //再合并3区......SetWindowRgn(r1,true);好了,这就是你要的结果了其实还有很多方法可以达到你的想法,这是比较简单的一种 9楼方法不错,如果是不规则按钮需要用regioncolorkey也可以 啥意思map<int,Process*> w_promap; 菜鸟问题 请教用vc设计数据库备份界面的问题!立即给分! 创建静态拆分器 GDI相关的位图问题 急用!偶要用Crect在窗口中央显示图象,各位老大帮偶看看这些coding怎么改啊? HELP:FormView中窗口不接受键盘消息 ※※※——在自己的程序中如何使用写字板的打印功能——※※※ 用Active/com实现office助手的效果(web模式) 请大侠、女侠帮忙!!!多谢 对一个数据库进行查询,select语句写在哪里? 求助,需要GDI+教程 CTreeCtrl的checkbox问题
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),
GWL_EXSTYLE)^0x80000);//为窗口加入GWL_EXSTYLE扩展
HINSTANCE hInst = LoadLibrary(_T("User32.DLL"));//加载动态链接库
if (hInst)
{
//定义函数指针,用于获取系统调用函数SetLayeredWindowAttributes
typedef BOOL (WINAPI * MYFUNC)(HWND, COLORREF, BYTE, DWORD);
MYFUNC fun = NULL; //取得SetLayeredWindowAttributes指针,其原型为:
COLORREF clr(RGB(0, 0, 0)); //将进行透明处理的颜色
fun = (MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if (fun)
fun(this->GetSafeHwnd(), clr, 220, LWA_ALPHA);//改一下相关参数应该就可以了
FreeLibrary(hInst);//释放动态链接库
}
方法:建立一个对话框
动态建立几个按钮;主要是确定按钮位置
在对话框初始化的地方这样处理
CRgn r1,r2,r3,rn; //建立区域
r1.CreateRectRgn(x11,y11,x12,y12); //按钮1的区域
r2.CreateRectRgn(x21,y21,x22,y22); //按钮2的区域
........
r1.CombineRgn(&r1,&r2,3); //1和2区合并
r1.CombineRgn(&r1,&r3,3); //再合并3区
......
SetWindowRgn(r1,true);好了,这就是你要的结果了其实还有很多方法可以达到你的想法,这是比较简单的一种
colorkey也可以