Default HRESULT hResult = E_NOTIMPL?

Default HRESULT hResult = E_NOTIMPL?

本文关键字:NOTIMPL HRESULT hResult Default      更新时间:2023-10-16

我正在开发一个基于 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,基本上告诉系统它(某些东西)没有实现或错误?

我知道

当自动生成这个方法之王时,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似乎是正确的(或不:))