窗口透明问题

sghcpt 2010-08-03 06:11:52
我有多层次的窗口,是这样的,我创建了三个窗口, 一个继承于CDialog为dlg1,还有
两个继承与CWnd,分别dlg2和dlg3,我创建的时候是这样的层次关系。
dlg1是dlg2的父窗口,dlg2是dlg3的父窗口,dlg2和dlg3是POPUP的类型.
现在我要把dlg2弄成透明的。所以我在dlg2的创建函数哪里,如下
BOOL CWndClass::Create(const RECT& rect, CWnd* pParentWnd)
{
CString strClassName = AfxRegisterWndClass(0);
BOOL bRet = CWnd::CreateEx(0, strClassName, _T("window"), WS_POPUP | WS_VISIBLE, rect, pParentWnd,0,NULL);
SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(0, 0, LWA_ALPHA);
return bRet;
}
但是执行上面的代码后,dlg2和dlg3都不见了,请问这是什么原因,和怎么才可以实现只dlg2透明,其它不透明.
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamyxn 2010-08-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sghcpt 的回复:]
请问iamyxn,不太明白你的意思。
[/Quote]

一般POP_UP类型的窗口是不设置父窗口的,它是浮在最上层的。POP_UP类型的窗口经常因为设置不对导致显示不出来。你现在三个窗口都不透明的时候可以显示出来吗。
m_tornado 2010-08-04
  • 打赏
  • 举报
回复
SetLayeredWindowAttributes(0, 0, LWA_ALPHA);

改成

SetLayeredWindowAttributes(0, 128, LWA_ALPHA);

你设置成0,就完全透明了,怎么可能看得见呢?
sghcpt 2010-08-04
  • 打赏
  • 举报
回复
请问iamyxn,不太明白你的意思。
iamyxn 2010-08-04
  • 打赏
  • 举报
回复
POPUP类型的窗口的父窗口没有什么意义吧
sghcpt 2010-08-04
  • 打赏
  • 举报
回复
还是没有人回答,我最顶。
sghcpt 2010-08-04
  • 打赏
  • 举报
回复
怎么没有人回答,我顶。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧