mfc 窗口透明的问题~~

酥破曼 2009-07-23 08:24:23
现有一个mfc程序 里面有个flash的ocx控件~~~怎么把背景等全部透明 只留下那个播放的flash~~~
本人初学,希望各位高手详细指点~~~多多感谢~~~~
...全文
266 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoulie 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dodogun 的回复:]
你是要透明对话框窗品吗?

本人的代码:
DWORD dwExStyle = ::GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE);

if ((dwExStyle & 0x80000) != 0x80000)
{
::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, dwExStyle ^ 0x80000);
}

COLORREF  m_clrMask = RGB(255,255,255);

typedef int (WINAPI* LPFUNC)(HWND, COLORREF , BYTE, DWORD);

HINSTANCE hins = ::LoadLibrary("User32.DLL");

if(hins)
{

LPFUNC func2 = (LPFUNC)GetProcAddress(hins,"SetLayeredWindowAttributes");

if(func2)
{

func2(GetSafeHwnd(), 0, 230,2);//LWA_ALPHA//
  /*
   hwnd是透明窗体的句柄,
    crKey为颜色值,// 掩码的颜色,可以用RGB(r,g,b)来指定
 
  bAlpha是透明度,取值范围是[0,255],

    dwFlags是透明方式,可以取两个值:
    当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;
    当取值为LWA_COLORKEY时,窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。
    LWA_ALPHA = 0x2
    LWA_COLORKEY=0x1
    也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。
    要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性
    (旧的sdk没有定义这个属性,所以可以直接指定为0x80000).
    WS_EX_LAYERED = 0x80000
*/
}
FreeLibrary(hins);
}
[/Quote]
这个是设置整个窗口包括子窗口都是透明的
dodogun 2009-07-24
  • 打赏
  • 举报
回复
你是要透明对话框窗品吗?

本人的代码:
DWORD dwExStyle = ::GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE);

if ((dwExStyle & 0x80000) != 0x80000)
{
::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, dwExStyle ^ 0x80000);
}

COLORREF m_clrMask = RGB(255,255,255);

typedef int (WINAPI* LPFUNC)(HWND, COLORREF , BYTE, DWORD);

HINSTANCE hins = ::LoadLibrary("User32.DLL");

if(hins)
{

LPFUNC func2 = (LPFUNC)GetProcAddress(hins,"SetLayeredWindowAttributes");

if(func2)
{

func2(GetSafeHwnd(), 0, 230,2);//LWA_ALPHA//
/*
 hwnd是透明窗体的句柄,
  crKey为颜色值,// 掩码的颜色,可以用RGB(r,g,b)来指定

  bAlpha是透明度,取值范围是[0,255],

  dwFlags是透明方式,可以取两个值:
  当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;
  当取值为LWA_COLORKEY时,窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。
  LWA_ALPHA = 0x2
  LWA_COLORKEY=0x1
  也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。
  要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性
  (旧的sdk没有定义这个属性,所以可以直接指定为0x80000).
  WS_EX_LAYERED = 0x80000
*/
}
FreeLibrary(hins);
}
konj 2009-07-24
  • 打赏
  • 举报
回复
搜索 TRANSPARENT
fuhuiming 2009-07-24
  • 打赏
  • 举报
回复
ON_WM_CTLCOLOR()中pDC->SetBkMode(TRANSPARENT);
酥破曼 2009-07-23
  • 打赏
  • 举报
回复
顶起~~各位高手详细指点啊~~~~~
酥破曼 2009-07-23
  • 打赏
  • 举报
回复
拜托详细讲一下嘛~~~
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=768
酥破曼 2009-07-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 trasin8848 的回复:]
ON_WM_CTLCOLOR()
[/Quote]
大侠~~具体解释解释啊~~
古月无华 2009-07-23
  • 打赏
  • 举报
回复
ON_WM_CTLCOLOR()

15,979

社区成员

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

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