在我正在CMFCMenuButton
使用MSVC 2013 的C++ MFC项目中.
当我切换高对比度模式时,按钮没有正确重新绘制(为了比较,显示正常按钮):
调用Invalidate()
或ShowWindow(SW_HIDE);ShowWindow(SW_SHOW);
似乎没有效果 - 即使最小化对话框也不会导致正确的重绘.如何强制按钮重新绘制更新的系统颜色?
更新:切换对比度模式后强制颜色只会使按钮文本可见,但按钮本身(边框)不可见.
m_ctrlOkButton.SetFaceColor(::GetSysColor(COLOR_BTNFACE));
m_ctrlOkButton.SetTextColor(::GetSysColor(COLOR_BTNTEXT));
Run Code Online (Sandbox Code Playgroud) 尝试将CMFCMenuButton添加到现有MFC应用程序时遇到了此问题。它工作正常,甚至调整了按钮的大小以适应下拉箭头。但是它没有绘制下拉箭头,当我将鼠标悬停在按钮上时,我看到了以下调试输出:
> Can't load bitmap: 42b8.GetLastError() = 716
> CMenuImages. Can't load menu images 3f01
Run Code Online (Sandbox Code Playgroud)
事实证明,即使使用Visual Studio 2010 RTM,在创建基于MFC对话框的全新应用程序时,CMFCMenuButton也不绘制箭头,并显示相同的错误。最初,我以为我没有正确安装或注册任何东西。但是,MFC Feature Pack中的NewControls示例完美显示了下拉箭头。
缺什么?
很抱歉新手问题,但是有人能指出示例代码,说明CMFCMenuButton的使用吗?Microsoft帮助引用"新控件示例",但这些示例似乎是在Visual Studio 2008"功能包"中,并且由于我运行VS 2013并且没有VS 2008,因此拒绝在我的系统上安装.我无法将样本作为独立代码找到.具体来说,我有一个对话栏,我想要一个标有"保存"的按钮,其中包含"全部保存"和"保存可见"的下拉选项(默认情况下保存全部).但任何工作代码至少会让我开始.