【问题标题】:Checkboxes in MFC listbox are appearing differently in VS2015MFC 列表框中的复选框在 VS2015 中的显示方式不同
【发布时间】:2017-05-12 11:01:46
【问题描述】:

我在 VS2010 中有一个简单的 MFC 应用程序,我正在尝试将此应用程序移至 VS2015 环境。

我能够在 VS2015 中成功构建项目。但是应用程序中的复选框看起来与 VS2010 不同。

我正在使用 CCheckListBox 的 CCheckListBox 类和 create 方法来创建复选框。创建复选框时使用的窗口样式和列表框样式如下:
{ WS_CHILD | WS_BORDER | LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | WS_VSCROLL | LBS_DISABLENOSCROLL | LBS_NOINTEGRALHEIGHT }
我也在使用带有 BS_AUTOCHECKBOX 选项的 SetCheckStyle 方法。

用 VS2015 构建的 MFC 应用:

用 VS2010 构建的 MFC 应用:

我在这里做错了什么?代码完全相同。

VS2015 支持 MFC 吗?

【问题讨论】:

  • 是的,VS2015 支持 MFC(否则您将无法构建应用程序)。我们需要更多信息。复选框是如何显示的?你在使用CCheckListBox 类吗?
  • 我建议enabling visual styles,除非你有充分的理由不这样做?它可能已经解决了您的问题。
  • 是的,我正在使用 CCheckListBox.@MichaelWalz
  • 我正在使用 CCheckListBox 的 create 方法,其窗口样式和列表框样式如下:{ WS_CHILD | WS_BORDER | LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | WS_VSCROLL | LBS_DISABLENOSCROLL | LBS_NOINTEGRALHEIGHT} 另外我正在使用带有 BS_AUTOCHECKBOX 选项的 SetCheckStyle 方法。@MichaelWalz
  • @Eric_Cartman 进行澄清,请编辑您的问题,而不是发布 cmets..

标签: c++ visual-studio-2010 visual-studio-2015 mfc


【解决方案1】:

这可能不是“最先进的”修复,但我用以下行修补了这个错误:

SetWindowTheme(m_boards.GetSafeHwnd(), L"Explorer", "L");

在我的对话框的OnInitDialog() 方法中,m_board 是CheckListBox 的成员,在DoDataExchange() 方法中绑定到我的列表框控件。

不过,您可能想使用 Explorer 以外的其他主题。

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 2019-03-06
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    相关资源
    最近更新 更多