⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exception.cpp

📁 wince6.0平台上的任务管理器,功能类似于windows的任务管理器. In order to develop applications for Windows Mobile 6.x from
💻 CPP
字号:

#include "stdafx.h"
#include "Tools\Exception.h"

namespace Tools
{

Exception::Exception(const CLSID& clsId, UINT resourceId, ...)
{
    _ASSERTE ((resourceId > 0x0200) && (resourceId < 0xFFFF));

    m_hr = MAKE_HRESULT (3/*error*/, FACILITY_ITF, resourceId);

    _bstr_t component = GetProgId (clsId);

    va_list argList;
    va_start (argList, resourceId);
    _bstr_t description (LoadString (resourceId, &argList));
    va_end (argList);

    ICreateErrorInfoPtr iCreateErrorInfo;
    if (SUCCEEDED (CreateErrorInfo (&iCreateErrorInfo)))
    {
        iCreateErrorInfo->SetGUID (GUID_NULL);
        iCreateErrorInfo->SetSource (component);
        iCreateErrorInfo->SetDescription (description);

        IErrorInfoPtr iErrorInfo (iCreateErrorInfo);
        SetErrorInfo (0, iErrorInfo);
    }
}

HRESULT Exception::GetException() const
{
    return m_hr;
}

_bstr_t Exception::LoadString (UINT resourceId, va_list *argList)
{
    _bstr_t description;

    WCHAR format[256];
    int length = ::LoadString(::GetModuleInstance(), resourceId, format, ArraySize(format));

    if (length == 0)
    {
        description = L"Unkown message";
    }
    else
    {
        LPWSTR buffer = NULL;
        ::FormatMessage (FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ALLOCATE_BUFFER,
		                 format, 0, 0, (LPWSTR) &buffer, 0, argList);
        if (buffer != NULL)
        {
    	    description = buffer;
            LocalFree (buffer);
        }
    }

    return description;
}

_bstr_t Exception::GetProgId (const CLSID& clsId)
{
    _bstr_t progId (L"Unknown");
    
    LPOLESTR progIdOle;
    ProgIDFromCLSID (clsId, &progIdOle);

    if (progIdOle != NULL)
    {
        progId = progIdOle;
        CoTaskMemFree (progIdOle);
    }

	return progId;
}

} // namespace Tools

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -