gpt4 book ai didi

c++ - 第四个 CDockablePane 大小不正确

转载 作者:行者123 更新时间:2023-11-28 07:04:44 24 4
gpt4 key购买 nike

我有一个使用 Visual Studio 2008 实现的单文档 MFC 项目。

这是我遇到的问题的图片。为了您的安全,此图像已被编辑。

An image with four panes

如果图像没有加载到您的网络浏览器中,这里是它的 ASCII 渲染:

---------------------------------------------------
| Pane 1 | Pane 2 | Pane 3 | P | (Pane 4 is |
| | | | a | too small |
| | | | n | no matter |
| | | | e | what width |
| | | | 4 | I give it.)|
| | | | | |
---------------------------------------------------

最左边的三个 Pane 大小正确,但无论我给它什么宽度,第四个 Pane 的大小都相同(不正确)。

这是我的 CMainFrame::OnCreate()看起来像:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// Omitting lots of automatically generated code here

if (this->InitMyPane1 () == FALSE) {
return -1 ;
}

if (this->InitMyPane2 () == FALSE) {
return -1 ;
}

if (this->InitMyPane3 () == FALSE) {
return -1 ;
}

if (this->InitMyPane4 () == FALSE) {
return -1 ;
}

return 0;
}

所有这些的代码 InitMyPaneX()功能非常相似。这是 InitMyPane4 ()这似乎产生了错误的结果。

BOOL CMainFrame::InitMyPane4 ()
{
CRect rect ;
this->GetClientRect (&rect) ;

int right = static_cast <int> (rect.Width () / 6) ;
int bottom = rect.Height () ;

DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_LEFT | CBRS_FLOAT_MULTI ;

BOOL bOk = m_MyPane4.Create (
_T ("My Pane 4"), this,
CRect (0, 0, right, bottom), TRUE, IDC_MY_PANE_4, dwStyle
) ;

if (bOk == FALSE) {
return FALSE ;
}

m_MyPane4.EnableDocking (CBRS_ALIGN_ANY) ;
this->DockPane ((CBasePane *) &m_MyPane4, AFX_IDW_DOCKBAR_LEFT) ;
this->RecalcLayout () ;

return bOk ;
}

right上面代码中的变量是应该修改 Pane 宽度的变量,但无论我给它什么值,它似乎都没有影响。

可能导致 MFC 无法正确调整 Pane 大小的原因是什么?

更新

它似乎只要 right <= 200 就可以正确调整大小.如果我在那之后尝试增加大小,什么也不会发生。

如果我把尺寸做得非常小(~10),我会看到一些奇怪的分隔线出现。
该 Pane 似乎不想增加超过此分隔线的大小。我不确定这个分隔线是从哪里来的或如何摆脱它。

Strange divider

最佳答案

如果您的问题是 Panel4 太小,请在其上尝试 SetMinSize(...) 函数

关于c++ - 第四个 CDockablePane 大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21941764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com