visual-c++ - 使用 SetIcon 时出现警告 C6387
问题描述
代码:
m_hStatusBarZoomFactorIcon =
CMeetingScheduleAssistantApp::HICONFromCBitmap(
m_mapMenuBitmap[MAKEWPARAM(MenuNavigation::View, SubMenuPos::Zoom)]);
VERIFY(m_hStatusBarZoomFactorIcon);
m_StatusBar.GetStatusBarCtrl().SetIcon(
to_underlying(StatusBarPane::ProgressOrZoomFactor), m_hStatusBarZoomFactorIcon);
变量分别是HICON
和CStatusBar
。为什么我会收到此警告?
警告 C6387
m_hStatusBarZoomFactorIcon
可能是0
:这不符合函数规范CStatusBarCtrl::SetIcon
。
解决方案
您应该在调用函数之前添加代码以检查它m_hStatusBarZoomFactorIcon
是否有效(即不为空) :SetIcon()
m_hStatusBarZoomFactorIcon =
CMeetingScheduleAssistantApp::HICONFromCBitmap(
m_mapMenuBitmap[MAKEWPARAM(MenuNavigation::View, SubMenuPos::Zoom)]);
// VERIFY(m_hStatusBarZoomFactorIcon); // vide infra
if (m_hStatusBarZoomFactorIcon) { // Only use it if it's valid ...
m_StatusBar.GetStatusBarCtrl().SetIcon(
to_underlying(StatusBarPane::ProgressOrZoomFactor),
m_hStatusBarZoomFactorIcon);
}
else {
// Error handling code
}
注意:如果您依赖该VERIFY(m_hStatusBarZoomFactorIcon);
语句来处理该检查,那么请注意,除非还定义了宏(即在调试版本中),否则它实际上不会扩展为任何内容。_DEBUG
来自 afx.h:
//...
#else // _DEBUG
#define VERIFY(f) ((void)(f))
///
推荐阅读
- php - 字符串到数组的转换 [PHP]
- git - 如何使用命令查看 GitLab 中所有打开的合并请求?
- c - 将 unsigned char 数组复制到 uint32_t,反之亦然
- android - Flutter中如何实现Socket IO客户端数据
- plc - How to set the PC/PG interface in Step7?
- scada - 如何使用wincc在sql server中插入当前日期和时间
- r - R/Python - 三角公式的 For 循环语句
- php - 在关闭 laravel 之间
- python - Python - 在 setup.py 安装之前和之后导入包模块
- django - 如何仅在 Django 管理更改列表中自定义字段名称?