【发布时间】:2014-12-09 17:39:43
【问题描述】:
我正在开发一个基于 win7 的系统,使用 silverlight 嵌入式 UI 图形和 C++ 固件。我注意到在许多现有函数中(在我被带入项目之前编写),有一些代码我不太确定它在做什么。
HRESULT AddAlarm::AlarmType_SelectionChanged (IXRDependencyObject* pSender, XRSelectionChangedEventArgs* pArgs)
{
HRESULT hResult = E_NOTIMPL;
if((NULL == pSender)||(NULL==pArgs))
{
hResult = E_INVALIDARG;
}
//Code to set visibility of UI elements
if(index ==0) //index is the threshold type index from the combobox. Can be 0-3.
{
m_pAlarmLowThreshold->SetVisibility(XRVisibility_Collapsed);
}
//Code repeats for other threshold types and visibility states.
return hResult;
}
if 语句非常简单,函数返回 hResult,但我不明白声明 HRESULT hResult = E_NOTIMPL;。它声明了一个 HRESULT 类型的变量并为其分配了 E_NOTIMPL 的默认 HRESULT 值,但是由于该函数不会在 if 语句之外修改此值,这是否意味着它仍然是 E_NOTIMPL,基本上是告诉系统它(某事)没有实施还是错了?
【问题讨论】:
-
可能是程序员使用的工具自动生成的代码,这对于 COM 代码很常见。它不太可能保留在 E_NOTIMPL,这将是一个很容易注意到的错误。特别是在 Silverlight 中,它会引发 NotImplementedException。
-
"//Irrellavent code"- 仅当在所述神秘袋中无处可更改hResult的值时才为真。
标签: c++ xaml winapi windows-ce