我有这个简单的代码来创建CComboBox
并将其显示在CMFCStatusBar
的 Pane 中:
CRect rcPane;
m_StatusBar.GetItemRect(panePageBreaks, &rcPane);
CFont *pFont = m_StatusBar.GetFont();
m_myCombo.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST, rcPane, &m_StatusBar, 2500);
m_myCombo.SetFont(pFont);
m_myCombo.AddString(_T("Page Breaks: None"));
m_myCombo.AddString(_T("Page Breaks: 1 Week"));
m_myCombo.AddString(_T("Page Breaks: 2 Weeks"));
m_myCombo.AddString(_T("Page Breaks: 3 Weeks"));
m_myCombo.AddString(_T("Page Breaks: 4 Weeks"));
我可以使状态栏足够大以包含此组合吗?目前这是一个或两个像素的高度太短:更新资料
如果我使用:
rcPane.InflateRect(1, 2, 0, 2);
似乎更好。但是我不想捏造它。其他用户的PC可能不同。我希望此组合在特定的 Pane 中是准确的。更新资料
我现在有点生气。我发现了一个类似的问题here,它暗示要做两件事:
SetItemHeight
。 所以我同时使用了这两种方法,发现要使控件具有正确的高度,我需要将字体高度设置为-6:
CRect rcPane;
m_StatusBar.GetItemRect(panePageBreaks, &rcPane);
CFont *pFont = m_StatusBar.GetFont();
LOGFONT sLF;
pFont->GetLogFont(&sLF);
sLF.lfHeight = -6;
pFont->CreateFontIndirect(&sLF);
m_myCombo.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST, rcPane, &m_StatusBar, 2500);
m_myCombo.SetItemHeight(-1, rcPane.Height());
m_myCombo.SetFont(pFont);
m_myCombo.AddString(_T("Page Breaks: None"));
m_myCombo.AddString(_T("Page Breaks: 1 Week"));
m_myCombo.AddString(_T("Page Breaks: 2 Weeks"));
m_myCombo.AddString(_T("Page Breaks: 3 Weeks"));
m_myCombo.AddString(_T("Page Breaks: 4 Weeks"));
您会看到,可以设置编辑控件的高度,但是如果字体高度较大,则会使编辑控件变大。所以我不能超过-6。并且状态栏文本为-12。所以这不是一个选择。
我试图做的就是为用户提供一种简单的方法,即通过状态栏以及菜单导航来更改此设置。但是看来我做不到。
如果有的话,
CMFCStatusBar
的高度需要比默认的CComboBox
编辑控件的高度高一点。
最佳答案
此代码显示了如何增加状态栏的高度。这样,您可以在状态栏中使用stardard控件,而无需进行任何修改。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndStatusBar.Create(this))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
m_wndStatusBar.GetStatusBarCtrl().SetMinHeight(70); // or, whatever you need
return 0;
}
关于c++ - 将CComboBox添加到CMFCStatusBar Pane 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61216951/