【发布时间】:2010-01-05 11:38:52
【问题描述】:
在典型的 MFC C++ 对话框中,我想在对话框上动态创建一个浮动 ListBox(或其他标准控件),可能会超出对话框的边界 - 所以它不能是简单的子对象,否则会被剪裁.
看着类似的东西,我试图实现它,但显示时窗口从未出现。
在我的 .h 文件中,我有:
CListBox m_ListBox;
然后在我的 OnInitDialog 方法中(基于 Serge 的帖子):
BOOL CYourDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_ListBox.CreateEx(WS_EX_STATICEDGE | WS_EX_TOOLWINDOW, _T("LISTBOX"), NULL,
WS_CHILD | WS_CAPTION | LBS_STANDARD | WS_HSCROLL | WS_SYSMENU | WS_VISIBLE,
CRect(50, 100, 200, 200), this, 1);
m_ListBox.AddString(L"one");
m_ListBox.AddString(L"two");
m_ListBox.AddString(L"three");
return true;
}
问题是列表框呈现在对话框中的其他控件下方。我尝试调用 BringWindowToTop,但没有帮助。
此外,新控件不能超出对话框的边缘...因为它的使用类似于组合框中的下拉列表,这很好。
【问题讨论】:
-
我认为您应该将控件放在工具栏或对话框栏中并创建它。我相信你会在 codeguru.com 上找到一个例子!
-
这不是您问题的答案,但您不想在调用 AfxRegisterClass 时将 COLOR_WINDOW 转换为 HBRUSH - 请改用 GetSystemColorBrush(COLOR_WINDOW)。
标签: c++ visual-c++ mfc winapi