Aero自绘窗口标题,保留系统按钮
来源:互联网 发布:角斗士英语软件 编辑:程序博客网 时间:2024/06/05 18:02
1.自绘标题,保留系统按钮
窗口style需要是WS_OVERLAPPEDWINDOW
我之前用了WS_OVERLAPPED|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_BORDER|WS_CAPTION;没有WS_THICKFRAME,开启Aero时,界面启动后会有一个白边框,刷新后正常。
2.aero时窗口的透明效果在激活和非激活时是不同的,如果你的界面要保留这种效果,就要让系统处理wm_ncpaint消息。
3.系统按钮区域有子窗口时,怎样显示系统按钮。
一般来说,很多界面都会自己绘制系统按钮,当切换到aero效果时,自绘的按钮窗口将会遮盖住系统按钮。
有两种方法可以解决这个问题:
1)在子窗口的wm_mousemove消息里,模拟消息发送给框架窗口
void CSystembarCtrl::OnMouseMove( WPARAM wParam, LPARAM lParam )
{
if (_bDrawVistaEffects)
{
POINT point = {GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)};
HWND hFrame = GetAncestor( m_hWnd, GA_ROOT );
if (hFrame)
{
POINT ptScreen = point;
ClientToScreen(m_hWnd, &ptScreen);
DWORD dwPos = MAKELONG(ptScreen.x, ptScreen.y);
int nHittest = SendMessage(hFrame, WM_NCHITTEST, 0, dwPos);
PostMessage(hFrame, WM_NCMOUSEMOVE, nHittest, dwPos);
}
}
}
2)在子窗口的wm_nchittest消息里,调用DwmDefWindowProc
LRESULT CMFCRibbonBar::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if (_bDrawVistaEffects)
{
if (message == WM_NCHITTEST)
{
LRESULT lResult = DwmDefWindowProc(GetParent()->GetSafeHwnd(), message, wParam, lParam);
if (lResult == HTCLOSE || lResult == HTMINBUTTON || lResult == HTMAXBUTTON)
{
return HTTRANSPARENT;
}
}
}
DefWindowProc();
}
- Aero自绘窗口标题,保留系统按钮
- GDI+自绘按钮,无窗口句柄
- MFC Aero窗口[一]
- IOS更改系统自带的返回按钮标题和背景图片
- 窗口子类化实现自绘按钮如此简单
- Windows程序设计第九章子窗口控件--自绘按钮
- QT1 设置窗口标题 和最大化按钮
- Qt制作Aero特效窗口
- Qt制作Aero特效窗口
- Qt制作Aero特效窗口
- Qt制作Aero特效窗口
- c# 去掉Form窗口关闭按钮,保留窗体栏
- MFC自绘标题
- 隐藏系统返回按钮,保留系统滑动返回
- 取系统当前活动窗口标题
- 金蝶EAS,设置界面大小、窗口标题、按钮可用
- 自绘按钮
- 自绘位图按钮
- href=#与href=javascript:void(0)
- 深入探讨Varnish缓存命中率
- Linux查看文件夹大小的相关命令
- Linux 环境使用 Eclipse 搭建 Android 开发环境
- 算法导论P151 二叉查找树
- Aero自绘窗口标题,保留系统按钮
- coreboot(linuxBIOS)中bootblock源码分析
- 自省
- verilog中# 非阻塞赋值延迟,硬件看不到效果,浅探
- oracle分页
- magento,批量修改产品名称
- 未能加载文件或程序集 system.web.extensions解决方法
- IOS开发网络加载图片缓存策略之──ASIDownloadCache缓存策略
- WebService身份验证解决方案