我正在开发基于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,基本上告诉系统它(某事)没有实现或是错误的?
答案 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似乎是正确的(或不是:))