这几天在win7下编了个MFC的小程序,是vs2008下完成的。
CDialog的属性设置了 Transparent == true。
然后自己填充了背景图片,
使用
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this)
{
return m_brBk;
}
return hbr;
}
最后发现在win7下,背景显示很正常。
但是同样的程序在xp下背景真透明了。
各位大侠来讨论一下,这方面win7和xp的差异。
CDialog的属性设置了 Transparent == true。
然后自己填充了背景图片,
使用
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd == this)
{
return m_brBk;
}
return hbr;
}
最后发现在win7下,背景显示很正常。
但是同样的程序在xp下背景真透明了。
各位大侠来讨论一下,这方面win7和xp的差异。
解决方案 »
- windows上嵌套定制IE!
- Windows编程有没有"写系统日志"的功能?
- 今天用glTexImage2D发现的问题
- 点击一个SPIN按钮,它的伴侣控件EDIT显示值会变化,但EDIT的关联值(int m_EditSpeed )却为什么不变??
- 关于CWnd::CreateControl函数的问题
- 联众是如何耍我的!
- AfxGetApp()返回的是什么???
- 怎么通过窗口HWND 判断当前是否是WORD文档,然后 获取其内容
- 真奇怪为什么VC里的FromView 里EDIT编辑框少了粘贴,剪贴,复制等功能
- InstallShiled中的语言支持问题?
- 如何获取listctrl里的scrollbar的定位值,我是说当拉动后,哪个消息处理这个。
- 请问有没有能让VS2010关键字斜体显示的插件?
像CMFC....的类,有些在XP下是显示异常的。
如果你想要透明效果的话可以在oninitialdialog里面加入。但是这个可能在会消耗资源,如果程序控件较多,会很明显的看出来。
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibraryW(_T("User32.DLL"));
if (hInst)
{
typedef BOOL(WINAPI *MYFUNC)(HWND, COLORREF, BYTE, DWORD);
MYFUNC fun = NULL;
fun = (MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes"); if (fun)
{
fun(this->GetSafeHwnd(), 0, 250, 2); //中间的250是调节透明度的
}
FreeLibrary(hInst);
}
谢谢各位捧场.