默认HRESULT hResult = E_NOTIMPL?

时间:2014-12-09 17:39:43

标签: c++ xaml winapi windows-ce

我正在开发基于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类型的变量并为其指定了一个默认的HRESULT值E_NOTIMPL,但由于该函数不会在if语句之外修改此值,这并不意味着它仍然是E_NOTIMPL,基本上告诉系统它(某事)没有实现或是错误的?

1 个答案:

答案 0 :(得分:1)

我知道当这个方法之王自动生成VS接口时。内部代码总是类似

return E_NOTIMPL;

我认为你的前任试图做的是通过确保自我来开发方法,以便通过在方法处理期间应该更改的E_NOTIMPL开始处理所有情况来开发方法。

这种方法在工作正常时应返回 s_OK 。以下是可能的代码列表: http://msdn.microsoft.com/en-us/library/windows/desktop/aa378137%28v=vs.85%29.aspx

如果没有分配S_OK,则意味着该功能未完全实现,因此E_NOTIMPL似乎是正确的(或不是:))