CStatusBar::SetIndicators返回0且报加载指示器字符串警告如何处理
问题原因
这个警告和SetIndicators返回0的根因是MFC的CStatusBar::SetIndicators逻辑设计:调用该方法时,MFC会尝试从项目的字符串表资源中,加载每个指示器ID对应的字符串作为对应窗格的默认显示内容。你用到的ID_INDICATOR_DATE(值33604,十六进制0x8344)没有在项目字符串表中定义对应条目,因此触发调试期警告,同时方法返回失败值。
你看到状态栏功能正常,是因为后续你主动给对应窗格设置了显示文本、宽度等属性,覆盖了默认加载失败的状态,该警告仅在调试版本输出,不会影响Release版本的实际运行。
可选处理方案
- 方案1(彻底消除警告):打开项目的资源视图,在字符串表中新增一条条目,ID设置为
ID_INDICATOR_DATE(或者直接填33604),字符串内容可以根据你的需求填写,哪怕留空也可以。添加后重新编译运行,警告就会消失,SetIndicators也会返回非0的成功值。 - 方案2(无需修改资源):该警告仅为调试期的提示信息,不影响实际功能,你可以直接忽略。如果不想在调试输出中看到该提示,可以在Visual Studio的输出窗口右键,过滤掉MFC的
AppMsg类型警告即可。
内容的提问来源于stack exchange,提问作者Andrew Truckle
相关产品推荐
相关产品推荐

