whj_hbxf 2023-07-22 11:39 采纳率: 50%
浏览 4
已结题

CReBar如何跟随窗口变化调整宽度

public:
    CReBar m_ReBar;
    CMyDlgBar m_DlgBar;
    afx_msg void OnSize(UINT nType, int cx, int cy);
。。。。。。。。

BOOL CPageWeb::OnInitDialog()
{
    CDialogEx::OnInitDialog();
    // TODO:  在此添加额外的初始化

    m_ReBar.Create(this, NULL, WS_CHILD | WS_VISIBLE | RBS_AUTOSIZE, AFX_IDW_REBAR);
    m_DlgBar.Create(IDD_DLGBAR, this);

    CWnd* hwnd = AfxGetMainWnd();
    CRect rt;
    hwnd->GetClientRect(&rt);
    ScreenToClient(&rt);
    REBARBANDINFO rbi = { 0 };
    rbi.cbSize = sizeof(REBARBANDINFO);
    rbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_STYLE | RBBIM_ID | RBBIM_SIZE;
    rbi.fStyle = RBBS_VARIABLEHEIGHT | RBBS_GRIPPERALWAYS |CBRS_BORDER_TOP | RBBS_NOGRIPPER;  //
    rbi.hwndChild = (HWND)m_DlgBar;
    m_ReBar.GetReBarCtrl().InsertBand(0, &rbi);
    m_ReBar.SetWindowPos(NULL, 1, 0, rt.Width()-1, 30, SWP_SHOWWINDOW);
    CRect _rt;
    m_ReBar.GetClientRect(&_rt);
    _rt.left += 0;
    _rt.top += 0;
    _rt.right = rt.Width() - 1;
    _rt.bottom = 28;
    m_DlgBar.MoveWindow(&_rt);
    m_DlgBar.ShowWindow(SW_SHOW);

    return TRUE;  // return TRUE unless you set the focus to a control
}

程序能够正常运行

img

现在需要在窗口改变大小时,工具条也跟随调整,但是不知道该怎么写:

void CPageWeb::OnSize(UINT nType, int cx, int cy)
{
    CDialogEx::OnSize(nType, cx, cy);

    // TODO: 在此处添加消息处理程序代码
    
    
    Invalidate();//更新窗口
}

初学者求老狮帮忙。

  • 写回答

1条回答 默认 最新

  • threenewbee 2023-07-22 11:59
    关注
    
    
        m_ReBar.SetWindowPos(NULL, 1, 0, rt.Width()-1, 30, SWP_SHOWWINDOW);
        CRect _rt;
        m_ReBar.GetClientRect(&_rt);
        _rt.left += 0;
        _rt.top += 0;
        _rt.right = rt.Width() - 1;
        _rt.bottom = 28;
        m_DlgBar.MoveWindow(&_rt);
        m_DlgBar.ShowWindow(SW_SHOW);
    
    

    把这些代码写入 OnSize

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月16日
  • 已采纳回答 8月8日
  • 创建了问题 7月22日

悬赏问题

  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启