炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3486|回复: 5

如何设置窗口标题栏自绘按钮位置固定?

[复制链接]

该用户从未签到

发表于 2013-4-17 18:32:32 | 显示全部楼层 |阅读模式
标题栏上有最大化/最小化/关闭三个默认按钮,他们的位置在窗口最大化的时候位置正好,但是我如果要自绘一个按钮在标题栏上,就像金山毒霸那个皮肤按钮或者设置菜单按钮,但是在窗口最大化的时候,这两个按钮位置会偏移,请问如何让这些自绘的按钮像最大化那种按钮一样位置固定?

该用户从未签到

发表于 2013-4-18 09:11:05 | 显示全部楼层
你看看360那个例子,例子中标题栏的按钮都是自绘的,主要思路是写一个自适应布局函数,在窗体改变大小时调用这个函数就行了

该用户从未签到

 楼主| 发表于 2013-4-18 22:06:17 | 显示全部楼层
360 那个例程中的按钮只有关闭按钮有响应事件

该用户从未签到

发表于 2013-4-19 09:32:20 | 显示全部楼层
原理一样的,按照关闭按钮响应事件,把最大化按钮响应事件也加上
例子中有这个函数void CMainWnd::AdjustLayout(),,在最大化响应函数里调用AdjustLayout()就可以了,并且例子中AdjustLayout()实现了按钮的自适应布局。

该用户从未签到

发表于 2013-4-19 09:41:19 | 显示全部楼层
//最大化按钮响应事件
BOOL CMainWnd::OnEventBtnClick_Max(HELE hEle,HELE hEleEvent)
{
        if(hEle!=hEleEvent) return FALSE;
        //判断窗口当前状态,是否最大化
        if(!XWnd_IsMaximizeWnd(m_hWindow))
        {
                //将窗口最大化,按钮图标换成还原图标
                XWnd_MaximizeWnd(m_hWindow,TRUE);
                XBtn_SetImageLeave(m_hBtnMax,XImage_LoadFile(L"btn\\RestoreNormal.png"));
                XBtn_SetImageStay(m_hBtnMax,XImage_LoadFile(L"btn\\RestoreHover.png"));
                XBtn_SetImageDown(m_hBtnMax,XImage_LoadFile(L"btn\\RestoreDown.png"));
        }
        else
        {               
                //将窗口还原,按钮图标换成最大化图标
                XWnd_MaximizeWnd(m_hWindow,FALSE);
                XBtn_SetImageLeave(m_hBtnMax,XImage_LoadFile(L"btn\\MaxNormal.png"));
                XBtn_SetImageStay(m_hBtnMax,XImage_LoadFile(L"btn\\MaxHover.png"));
                XBtn_SetImageDown(m_hBtnMax,XImage_LoadFile(L"btn\\MaxDown.png"));
        }
        AdjustLayout();
        return TRUE;
}
响应函数大概就是这样,关键是调用AdjustLayout();

该用户从未签到

 楼主| 发表于 2013-4-19 11:17:50 | 显示全部楼层
非常感谢您的耐心回复!向您致敬!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

GMT+8, 2024-9-20 00:25 , Processed in 0.067862 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表