首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC CControlBar

MFC CControlBar
EN

Stack Overflow用户
提问于 2016-03-18 00:18:30
回答 2查看 395关注 0票数 0

如何确定/确定(无论是从控制条还是从它所连接到的框架) CControlBar连接到的帧的哪一边?

我知道你可以:

  1. 确定控制棒是否通过BOOL IsFloating( )const浮动;
  2. 告诉控制栏它允许连接到CBRS_ALIGN_TOP,AFX_IDW_DOCKBAR_TOP的帧的哪一边

但我不知道怎么找回它停靠在哪一边。希望有一个像CurrentlyDockedTo()这样的方法可以返回CBRS_ALIGN_TOP、AFX_IDW_DOCKBAR_TOP .

我在寻找最快的方法来找出主窗口中还有多少灰色空间.灰色矩形的大小。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-18 20:05:11

我对我的问题找到了一个非常简单的解决办法。这正是我需要的答案。在下面的帖子中找到了引导我走上正确道路的最初提示:

Detecting when a CControlBar's docking state has changed

我所要求的守则如下:

代码语言:javascript
复制
CPtrList& list = this->m_listControlBars;
POSITION pos = list.GetHeadPosition();

int total_cntrl_bars_found = 0;
while(pos)
{
  CControlBar* pBar = (CControlBar*)list.GetNext(pos);
  if(pBar)
  {
    if(!pBar->IsFloating())
    {
      total_cntrl_bars_found++;

      int total_matched_styles = 0;
      DWORD bar_style = pBar->GetBarStyle();
      if(bar_style & CBRS_ORIENT_VERT)
      {
        // Then the bar is vertially oriented
        // Will additionally also pass either the
        // right oriented or left oriented check depending
        total_matched_styles++;
      }
      if(bar_style & CBRS_ORIENT_HORZ)
      {
        // Then the bar is vertially oriented
        total_matched_styles++;
      }
      if(bar_style & CBRS_ALIGN_RIGHT)
      {
        // Then the bar is right aligned                                          
        total_matched_styles++;
      }
      if(bar_style & CBRS_ALIGN_LEFT)
      {
        // Then the bar is left aligned
        total_matched_styles++;
      }
      // There is also a check for top align
      // and bottom aligned
    }
  }
}       

下面是关于GetBarStyle()的更多信息

https://msdn.microsoft.com/en-us/library/6y1e7ff1.aspx

票数 0
EN

Stack Overflow用户

发布于 2016-03-18 03:49:47

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36073991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档