c++ - 将 CComboBox 添加到 CMFCStatusBar 窗格的问题
问题描述
我有这个简单的代码来创建 aCComboBox
并将其显示在 a 的窗格中CMFCStatusBar
:
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 可能不同。我希望这个组合在特定窗格上是准确的。
更新
我现在有点生气。我在这里发现了一个类似的问题,这意味着要做两件事:
- 更改字体高度。
- 使用
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
编辑控件高度高一点。
解决方案
此代码显示如何增加状态栏的高度。通过这种方式,您无需任何修改即可使用状态栏中的标准控件。
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;
}
推荐阅读
- javascript - 自定义排序数组,但它是随机的
- laravel - 如何缓存 auth()->user() 与 Laravel 缓存中的角色关系,以减少对数据库的调用?
- python - Python:JSON 对象类型错误
- r - 关于如何在 xts 对象中获取特定元素的简单问题
- python - 我可以将 '...' 值替换为 django-view 中函数输入中的参数
- javascript - 如何检查图层是否在用户视图中:openlayers
- delphi - Delphi 10.4 以编程方式安装 APK
- reactjs - 如何在 create-react-app 中构建 App(根组件)
- html - HTML/CSS 下拉菜单
- wordpress - cpanel cron作业和wordpress