OSDN Git Service

ObjectMap, ObjectVectorの値をByRef外しするようにした。他、ソースコード整形
[seraphyscrtools/SeraphyScriptTools.git] / Control.cpp
index cc2a052..491d9b5 100644 (file)
@@ -1,32 +1,18 @@
 // Control.cpp : CControl \82Ì\83C\83\93\83v\83\8a\83\81\83\93\83e\81[\83V\83\87\83\93
 #include "stdafx.h"
+
 #include "SeraphyScriptTools.h"
 #include "Control.h"
 #include "treeitem.h"
-#include "generic.h"
+
 #include "objectmap.h"
-#include <list>
-#include <vector>
+#include "CComEnumDynaVARIANT.h"
 
-using namespace std;
+#include <vector>
 
 /////////////////////////////////////////////////////////////////////////////
 // CControl
 
-STDMETHODIMP CControl::InterfaceSupportsErrorInfo(REFIID riid)
-{
-       static const IID* arr[] = 
-       {
-               &IID_IControl
-       };
-       for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
-       {
-               if (IsEqualGUID(*arr[i],riid))
-                       return S_OK;
-       }
-       return S_FALSE;
-}
-
 STDMETHODIMP CControl::get_Text(BSTR *pVal)
 {
        if (!m_hParent || !m_hWnd) {
@@ -34,7 +20,7 @@ STDMETHODIMP CControl::get_Text(BSTR *pVal)
        }
 
        DWORD siz = ::GetWindowTextLength(m_hWnd);
-       
+
        ATL::CString tmp;
        LPTSTR pMes = tmp.GetBufferSetLength(siz + 1);
        GetWindowText(m_hWnd, pMes, siz + 1);
@@ -47,10 +33,10 @@ STDMETHODIMP CControl::get_Text(BSTR *pVal)
 
 STDMETHODIMP CControl::put_Text(BSTR newVal)
 {
-       if(!m_hParent || !m_hWnd){
+       if (!m_hParent || !m_hWnd) {
                return Error(IDS_ERR_DESTROYED);
        }
-       
+
        ATL::CString tmp(newVal);
        ::SetWindowText(m_hWnd, tmp);
        return S_OK;
@@ -59,7 +45,7 @@ STDMETHODIMP CControl::put_Text(BSTR newVal)
 STDMETHODIMP CControl::get_ID(short *pVal)
 {
        if (m_hWnd) {
-               m_nID = (int)GetWindowLong(m_hWnd,GWL_ID);
+               m_nID = (int)GetWindowLong(m_hWnd, GWL_ID);
        }
        *pVal = m_nID;
        return S_OK;
@@ -70,10 +56,10 @@ STDMETHODIMP CControl::put_ID(short newVal)
        m_nID = newVal;
        if (m_hWnd) {
                SetWindowLong(m_hWnd, GWL_ID, newVal);
-               if((m_nID == IDOK) && !lstrcmp(m_classname, _TEXT("BUTTON"))) {
+               if ((m_nID == IDOK) && !lstrcmp(m_classname, _TEXT("BUTTON"))) {
                        // IDOK\82È\82ç\83|\83b\83V\83\85\83{\83^\83\93\8c^\82ð\83f\83B\83t\83H\83\8b\83g\83{\83^\83\93\82É\95Ï\89»\82³\82¹\82é
-                       DWORD m_style = ::GetWindowLong(m_hWnd,GWL_STYLE);
-                       m_style |=  BS_DEFPUSHBUTTON;
+                       DWORD m_style = ::GetWindowLong(m_hWnd, GWL_STYLE);
+                       m_style |= BS_DEFPUSHBUTTON;
                        ::SetWindowLong(m_hWnd, GWL_STYLE, m_style);
                }
        }
@@ -119,14 +105,14 @@ STDMETHODIMP CControl::put_Enable(BOOL newVal)
        if (!m_hParent || !m_hWnd) {
                return Error(IDS_ERR_DESTROYED);
        }
-       ::EnableWindow(m_hWnd,newVal);
+       ::EnableWindow(m_hWnd, newVal);
        return S_OK;
 }
 
 STDMETHODIMP CControl::get_CheckState(short *pVal)
 {
-       if(m_hWnd){
-               m_bChecked = (short)::SendMessage(m_hWnd,BM_GETCHECK,0,0);
+       if (m_hWnd) {
+               m_bChecked = (short)::SendMessage(m_hWnd, BM_GETCHECK, 0, 0);
        }
        *pVal = m_bChecked;
        return S_OK;
@@ -144,68 +130,71 @@ STDMETHODIMP CControl::put_CheckState(short newVal)
 
 BOOL CControl::Create(HWND hParent)
 {
-       // << \83f\83B\83t\83H\83\8b\83g\82Ì\83v\83b\83V\83\85\83{\83^\83\93\82É\95Ï\89»\82³\82¹\82é\83N\83\8d\96\82\8fp >>
+       // << \83f\83t\83H\83\8b\83g\82Ì\83v\83b\83V\83\85\83{\83^\83\93\82É\95Ï\89»\82³\82¹\82é\83N\83\8d\96\82\8fp >>
        if ((m_nID == IDOK) && !lstrcmp(m_classname, _TEXT("BUTTON"))) {
                // IDOK\82È\82ç\95Ï\8dX\82·\82é
-               m_style |=  BS_DEFPUSHBUTTON;
+               m_style |= BS_DEFPUSHBUTTON;
        }
 
        //\81@\83R\83\93\83g\83\8d\81[\83\8b\82Ì\90\90¬
        ATLASSERT(m_hParent == NULL);
        m_hParent = hParent;
-       m_hWnd = ::CreateWindowEx(m_exstyle,m_classname,m_caption
-               ,m_style | WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS
-               ,m_x,m_y,m_w,m_h
-               ,hParent
-               ,NULL
-               ,_Module.m_hInst
-               ,NULL);
+       m_hWnd = ::CreateWindowEx(m_exstyle, m_classname, m_caption,
+               m_style | WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS,
+               m_x, m_y, m_w, m_h,
+               hParent,
+               NULL,
+               _Module.m_hInst,
+               NULL);
        ::SetWindowLongPtr(m_hWnd, GWLP_ID, m_nID);
        ::SetWindowLongPtr(m_hWnd, GWLP_USERDATA, (LONG_PTR) this);
-       ::SetWindowText(m_hWnd,m_caption);
+       ::SetWindowText(m_hWnd, m_caption);
 
        // \90e\82ª\83f\83B\83Z\81[\83u\83\8b\82È\82ç\8eq\82à\83f\83B\83Z\81[\83u\83\8b\8fó\91Ô\82Å\8dì\90¬\82·\82é
-       if(!::IsWindowEnabled(m_hParent)){
-               ::EnableWindow(m_hWnd,false);
+       if (!::IsWindowEnabled(m_hParent)) {
+               ::EnableWindow(m_hWnd, false);
        }
 
        //////////////////////////
        // \8e\96\91O\8fó\91Ô\82Ì\90Ý\92è
        if (!lstrcmp(m_classname, _TEXT("BUTTON"))) {
                // \83{\83^\83\93\82È\82ç\83`\83F\83b\83N\8fó\91Ô\82Ì\83Z\83b\83g
-               if(m_bChecked){
-                       ::SendMessage(m_hWnd,BM_SETCHECK,1,0);
+               if (m_bChecked) {
+                       ::SendMessage(m_hWnd, BM_SETCHECK, 1, 0);
                }
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82È\82ç\83J\83\89\83\80\82Ì\90Ý\92è\82ð\8ds\82¤
-               TCHAR szColumn[MAX_PATH];
                LPCTSTR p = m_caption;
                m_nColumnCount = 0;
                // \83E\83B\83\93\83h\83E\83L\83\83\83v\83V\83\87\83\93\82©\82ç\97ñ\8c©\8fo\82µ\82ð\8dì\90¬\82·\82é
-               while(*p){
-                       LPCTSTR d = p;
-                       while(*p && *p != ',' && *p != ':'){
+               while (*p) {
+                       LPCTSTR st = p;
+                       while (*p && *p != ',' && *p != ':') {
                                p = CharNext(p);
                        }
-                       int sz = p - d;
-                       if(sz >= MAX_PATH) sz = MAX_PATH - 1;
-                       CopyMemory(szColumn,d,p - d);
-                       szColumn[p-d] = 0;
+
+                       int sz = p - st;
+                       TCHAR szColumn[MAX_PATH] = {0};
+                       _tcsncpy_s(szColumn, MAX_PATH, st, sz);
+
                        LVCOLUMN col = {0};
-                       col.mask    = LVCF_TEXT | LVCF_WIDTH;
+                       col.mask = LVCF_TEXT | LVCF_WIDTH;
                        col.pszText = szColumn;
-                       col.cx      = ListView_GetStringWidth(m_hWnd,szColumn) + 16;
-                       ListView_InsertColumn(m_hWnd,m_nColumnCount,&col);
-                       if(*p == ',' || *p == ':') p++;
+                       col.cx = ListView_GetStringWidth(m_hWnd, szColumn) + 16;
+                       ListView_InsertColumn(m_hWnd, m_nColumnCount, &col);
+
+                       if (*p == ',' || *p == ':') {
+                               p++;
+                       }
                        m_nColumnCount++;
                }
-               if(m_afterstyle){
-                       ListView_SetExtendedListViewStyle(m_hWnd,m_afterstyle);
+               if (m_afterstyle) {
+                       ListView_SetExtendedListViewStyle(m_hWnd, m_afterstyle);
                }
        }
-       else if(!lstrcmp(m_classname,WC_TREEVIEW)){
-               TreeView_SetImageList(m_hWnd,NULL,TVSIL_NORMAL);
+       else if (!lstrcmp(m_classname, WC_TREEVIEW)) {
+               TreeView_SetImageList(m_hWnd, NULL, TVSIL_NORMAL);
        }
        return true;
 }
@@ -213,20 +202,20 @@ BOOL CControl::Create(HWND hParent)
 void CControl::Destroy()
 {
        DeleteAllItems();
-       if(m_hWnd){
+       if (m_hWnd) {
                // \83E\83B\83\93\83h\83E\82ð\94j\8aü\82·\82é
                // \83E\83B\83\93\83h\83E\82Ì\94j\8aü\82Æ\83C\83\93\83^\81[\83t\83F\83C\83X\82Ì\94j\8aü\82Í\88ê\92v\82µ\82È\82¢\81B
                ::DestroyWindow(m_hWnd);
-               m_hWnd    = NULL;
+               m_hWnd = NULL;
        }
 }
 
 STDMETHODIMP CControl::get_Width(short *pVal)
 {
-       if(m_hWnd){
+       if (m_hWnd) {
                WINDOWPLACEMENT pls = {0};
                pls.length = sizeof(WINDOWPLACEMENT);
-               ::GetWindowPlacement(m_hWnd,&pls);
+               ::GetWindowPlacement(m_hWnd, &pls);
                m_w = (short)(pls.rcNormalPosition.right - pls.rcNormalPosition.left);
        }
        *pVal = m_w;
@@ -236,21 +225,28 @@ STDMETHODIMP CControl::get_Width(short *pVal)
 STDMETHODIMP CControl::put_Width(short newVal)
 {
        m_w = newVal;
-       if(m_hWnd){
+       if (m_hWnd) {
                WINDOWPLACEMENT pls = {0};
                pls.length = sizeof(WINDOWPLACEMENT);
-               ::GetWindowPlacement(m_hWnd,&pls);
-               ::SetWindowPos(m_hWnd,NULL,0,0,m_w,pls.rcNormalPosition.right - pls.rcNormalPosition.left,SWP_NOZORDER|SWP_NOMOVE);
+               ::GetWindowPlacement(m_hWnd, &pls);
+               ::SetWindowPos(
+                       m_hWnd,
+                       NULL,
+                       0, 0,
+                       m_w,
+                       pls.rcNormalPosition.right - pls.rcNormalPosition.left,
+                       SWP_NOZORDER | SWP_NOMOVE
+                       );
        }
        return S_OK;
 }
 
 STDMETHODIMP CControl::get_Height(short *pVal)
 {
-       if(m_hWnd){
+       if (m_hWnd) {
                WINDOWPLACEMENT pls = {0};
                pls.length = sizeof(WINDOWPLACEMENT);
-               ::GetWindowPlacement(m_hWnd,&pls);
+               ::GetWindowPlacement(m_hWnd, &pls);
                m_h = (short)(pls.rcNormalPosition.bottom - pls.rcNormalPosition.top);
        }
        *pVal = m_h;
@@ -260,21 +256,28 @@ STDMETHODIMP CControl::get_Height(short *pVal)
 STDMETHODIMP CControl::put_Height(short newVal)
 {
        m_h = newVal;
-       if(m_hWnd){
+       if (m_hWnd) {
                WINDOWPLACEMENT pls = {0};
                pls.length = sizeof(WINDOWPLACEMENT);
-               ::GetWindowPlacement(m_hWnd,&pls);
-               ::SetWindowPos(m_hWnd,NULL,0,0,m_h,pls.rcNormalPosition.right - pls.rcNormalPosition.left,SWP_NOZORDER|SWP_NOMOVE);
+               ::GetWindowPlacement(m_hWnd, &pls);
+               ::SetWindowPos(
+                       m_hWnd,
+                       NULL,
+                       0, 0,
+                       m_h,
+                       pls.rcNormalPosition.right - pls.rcNormalPosition.left,
+                       SWP_NOZORDER | SWP_NOMOVE
+                       );
        }
        return S_OK;
 }
 
 STDMETHODIMP CControl::get_PosX(short *pVal)
 {
-       if(m_hWnd){
+       if (m_hWnd) {
                WINDOWPLACEMENT pls = {0};
                pls.length = sizeof(WINDOWPLACEMENT);
-               ::GetWindowPlacement(m_hWnd,&pls);
+               ::GetWindowPlacement(m_hWnd, &pls);
                m_x = (short)pls.rcNormalPosition.left;
        }
        *pVal = m_x;
@@ -284,21 +287,27 @@ STDMETHODIMP CControl::get_PosX(short *pVal)
 STDMETHODIMP CControl::put_PosX(short newVal)
 {
        m_x = newVal;
-       if(m_hWnd){
+       if (m_hWnd) {
                WINDOWPLACEMENT pls = {0};
                pls.length = sizeof(WINDOWPLACEMENT);
-               ::GetWindowPlacement(m_hWnd,&pls);
-               ::SetWindowPos(m_hWnd,NULL,m_x,pls.rcNormalPosition.top,0,0,SWP_NOZORDER|SWP_NOSIZE);
+               ::GetWindowPlacement(m_hWnd, &pls);
+               ::SetWindowPos(
+                       m_hWnd,
+                       NULL,
+                       m_x, pls.rcNormalPosition.top,
+                       0, 0,
+                       SWP_NOZORDER | SWP_NOSIZE
+                       );
        }
        return S_OK;
 }
 
 STDMETHODIMP CControl::get_PosY(short *pVal)
 {
-       if(m_hWnd){
+       if (m_hWnd) {
                WINDOWPLACEMENT pls = {0};
                pls.length = sizeof(WINDOWPLACEMENT);
-               ::GetWindowPlacement(m_hWnd,&pls);
+               ::GetWindowPlacement(m_hWnd, &pls);
                m_y = (short)pls.rcNormalPosition.top;
        }
        *pVal = m_y;
@@ -308,11 +317,18 @@ STDMETHODIMP CControl::get_PosY(short *pVal)
 STDMETHODIMP CControl::put_PosY(short newVal)
 {
        m_y = newVal;
-       if(m_hWnd){
+       if (m_hWnd) {
                WINDOWPLACEMENT pls = {0};
                pls.length = sizeof(WINDOWPLACEMENT);
-               ::GetWindowPlacement(m_hWnd,&pls);
-               ::SetWindowPos(m_hWnd,NULL,pls.rcNormalPosition.left,m_y,0,0,SWP_NOZORDER|SWP_NOSIZE);
+               ::GetWindowPlacement(m_hWnd, &pls);
+               ::SetWindowPos(
+                       m_hWnd,
+                       NULL,
+                       pls.rcNormalPosition.left,
+                       m_y,
+                       0, 0,
+                       SWP_NOZORDER | SWP_NOSIZE
+                       );
        }
        return S_OK;
 }
@@ -320,22 +336,22 @@ STDMETHODIMP CControl::put_PosY(short newVal)
 STDMETHODIMP CControl::SetPlacement(VARIANT x, VARIANT y, VARIANT w, VARIANT h, VARIANT *pvarUnk)
 {
        // \83T\83C\83Y\95Ï\8dX
-       CComVariant varX,varY,varW,varH;
-       if((x.vt != VT_EMPTY && x.vt != VT_NULL && x.vt != VT_ERROR) && varX.ChangeType(VT_I2,&x) == S_OK){
+       CComVariant varX, varY, varW, varH;
+       if ((x.vt != VT_EMPTY && x.vt != VT_NULL && x.vt != VT_ERROR) && SUCCEEDED(varX.ChangeType(VT_I2, &x))) {
                m_x = varX.iVal;
        }
-       if((y.vt != VT_EMPTY && y.vt != VT_NULL && y.vt != VT_ERROR) && varY.ChangeType(VT_I2,&y) == S_OK){
+       if ((y.vt != VT_EMPTY && y.vt != VT_NULL && y.vt != VT_ERROR) && SUCCEEDED(varY.ChangeType(VT_I2, &y))) {
                m_y = varY.iVal;
        }
-       if((h.vt != VT_EMPTY && h.vt != VT_NULL && h.vt != VT_ERROR) && varH.ChangeType(VT_I2,&h) == S_OK){
+       if ((h.vt != VT_EMPTY && h.vt != VT_NULL && h.vt != VT_ERROR) && SUCCEEDED(varH.ChangeType(VT_I2, &h))) {
                m_h = varH.iVal;
        }
-       if((w.vt != VT_EMPTY && w.vt != VT_NULL && w.vt != VT_ERROR) && varW.ChangeType(VT_I2,&w) == S_OK){
+       if ((w.vt != VT_EMPTY && w.vt != VT_NULL && w.vt != VT_ERROR) && SUCCEEDED(varW.ChangeType(VT_I2, &w))) {
                m_w = varW.iVal;
        }
        // \83E\83B\83\93\83h\83E\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82ê\82Î\82½\82¾\82¿\82É\94½\89f
-       if(m_hWnd){
-               ::SetWindowPos(m_hWnd,NULL,m_x,m_y,m_w,m_h,SWP_NOZORDER);
+       if (m_hWnd) {
+               ::SetWindowPos(m_hWnd, NULL, m_x, m_y, m_w, m_h, SWP_NOZORDER);
        }
        GetThisInterface(pvarUnk);
        return S_OK;
@@ -353,9 +369,9 @@ STDMETHODIMP CControl::SetID(VARIANT varID, VARIANT *pvarUnk)
 {
        // \92¼\82¿\82ÉID\82ð\8a\84\82è\93\96\82Ä\82é
        CComVariant tmp;
-       if(varID.vt != VT_EMPTY && varID.vt != VT_EMPTY && varID.vt != VT_EMPTY
-               && (tmp.ChangeType(VT_I2,&varID) == S_OK)){
-               if(tmp.iVal > 0){
+       if (varID.vt != VT_EMPTY && varID.vt != VT_EMPTY && varID.vt != VT_EMPTY
+               && SUCCEEDED(tmp.ChangeType(VT_I2, &varID))) {
+               if (tmp.iVal > 0) {
                        put_ID(tmp.iVal);
                }
        }
@@ -368,8 +384,8 @@ void CControl::GetThisInterface(VARIANT *pvarUnk)
        // \82±\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\82ð\95Ô\82·
        ::VariantInit(pvarUnk);
        IUnknown* pUnk = NULL;
-       if(QueryInterface(IID_IUnknown,(void**)&pUnk) == S_OK){
-               pvarUnk->vt       = VT_UNKNOWN;
+       if (SUCCEEDED(QueryInterface(IID_IUnknown, (void**)&pUnk))) {
+               pvarUnk->vt = VT_UNKNOWN;
                pvarUnk->punkVal = pUnk;
        }
 }
@@ -381,8 +397,8 @@ int CControl::GetID()
 
 STDMETHODIMP CControl::get_Style(long *pVal)
 {
-       if(m_hWnd){
-               m_style = ::GetWindowLong(m_hWnd,GWL_STYLE);
+       if (m_hWnd) {
+               m_style = ::GetWindowLong(m_hWnd, GWL_STYLE);
        }
        *pVal = m_style;
        return S_OK;
@@ -391,16 +407,16 @@ STDMETHODIMP CControl::get_Style(long *pVal)
 STDMETHODIMP CControl::put_Style(long newVal)
 {
        m_style = newVal;
-       if(m_hWnd){
-               ::SetWindowLong(m_hWnd,GWL_STYLE,m_style);
+       if (m_hWnd) {
+               ::SetWindowLong(m_hWnd, GWL_STYLE, m_style);
        }
        return S_OK;
 }
 
 STDMETHODIMP CControl::get_Exstyle(long *pVal)
 {
-       if(m_hWnd){
-               m_exstyle = ::GetWindowLong(m_hWnd,GWL_EXSTYLE);
+       if (m_hWnd) {
+               m_exstyle = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);
        }
        *pVal = m_exstyle;
        return S_OK;
@@ -409,8 +425,8 @@ STDMETHODIMP CControl::get_Exstyle(long *pVal)
 STDMETHODIMP CControl::put_Exstyle(long newVal)
 {
        m_exstyle = newVal;
-       if(m_hWnd){
-               ::SetWindowLong(m_hWnd,GWL_EXSTYLE,m_exstyle);
+       if (m_hWnd) {
+               ::SetWindowLong(m_hWnd, GWL_EXSTYLE, m_exstyle);
        }
        return S_OK;
 }
@@ -437,7 +453,7 @@ STDMETHODIMP CControl::Refresh()
 
 STDMETHODIMP CControl::get_HWND(long *pVal)
 {
-       *pVal = (long) m_hWnd;
+       *pVal = (long)m_hWnd;
        return S_OK;
 }
 
@@ -453,7 +469,7 @@ HRESULT CControl::ConvertVariantToString(VARIANT text, ATL::CString &retval)
        return S_OK;
 }
 
-STDMETHODIMP CControl::AddString(VARIANT text,VARIANT* pRet)
+STDMETHODIMP CControl::AddString(VARIANT text, VARIANT* pRet)
 {
        ::VariantInit(pRet);
 
@@ -473,54 +489,67 @@ STDMETHODIMP CControl::AddString(VARIANT text,VARIANT* pRet)
                ret = (short)SendMessage(m_hWnd, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)buf);
        }
        else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
+               // \98A\91z\94z\97ñ\83I\83u\83W\83F\83N\83g\82ð\8dì\90¬\82·\82é
+               CComObject<CObjectMap>* pMap = NULL;
+               if (FAILED(hr = CComObject<CObjectMap>::CreateInstance(&pMap))) {
+                       return hr;
+               }
+               IUnknown* pMapUnk = NULL;
+               if (FAILED(hr = pMap->QueryInterface(&pMapUnk))) {
+                       return hr;
+               }
+
                // \83\8a\83X\83g\83{\83b\83N\83X\82É\95\8e\9a\97ñ\82ð\92Ç\89Á\82·\82é
                int nIdx = SendMessage(m_hWnd, LB_ADDSTRING, 0, (LPARAM)(LPCTSTR)buf);
 
-               // \98A\91z\94z\97ñ\83I\83u\83W\83F\83N\83g\82ð\83o\83C\83\93\83h\82·\82é
-               CComObject<CObjectMap>* pMap = NULL;
-               IUnknown* pUnk = NULL;
-               if (pMap->CreateInstance(&pMap) == S_OK) {
-                       pMap->QueryInterface(IID_IUnknown,(void**)&pUnk);
-               }
-               ::SendMessage(m_hWnd,LB_SETITEMDATA,nIdx,(LPARAM)pUnk);
+               // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\83A\83C\83e\83\80\82É\98A\91z\94z\97ñ\82ð\83o\83C\83\93\83h\82·\82é.
+               ::SendMessage(m_hWnd, LB_SETITEMDATA, nIdx, (LPARAM)pMapUnk);
                ret = (short)nIdx;
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82É\95\8e\9a\97ñ\82ð\92Ç\89Á\82·\82é
                int cnt = ListView_GetItemCount(m_hWnd);
                LVITEM item = {0};
-               item.mask    = LVIF_TEXT;
+               item.mask = LVIF_TEXT;
                item.pszText = buf.GetBuffer();
-               item.iItem   = cnt;
+               item.iItem = cnt;
                int nIdx = ListView_InsertItem(m_hWnd, &item);
 
                // \83T\83u\83J\83\89\83\80\82Í\8bó\95\82ð\96\84\82ß\82é
-               for(int i = 1 ; i < m_nColumnCount ; i++) {
+               for (int i = 1; i < m_nColumnCount; i++) {
                        ListView_SetItemText(m_hWnd, nIdx, i, _TEXT(""));
                }
 
                // \98A\91z\94z\97ñ\83I\83u\83W\83F\83N\83g\82ð\83o\83C\83\93\83h\82·\82é
                CComObject<CObjectMap>* pMap = NULL;
+               if (FAILED(hr = CComObject<CObjectMap>::CreateInstance(&pMap))) {
+                       return hr;
+               }
+
                IUnknown* pUnk = NULL;
-               if (pMap->CreateInstance(&pMap) == S_OK) {
-                       pMap->QueryInterface(IID_IUnknown, (void**)&pUnk);
+               if (FAILED(hr = pMap->QueryInterface(IID_IUnknown, (void**)&pUnk))) {
+                       return hr;
                }
-               LVITEM itm = {0};
-               itm.iItem  = nIdx;
-               itm.mask   = LVIF_PARAM;
-               itm.lParam = (LPARAM) pUnk;
+
+               LVITEM itm = { 0 };
+               itm.iItem = nIdx;
+               itm.mask = LVIF_PARAM;
+               itm.lParam = (LPARAM)pUnk;
                ListView_SetItem(m_hWnd, &itm);
                ret = (short)nIdx;
        }
        else if (!lstrcmp(m_classname, WC_TREEVIEW)) {
                // \83c\83\8a\81[\83r\83\85\81[\82Ì\83\8b\81[\83g\82É\83A\83C\83e\83\80\82ð\8dì\90¬\82·\82é
-               IUnknown* pUnk = NULL;
-               CTreeItem::CreateTreeItem(m_hWnd,TVI_ROOT, buf, &pUnk);
-               if(pUnk != NULL){
-                       ret = (IUnknown*)pUnk;
+               CComPtr<IUnknown> pUnk;
+               HRESULT hr;
+               if (FAILED(hr = CTreeItem::CreateTreeItem(m_hWnd, TVI_ROOT, buf, &pUnk))) {
+                       return hr;
+               }
+               if (pUnk != NULL) {
+                       ret = pUnk; // pUnk\82ÍVariant\91ã\93ü\8e\9e\82ÉAddRef\82³\82ê\82é\82Ì\82ÅDetach\82Í\95s\97v.
                }
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -530,17 +559,16 @@ STDMETHODIMP CControl::AddString(VARIANT text,VARIANT* pRet)
 STDMETHODIMP CControl::SetColumnText(VARIANT item, VARIANT col, VARIANT text)
 {
        if (!m_hParent || !m_hWnd) {
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+               return Error(IDS_ERR_DESTROYED);
        }
 
        int nIdx = -1;
        int nCol = -1;
        CComVariant varIdx, varCol;
-       if (varIdx.ChangeType(VT_I2, &item) == S_OK) {
+       if (SUCCEEDED(varIdx.ChangeType(VT_I2, &item))) {
                nIdx = varIdx.iVal;
        }
-       if (varCol.ChangeType(VT_I2, &col) == S_OK) {
+       if (SUCCEEDED(varCol.ChangeType(VT_I2, &col))) {
                nCol = varCol.iVal;
        }
        if (nIdx < 0 || nCol < 0) {
@@ -582,10 +610,10 @@ STDMETHODIMP CControl::GetColumnText(VARIANT idx, VARIANT col, VARIANT *pText)
        int nIdx = -1;
        int nCol = -1;
        CComVariant varIdx, varCol;
-       if (varIdx.ChangeType(VT_I2, &idx) == S_OK) {
+       if (SUCCEEDED(varIdx.ChangeType(VT_I2, &idx))) {
                nIdx = varIdx.iVal;
        }
-       if (varCol.ChangeType(VT_I2, &col) == S_OK) {
+       if (SUCCEEDED(varCol.ChangeType(VT_I2, &col))) {
                nCol = varCol.iVal;
        }
 
@@ -622,24 +650,24 @@ STDMETHODIMP CControl::get_ItemObject(VARIANT idx, VARIANT *pVal)
 
        int nIdx = -1;
        CComVariant varIdx;
-       if (varIdx.ChangeType(VT_I2,&idx) == S_OK) {
+       if (SUCCEEDED(varIdx.ChangeType(VT_I2, &idx))) {
                nIdx = varIdx.iVal;
        }
 
-       if (nIdx < 0 ) {
+       if (nIdx < 0) {
                return DISP_E_BADINDEX;
        }
 
        IUnknown* pUnk = NULL;
        if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82©\82ç\98A\91z\94z\97ñ\83I\83u\83W\83F\83N\83g\82ð\8eæ\93¾\82·\82é
-               int mx = ::SendMessage(m_hWnd,LB_GETCOUNT,0,0);
+               int mx = ::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0);
                if (nIdx >= mx) {
                        return Error(IDS_ERR_RANDEOUT);
                }
-               DWORD data = ::SendMessage(m_hWnd, LB_GETITEMDATA, nIdx, 0);
+               LRESULT data = ::SendMessage(m_hWnd, LB_GETITEMDATA, nIdx, 0);
                if (data != LB_ERR && data) {
-                       pUnk = (IUnknown*) data;
+                       pUnk = (IUnknown*)data;
                }
        }
        else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
@@ -650,11 +678,11 @@ STDMETHODIMP CControl::get_ItemObject(VARIANT idx, VARIANT *pVal)
                }
 
                LVITEM itm = {0};
-               itm.mask   = LVIF_PARAM;
-               itm.iItem  = nIdx;
+               itm.mask = LVIF_PARAM;
+               itm.iItem = nIdx;
                if (ListView_GetItem(m_hWnd, &itm)) {
                        if (itm.lParam) {
-                               pUnk = (IUnknown*) itm.lParam;
+                               pUnk = (IUnknown*)itm.lParam;
                        }
                }
        }
@@ -664,27 +692,25 @@ STDMETHODIMP CControl::get_ItemObject(VARIANT idx, VARIANT *pVal)
        }
 
        if (pUnk) {
-               pUnk->AddRef();
-               pVal->vt      = VT_UNKNOWN;
-               pVal->punkVal = pUnk;
+               CComVariant tmp(pUnk);
+               return tmp.Detach(pVal);
        }
        return S_OK;
 }
 
 STDMETHODIMP CControl::DeleteAllItems()
 {
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
        // \83R\83\93\83g\83\8d\81[\83\8b\82Ì\93à\95\94\83A\83C\83e\83\80\82É\8aÖ\98A\95t\82¯\82ç\82ê\82Ä\82¢\82½\98A\91z\94z\97ñ\83I\83u\83W\83F\83N\83g\82ð\89ð\95ú\82·\82é
        if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\82Ì\89ð\95ú
                int mx = ::SendMessage(m_hWnd, CB_GETCOUNT, 0, 0);
                for (int i = 0; i < mx; i++) {
-                       DWORD data = ::SendMessage(m_hWnd, LB_GETITEMDATA, i, 0);
+                       LRESULT data = ::SendMessage(m_hWnd, LB_GETITEMDATA, i, 0);
                        if (data != LB_ERR && data) {
-                               ((IUnknown*) data)->Release();
+                               ((IUnknown*)data)->Release();
                        }
                }
        }
@@ -692,12 +718,12 @@ STDMETHODIMP CControl::DeleteAllItems()
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\98A\91z\94z\97ñ\82Ì\89ð\95ú
                int mx = ListView_GetItemCount(m_hWnd);
                LVITEM itm = {0};
-               for(int i = 0; i < mx; i++) {
-                       itm.mask   = LVIF_PARAM;
-                       itm.iItem  = i;
-                       if (ListView_GetItem(m_hWnd,&itm)) {
+               for (int i = 0; i < mx; i++) {
+                       itm.mask = LVIF_PARAM;
+                       itm.iItem = i;
+                       if (ListView_GetItem(m_hWnd, &itm)) {
                                if (itm.lParam) {
-                                       ((IUnknown*) itm.lParam)->Release();
+                                       ((IUnknown*)itm.lParam)->Release();
                                }
                        }
                }
@@ -706,7 +732,7 @@ STDMETHODIMP CControl::DeleteAllItems()
                // \83c\83\8a\81[\83r\83\85\81[\82Ì\98A\91z\94z\97ñ\82Ì\89ð\95ú
                HTREEITEM hItem = TreeView_GetRoot(m_hWnd);
                while (hItem) {
-                       HTREEITEM hNextItem = TreeView_GetNextSibling(m_hWnd,hItem);
+                       HTREEITEM hNextItem = TreeView_GetNextSibling(m_hWnd, hItem);
                        CTreeItem::DeleteTreeItemWithData(m_hWnd, hItem);
                        hItem = hNextItem;
                }
@@ -737,21 +763,21 @@ STDMETHODIMP CControl::DeleteString(VARIANT idx, VARIANT *pRet)
 
        int nIdx = -1;
        CComVariant varIdx;
-       if (varIdx.ChangeType(VT_I2, &idx) == S_OK) {
+       if (SUCCEEDED(varIdx.ChangeType(VT_I2, &idx))) {
                nIdx = varIdx.iVal;
        }
-       if (nIdx < 0 ) {
+       if (nIdx < 0) {
                return DISP_E_BADINDEX;
        }
 
        CComVariant ret;
        if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // \83R\83\93\83{\83{\83b\83N\83X\82©\82ç\95\8e\9a\97ñ\82ð\8dí\8f\9c\82·\82é
-               int mx = ::SendMessage(m_hWnd,CB_GETCOUNT, 0, 0);
+               int mx = ::SendMessage(m_hWnd, CB_GETCOUNT, 0, 0);
                if (nIdx >= mx) {
                        return Error(IDS_ERR_RANDEOUT);
                }
-               int result = ::SendMessage(m_hWnd,CB_DELETESTRING, nIdx, 0);
+               int result = ::SendMessage(m_hWnd, CB_DELETESTRING, nIdx, 0);
                ret = (bool)(result != LB_ERR);
        }
        else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
@@ -762,7 +788,7 @@ STDMETHODIMP CControl::DeleteString(VARIANT idx, VARIANT *pRet)
                }
 
                // \98A\91z\94z\97ñ\83I\83u\83W\83F\83N\83g\82ð\94j\8aü\82·\82é
-               DWORD data = ::SendMessage(m_hWnd,LB_GETITEMDATA, nIdx, 0);
+               LRESULT data = ::SendMessage(m_hWnd, LB_GETITEMDATA, nIdx, 0);
                if (data != LB_ERR && data) {
                        ((IUnknown*)data)->Release();
                }
@@ -780,18 +806,18 @@ STDMETHODIMP CControl::DeleteString(VARIANT idx, VARIANT *pRet)
 
                // \98A\91z\94z\97ñ\83I\83u\83W\83F\83N\83g\82ð\94j\8aü\82·\82é
                LVITEM itm = {0};
-               itm.mask   = LVIF_PARAM;
-               itm.iItem  = nIdx;
-               if (ListView_GetItem(m_hWnd,&itm)) {
+               itm.mask = LVIF_PARAM;
+               itm.iItem = nIdx;
+               if (ListView_GetItem(m_hWnd, &itm)) {
                        if (itm.lParam) {
-                               ((IUnknown*) itm.lParam)->Release();
+                               ((IUnknown*)itm.lParam)->Release();
                        }
                }
 
                // \8dí\8f\9c
                ret = ListView_DeleteItem(m_hWnd, nIdx) ? true : false;
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -803,7 +829,7 @@ STDMETHODIMP CControl::GetCount(VARIANT *pRet)
 {
        ::VariantInit(pRet);
 
-       if (!m_hParent || !m_hWnd){
+       if (!m_hParent || !m_hWnd) {
                return Error(IDS_ERR_DESTROYED);
        }
 
@@ -828,7 +854,7 @@ STDMETHODIMP CControl::GetCount(VARIANT *pRet)
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\83J\83E\83\93\83g
                ret = (short)ListView_GetItemCount(m_hWnd);
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -848,16 +874,16 @@ STDMETHODIMP CControl::get_CurrentSelectedItem(VARIANT *pVal)
                // \83R\83\93\83{\83{\83b\83N\83X\82Ì\8c»\8dÝ\82Ì\91I\91ð\82ð\95Ô\82·
                ret = (long)::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0);
        }
-       else if(!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
+       else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\8c»\8dÝ\82Ì\91I\91ð\83A\83C\83e\83\80\82ð\95Ô\82·
                if (!(m_style & LBS_MULTIPLESEL)) {
                        // \83V\83\93\83O\83\8b\83Z\83\8c\83N\83g\82Ì\8fê\8d\87
                        ret = (long)::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0);
                }
-               else{
+               else {
                        // \83}\83\8b\83`\83Z\83\8c\83N\83g\82Ì\8fê\8d\87\82Í\8dÅ\8f\89\82Ì\91I\91ð\83A\83C\83e\83\80\82ð\95Ô\82·
                        ret = (long)-1;
-                       int mx = ::SendMessage(m_hWnd,LB_GETCOUNT,0,0);
+                       int mx = ::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0);
                        if (mx > 0) {
                                std::vector<long> buf(mx + 1);
                                long* pBuf = &buf[0];
@@ -870,24 +896,30 @@ STDMETHODIMP CControl::get_CurrentSelectedItem(VARIANT *pVal)
        }
        else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\8dÅ\8f\89\82Ì\91I\91ð\83A\83C\83e\83\80\82ð\92T\82·
-               ret = (long)ListView_GetNextItem(m_hWnd,-1,LVNI_SELECTED);
+               ret = (long)ListView_GetNextItem(m_hWnd, -1, LVNI_SELECTED);
        }
        else if (!lstrcmp(m_classname, WC_TREEVIEW)) {
                // \83c\83\8a\81[\83r\83\85\81[\82Ì\8ew\92è\83A\83C\83e\83\80\82Ì\91®\90«\82ð\92²\82×\82é
                HTREEITEM hItem = TreeView_GetSelection(m_hWnd);
                if (hItem) {
                        CComObject<CTreeItem>* pItem = NULL;
-                       if (pItem->CreateInstance(&pItem) == S_OK) {
-                               pItem->AddRef();
-                               pItem->SetParam(m_hWnd,hItem);
-                               IUnknown* pUnk = NULL;
-                               if (pItem->QueryInterface(IID_IUnknown, (void**)&pUnk) == S_OK) {
-                                       ret = pUnk;
-                               }
+                       HRESULT hr;
+                       if (FAILED(hr = CComObject<CTreeItem>::CreateInstance(&pItem))) {
+                               return hr;
                        }
+
+                       IUnknown* pUnk = NULL;
+                       if (FAILED(hr = pItem->QueryInterface(&pUnk))) {
+                               delete pItem;
+                               return hr;
+                       }
+
+                       //FIXME: \95s\97v\82Ì\82Í\82¸ pItem->AddRef();
+                       pItem->SetParam(m_hWnd, hItem);
+                       ret = pUnk;
                }
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -902,11 +934,11 @@ STDMETHODIMP CControl::put_CurrentSelectedItem(VARIANT newVal)
 
        long nIdx = -1;
        CComVariant varIdx;
-       if(varIdx.ChangeType(VT_I4,&newVal) == S_OK){
+       if (SUCCEEDED(varIdx.ChangeType(VT_I4, &newVal))) {
                nIdx = varIdx.lVal;
        }
 
-       if!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
+       if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // \83R\83\93\83{\83{\83b\83N\83X\82ð\91I\91ð\82ð\8ew\92è\82·\82é
                ::SendMessage(m_hWnd, CB_SETCURSEL, nIdx, 0);
        }
@@ -919,7 +951,7 @@ STDMETHODIMP CControl::put_CurrentSelectedItem(VARIANT newVal)
                else {
                        // \83}\83\8b\83`\83Z\83\8c\83N\83g\82Ì\8fê\8d\87
                        int mx = ::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0);
-                       for(int i = 0; i < mx; i++) {
+                       for (int i = 0; i < mx; i++) {
                                ::SendMessage(m_hWnd, LB_SETSEL, FALSE, i);
                        }
                        if (nIdx >= 0 && nIdx < mx) {
@@ -930,13 +962,12 @@ STDMETHODIMP CControl::put_CurrentSelectedItem(VARIANT newVal)
        else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\91I\91ð
                int mx = ListView_GetItemCount(m_hWnd);
-               ListView_SetItemState(m_hWnd, -1, LVIS_SELECTED, 0); // TODO:\97v\8am\94F -1\82Å\91S\83A\83C\83e\83\80\91Î\8fÛ\81A\88È\91O\82Ímx\89ñ\83\8b\81[\83v\82µ\82Ä\82¢\82½\81B
+               ListView_SetItemState(m_hWnd, -1, LVIS_SELECTED, 0);
                if (nIdx >= 0 && nIdx < mx) {
-                       // FIXME:TODO: \97v\8am\94F\81@nIdx\82Å\82Í\82È\82­i\82ð\8eg\82Á\82Ä\82¢\82½\81H\90³\82µ\82¢\82Æ\82Í\8ev\82¦\82È\82¢\81B
                        ListView_SetItemState(m_hWnd, nIdx, LVIS_SELECTED, LVIS_SELECTED);
                }
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -947,7 +978,7 @@ STDMETHODIMP CControl::get__NewEnum(IUnknown **pVal)
 {
        *pVal = NULL;
 
-       if(!m_hParent || !m_hWnd){
+       if (!m_hParent || !m_hWnd) {
                return Error(IDS_ERR_DESTROYED);
        }
 
@@ -956,7 +987,7 @@ STDMETHODIMP CControl::get__NewEnum(IUnknown **pVal)
 
        if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // \83R\83\93\83{\83{\83b\83N\83X\82Ì\8c»\8dÝ\82Ì\91I\91ð\82ð\95Ô\82·
-               int nIdx = ::SendMessage(m_hWnd,CB_GETCURSEL,0,0);
+               int nIdx = ::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0);
                mx = 1;
                varArray.resize(1);
                ::VariantInit(&varArray[0]);
@@ -974,9 +1005,9 @@ STDMETHODIMP CControl::get__NewEnum(IUnknown **pVal)
                        varArray[0].vt = VT_I2;
                        varArray[0].iVal = nIdx;
                }
-               else{
+               else {
                        // \83}\83\8b\83`\83Z\83\8c\83N\83g\82Ì\8fê\8d\87\82Í\8dÅ\8f\89\82Ì\91I\91ð\83A\83C\83e\83\80\82ð\95Ô\82·
-                       int sz = ::SendMessage(m_hWnd,LB_GETCOUNT,0,0);
+                       int sz = ::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0);
                        std::vector<long> buf(sz + 1);
                        long* pBuf = &buf[0];
                        mx = ::SendMessage(m_hWnd, LB_GETSELITEMS, sz, (LPARAM)pBuf);
@@ -991,33 +1022,34 @@ STDMETHODIMP CControl::get__NewEnum(IUnknown **pVal)
                        }
                }
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\8dÅ\8f\89\82Ì\91I\91ð\83A\83C\83e\83\80\82ð\92T\82·
                mx = ListView_GetSelectedCount(m_hWnd);
                varArray.resize(mx + 1);
                int nIdx = -1;
                int i = 0;
-               while ((nIdx = ListView_GetNextItem(m_hWnd,nIdx,LVNI_SELECTED)) != -1
-                        && i < mx) {
+               while ((nIdx = ListView_GetNextItem(m_hWnd, nIdx, LVNI_SELECTED)) != -1
+                       && i < mx) {
                        ::VariantInit(&varArray[i]);
                        varArray[i].vt = VT_I2;
                        varArray[i].iVal = (short)nIdx;
                        i++;
                }
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
 
        // \97ñ\8b\93\83C\83\93\83^\81[\83t\83F\83C\83X\82Ì\90\90¬
        CComObject<CComEnumVARIANT>* pCol = NULL;
-       if (CComObject<CComEnumVARIANT>::CreateInstance(&pCol) == S_OK) {
-               pCol->AddRef();
-               pCol->Init(&varArray[0], &varArray[mx], pCol, AtlFlagCopy);
-               *pVal = pCol;
+       HRESULT hr;
+       if (FAILED(hr = CComObject<CComEnumVARIANT>::CreateInstance(&pCol))) {
+               return hr;
        }
-       return S_OK;
+       pCol->Init(&varArray[0], &varArray[mx], pCol, AtlFlagCopy);
+
+       return pCol->QueryInterface(pVal);
 }
 
 
@@ -1026,14 +1058,13 @@ STDMETHODIMP CControl::get_ItemSelectState(VARIANT idx, VARIANT *pVal)
        ::VariantInit(pVal);
        CComVariant ret;
 
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
 
        int nIdx = -1;
        CComVariant varIdx;
-       if(varIdx.ChangeType(VT_I2,&idx) == S_OK){
+       if (SUCCEEDED(varIdx.ChangeType(VT_I2, &idx))) {
                nIdx = idx.iVal;
        }
 
@@ -1041,7 +1072,7 @@ STDMETHODIMP CControl::get_ItemSelectState(VARIANT idx, VARIANT *pVal)
                // \83R\83\93\83{\83{\83b\83N\83X\82Ì\8c»\8dÝ\82Ì\91I\91ð\82ð\95Ô\82·
                int nSel = ::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0);
                // \8ew\92è\82µ\82½\83A\83C\83e\83\80\82Æ\91I\91ð\82ª\88ê\92v\82µ\82Ä\82¢\82ê\82Îtrue
-               ret = (bool)((nSel == nIdx)?true:false);
+               ret = (bool)((nSel == nIdx) ? true : false);
        }
        else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\8c»\8dÝ\82Ì\91I\91ð\83A\83C\83e\83\80\82ð\95Ô\82·
@@ -1051,7 +1082,7 @@ STDMETHODIMP CControl::get_ItemSelectState(VARIANT idx, VARIANT *pVal)
                        // \8ew\92è\82µ\82½\83A\83C\83e\83\80\82Æ\91I\91ð\82ª\88ê\92v\82µ\82Ä\82¢\82ê\82Îtrue
                        ret = (nSel == nIdx);
                }
-               else{
+               else {
                        // \83}\83\8b\83`\83Z\83\8c\83N\83g\82Ì\8fê\8d\87
                        ret = ::SendMessage(m_hWnd, LB_GETSEL, nIdx, 0) > 0;
                }
@@ -1064,7 +1095,7 @@ STDMETHODIMP CControl::get_ItemSelectState(VARIANT idx, VARIANT *pVal)
                        ret = (state & LVNI_SELECTED) != 0;
                }
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -1080,13 +1111,13 @@ STDMETHODIMP CControl::put_ItemSelectState(VARIANT idx, VARIANT newVal)
 
        int nIdx = -1;
        CComVariant varIdx;
-       if (varIdx.ChangeType(VT_I2,&idx) == S_OK) {
+       if (SUCCEEDED(varIdx.ChangeType(VT_I2, &idx))) {
                nIdx = idx.iVal;
        }
 
        bool bSelected = false;
        CComVariant varSelected;
-       if (varSelected.ChangeType(VT_I2,&newVal) == S_OK) {
+       if (SUCCEEDED(varSelected.ChangeType(VT_I2, &newVal))) {
                bSelected = newVal.iVal != 0;
        }
 
@@ -1105,14 +1136,14 @@ STDMETHODIMP CControl::put_ItemSelectState(VARIANT idx, VARIANT newVal)
                        ::SendMessage(m_hWnd, LB_SETSEL, nIdx, bSelected);
                }
        }
-       else if(!lstrcmp(m_classname, WC_LISTVIEW)) {
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\8ew\92è\83A\83C\83e\83\80\82Ì\91®\90«\82ð\92²\82×\82é
                int mx = ListView_GetItemCount(m_hWnd);
                if (nIdx >= 0 && nIdx < mx) {
                        ListView_SetItemState(m_hWnd, nIdx, bSelected ? LVNI_SELECTED : 0, LVNI_SELECTED);
                }
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -1122,15 +1153,14 @@ STDMETHODIMP CControl::put_ItemSelectState(VARIANT idx, VARIANT newVal)
 STDMETHODIMP CControl::get_SelectedCount(short *pVal)
 {
        *pVal = 0;
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
 
        if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\83J\83E\83\93\83g
-               int nIdx = ::SendMessage(m_hWnd,CB_GETCURSEL,0,0);
-               *pVal = (short)(nIdx>=0?1:0);
+               int nIdx = ::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0);
+               *pVal = (short)(nIdx >= 0 ? 1 : 0);
        }
        else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\83J\83E\83\93\83g
@@ -1138,7 +1168,7 @@ STDMETHODIMP CControl::get_SelectedCount(short *pVal)
                        int nIdx = ::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0);
                        *pVal = (short)(nIdx >= 0 ? 1 : 0);
                }
-               else{
+               else {
                        // \83}\83\8b\83`\83Z\83\8c\83N\83g
                        *pVal = (short)::SendMessage(m_hWnd, LB_GETSELCOUNT, 0, 0);
                }
@@ -1147,7 +1177,7 @@ STDMETHODIMP CControl::get_SelectedCount(short *pVal)
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\83J\83E\83\93\83g
                *pVal = (short)ListView_GetSelectedCount(m_hWnd);
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -1156,23 +1186,27 @@ STDMETHODIMP CControl::get_SelectedCount(short *pVal)
 
 STDMETHODIMP CControl::get_TreeRoot(VARIANT *pVal)
 {
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
        ::VariantInit(pVal);
-       if(!lstrcmp(m_classname,WC_TREEVIEW)){
-               HTREEITEM hItem = TreeView_GetRoot(m_hWnd);
+       if (!lstrcmp(m_classname, WC_TREEVIEW)) {
                CComObject<CTreeItem>* pItem = NULL;
-               if(pItem->CreateInstance(&pItem) == S_OK){
-                       pItem->AddRef();
-                       pItem->SetParam(m_hWnd,hItem);
-                       IUnknown* pUnk = NULL;
-                       if(pItem->QueryInterface(IID_IUnknown,(void**)&pUnk) == S_OK){
-                               pVal->vt      = VT_UNKNOWN;
-                               pVal->punkVal = pUnk;
-                       }
+               HRESULT hr;
+               if (FAILED(hr = CComObject<CTreeItem>::CreateInstance(&pItem))) {
+                       return hr;
+               }
+
+               HTREEITEM hItem = TreeView_GetRoot(m_hWnd);
+               pItem->SetParam(m_hWnd, hItem);
+
+               IUnknown* pUnk = NULL;
+               if (FAILED(hr = pItem->QueryInterface(IID_IUnknown, (void**)&pUnk))) {
+                       delete pItem;
+                       return hr;
                }
+               pVal->vt = VT_UNKNOWN;
+               pVal->punkVal = pUnk;
        }
        return S_OK;
 }
@@ -1213,12 +1247,12 @@ int CControl::CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
        wsprintf(mes, _TEXT("SORT%d"), me->m_dLastSortColumn);
        CComVariant key(mes);
 
-       CComVariant val1,val2;
+       CComVariant val1, val2;
        if (!me->m_bSortReverse) {
                pMap1->get_Value(key, &val1);
                pMap2->get_Value(key, &val2);
        }
-       else{
+       else {
                pMap1->get_Value(key, &val2);
                pMap2->get_Value(key, &val1);
        }
@@ -1232,66 +1266,65 @@ int CControl::CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
        }
 
        int ret = 0;
-       switch (me->m_typCompare)
-       {
-       case VT_UI1:
+       switch (me->m_typCompare) {
+               case VT_UI1:
                {
                        val1.ChangeType(VT_UI1);
                        val2.ChangeType(VT_UI1);
                        ret = val1.bVal - val2.bVal;
                        break;
                }
-       case VT_I2:
+               case VT_I2:
                {
                        val1.ChangeType(VT_I2);
                        val2.ChangeType(VT_I2);
                        ret = val1.iVal - val2.iVal;
                        break;
                }
-       case VT_I4:
+               case VT_I4:
                {
                        val1.ChangeType(VT_I4);
                        val2.ChangeType(VT_I4);
                        ret = val1.lVal - val2.lVal;
                        break;
                }
-       case VT_R4:
+               case VT_R4:
                {
                        val1.ChangeType(VT_R4);
                        val2.ChangeType(VT_R4);
                        ret = val1.fltVal > val2.fltVal;
                        break;
                }
-       case VT_R8:
+               case VT_R8:
                {
                        val1.ChangeType(VT_R8);
                        val2.ChangeType(VT_R8);
                        ret = val1.dblVal > val2.dblVal;
                        break;
                }
-       case VT_CY:
+               case VT_CY:
                {
                        val1.ChangeType(VT_CY);
                        val2.ChangeType(VT_CY);
                        ret = (int)(val1.cyVal.int64 - val2.cyVal.int64); //FIXME: \82æ\82ë\82µ\82­\82È\82¢\81B\8c¸\8eZ\8c\8b\89Ê\82ª\8c\85\82 \82Ó\82ê\82µ\82½\8fê\8d\87\81A\94ä\8ar\8aÖ\90\94\82ª\94j\92]\82·\82é\81B\82È\82¨\82³\82Ë\82Î\81B
                        break;
                }
-       case VT_DATE:
+               case VT_DATE:
                {
                        val1.ChangeType(VT_DATE);
                        val2.ChangeType(VT_DATE);
                        ret = val1.date > val2.date;
                        break;
                }
-       case VT_BSTR:
+               case VT_BSTR:
                {
-                       if(val1.ChangeType(VT_BSTR) == S_OK &&
-                          val2.ChangeType(VT_BSTR) == S_OK){
-                               ret = lstrcmpW(val1.bstrVal,val2.bstrVal);
+                       if (SUCCEEDED(val1.ChangeType(VT_BSTR)) &&
+                               SUCCEEDED(val2.ChangeType(VT_BSTR))) {
+                               ret = lstrcmpW(val1.bstrVal, val2.bstrVal);
                        }
                        break;
                }
-       default:
+               default:
                break;
        }
        return ret;
@@ -1307,7 +1340,7 @@ void CControl::OnRClick()
                // \83c\83\8a\81[\83r\83\85\81[\82Å\82 \82ê\82Î\83h\83\8d\83b\83v\83n\83C\83\89\83C\83g\82ð\91I\91ð\82É\82·\82é
                HTREEITEM hItem = TreeView_GetDropHilight(m_hWnd);
                if (hItem) {
-                       TreeView_SelectItem(m_hWnd,hItem);
+                       TreeView_SelectItem(m_hWnd, hItem);
                }
        }
 }
@@ -1343,7 +1376,7 @@ STDMETHODIMP CControl::put_ItemCheckState(VARIANT idx, BOOL newVal)
                return Error(IDS_ERR_DESTROYED);
        }
 
-       if (lstrcmp(m_classname,WC_LISTVIEW)) {
+       if (lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -1369,7 +1402,7 @@ STDMETHODIMP CControl::DeleteSelectedItem()
        if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\91I\91ð\8dí\8f\9c
                CComVariant varRet, dmy;
-               while (get_CurrentSelectedItem(&varRet) == S_OK && varRet.vt != VT_EMPTY) {
+               while (SUCCEEDED(get_CurrentSelectedItem(&varRet)) && varRet.vt != VT_EMPTY) {
                        varRet.ChangeType(VT_I4);
                        if (varRet.lVal < 0) {
                                break;
@@ -1377,7 +1410,7 @@ STDMETHODIMP CControl::DeleteSelectedItem()
                        DeleteString(varRet, &dmy);
                }
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\8dí\8f\9c
                int nIdx = -1;
                while ((nIdx = ListView_GetNextItem(m_hWnd, nIdx, LVNI_SELECTED)) != -1) {
@@ -1386,7 +1419,7 @@ STDMETHODIMP CControl::DeleteSelectedItem()
                        nIdx = -1;
                }
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -1395,17 +1428,17 @@ STDMETHODIMP CControl::DeleteSelectedItem()
 
 STDMETHODIMP CControl::get_ItemText(VARIANT idx, BSTR *pVal)
 {
-       if(!m_hParent || !m_hWnd){
+       if (!m_hParent || !m_hWnd) {
                return Error(IDS_ERR_DESTROYED);
        }
 
        int nIdx = -1;
        CComVariant varIdx;
-       if (varIdx.ChangeType(VT_I2,&idx) == S_OK) {
+       if (SUCCEEDED(varIdx.ChangeType(VT_I2, &idx))) {
                nIdx = varIdx.iVal;
        }
 
-       if(nIdx < 0){
+       if (nIdx < 0) {
                return DISP_E_TYPEMISMATCH;
        }
 
@@ -1442,7 +1475,7 @@ STDMETHODIMP CControl::get_ItemText(VARIANT idx, BSTR *pVal)
                        }
                }
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
                return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
@@ -1458,7 +1491,7 @@ STDMETHODIMP CControl::put_ItemText(VARIANT idx, BSTR newVal)
 
        int nIdx = -1;
        CComVariant varIdx;
-       if (varIdx.ChangeType(VT_I2, &idx) == S_OK) {
+       if (SUCCEEDED(varIdx.ChangeType(VT_I2, &idx))) {
                nIdx = varIdx.iVal;
        }
 
@@ -1477,7 +1510,7 @@ STDMETHODIMP CControl::put_ItemText(VARIANT idx, BSTR newVal)
        return Error(IDS_ERR_NOTSUPPORTCONTROL);
 }
 
-STDMETHODIMP CControl::SetClassEvent(BSTR name,VARIANT* pvarUnk)
+STDMETHODIMP CControl::SetClassEvent(BSTR name, VARIANT* pvarUnk)
 {
        m_bstrClassEvent = name;
        GetThisInterface(pvarUnk);
@@ -1498,26 +1531,26 @@ STDMETHODIMP CControl::CreateChild(VARIANT text, VARIANT varItem, VARIANT* pvarU
 
        // \83A\83C\83e\83\80\82Ì\8c\9f\8fØ
        CComVariant tmp;
-       if (tmp.ChangeType(VT_UNKNOWN, &varItem) == S_OK) {
+       if (SUCCEEDED(tmp.ChangeType(VT_UNKNOWN, &varItem))) {
                ITreeItem * pItem = NULL;
-               if (tmp.punkVal->QueryInterface(IID_ITreeItem, (void**) &pItem) != S_OK) {
+               if (tmp.punkVal->QueryInterface(IID_ITreeItem, (void**)&pItem) != S_OK) {
                        return DISP_E_UNKNOWNINTERFACE;
                }
 
                IUnknown* pUnk = NULL;
-               if (pItem->Create(text,&pUnk) == S_OK) {
-                       pvarUnk->vt      = VT_UNKNOWN;
+               if (SUCCEEDED(pItem->Create(text, &pUnk))) {
+                       pvarUnk->vt = VT_UNKNOWN;
                        pvarUnk->punkVal = pUnk;
                }
                pItem->Release();
        }
-       else{
+       else {
                tmp.ChangeType(VT_VARIANT, &varItem);
                if (tmp.vt == VT_ERROR || tmp.vt == VT_NULL || tmp.vt == VT_EMPTY) {
                        // \83\8b\81[\83g\8fã\82É\83A\83C\83e\83\80\82ð\8dì\90¬\82·\82é
-                       AddString(text,pvarUnk);
+                       AddString(text, pvarUnk);
                }
-               else{
+               else {
                        return DISP_E_TYPEMISMATCH;
                }
        }