MusicPlayer2
MusicPlayer2 copied to clipboard
自带的标题栏样式在Windows11下顶部有白条
而切换到系统标题栏样式又不是很和谐,请问能否优化一下
win11,一样有这样情况。22H2 版本号22621.1992
我win11也有这个情况
看了一下,发现
void CMainDialogBase::ShowSizebox(bool show) { if (show) { ModifyStyle(0, WS_SIZEBOX, SWP_FRAMECHANGED); // 还原大小边框 } else { ModifyStyle(WS_SIZEBOX, 0, SWP_FRAMECHANGED); // 去掉大小边框 } }
这个函数有问题
如果去掉大小边框,白条就消失了(当然,也会造成无法通过拖拽窗口边缘改变大小)
如果想去掉白条,又可改变大小
那么就需要自己实现一个拖拽窗口边缘改变大小的功能
看了一下,发现
void CMainDialogBase::ShowSizebox(bool show) { if (show) { ModifyStyle(0, WS_SIZEBOX, SWP_FRAMECHANGED); // 还原大小边框 } else { ModifyStyle(WS_SIZEBOX, 0, SWP_FRAMECHANGED); // 去掉大小边框 } }
这个函数有问题 如果去掉大小边框,白条就消失了(当然,也会造成无法通过拖拽窗口边缘改变大小) 如果想去掉白条,又可改变大小 那么就需要自己实现一个拖拽窗口边缘改变大小的功能
虽然只有上面宽一点不过其实这个边框是四面等宽的,其他三面有透明区域
这里做不出来的主要问题是现在的自绘界面(一个CStatic控件)吃掉了所有点击消息(这是正常的,也需要这样)
自绘标题栏的各种功能就是在这个CStatic控件上自己实现的
但是播放列表是主窗口的,消息由主窗口处理,就很割裂
另外去掉这个边框多半是需要再自绘一个边框(比如一个像素宽)的,不然感觉不太好
观察其他没有边框的MFC程序比如MPC-BE(按快捷键1)是占用窗口内部的数个像素做这个功能,
而这种方式只适合没有标题栏(连自绘的也没有)的情况(也就是窗口内部全是一致的内容),不然关闭按钮等很难搞
还有就是如果MFC窗口程序(主界面是窗口而不是只提供某种内容)适合去掉边框为什么任务管理器也是这样的
(不知道win11改了没有)
win11也是这样的
改天我再想办法尝试一下能不能帮忙把这个问题修复了