OSDN Git Service

UNICODEビルド、X64ビルドでコンパイルエラーが発生しないように修正した。
authorseraphy <seraphy@seraphyware.com>
Sat, 25 Jul 2015 01:10:56 +0000 (10:10 +0900)
committerseraphy <seraphy@seraphyware.com>
Fri, 14 Aug 2015 13:51:54 +0000 (22:51 +0900)
動作するかは未確認。

28 files changed:
.gitignore
CommDialog.cpp
CommDialog.h
Control.cpp
Control.h
Draw.cpp
Form.cpp
Form.h
Layer.cpp
Layer.h
ObjectMap.cpp
OverlappedWindow.cpp
OverlappedWindow.h
PrivateProfile.cpp
PrivateProfile.h
ProfileSection.cpp
ProfileSection.h
SeraphyScriptTools.cpp
SeraphyScriptTools.h
SeraphyScriptTools.sln
SeraphyScriptTools.vcproj [deleted file]
SeraphyScriptTools.vcxproj
Shell.cpp
Shell.h
StdAfx.h
TreeItem.cpp
TreeItem.h
generic.cpp

index 5973a72..408e84e 100644 (file)
@@ -1,5 +1,10 @@
 /Debug
 /ipch
+/MBCS Debug
+/MBCS Release
+/Unicode Debug
+/Unicode Release
+/x64
 SeraphyScriptTools.sdf
 dlldata.c
 SeraphyScriptTools.tlb
index fc4a1c4..391a645 100644 (file)
@@ -9,61 +9,79 @@
 /////////////////////////////////////////////////////////////////////////////
 // CCommDialog
 
-void CCommDialog::CommFileDialog(VARIANT* pvarReturn,VARIANT varPathName, VARIANT varFilter,BOOL bMode,DWORD flag)
+void CCommDialog::CommFileDialog(VARIANT *pvarReturn, VARIANT varPathName, VARIANT varFilter, BOOL bMode, DWORD flag)
 {
        ::VariantInit(pvarReturn);
 
        // \83t\83@\83C\83\8b\82ð\8aJ\82­\81E\95Û\91\83_\83C\83A\83\8d\83O\8b¤\92Ê\83\8b\81[\83`\83\93
-       CComVariant path;
-       CComVariant filter;
-       const int PATHBUFMAX = 8192;
-       CHAR szPathName[PATHBUFMAX] = {0};
-       CHAR szFilter  [MAX_PATH+2] = {0};
-       CHAR szDefExtention[MAX_PATH] = {0};
-       CHAR szInitialDir[MAX_PATH] = {0};
-
-       if(path.ChangeType(VT_BSTR,&varPathName) == S_OK){
-               // \83t\83@\83C\83\8b\96¼\82Ì\8eæ\82è\8fo\82µ
-               WideCharToMultiByte(GetACP(),0,path.bstrVal,-1,szPathName,PATHBUFMAX,NULL,NULL);
+
+       ATL::CString szPathName;
+       {
+               CComVariant path;
+               if (path.ChangeType(VT_BSTR, &varPathName) == S_OK) {
+                       // \83t\83@\83C\83\8b\96¼\82Ì\8eæ\82è\8fo\82µ
+                       szPathName = path.bstrVal;
+               }
+       }
+
+       ATL::CString szFilter;
+       {
+               CComVariant filter;
+               if (filter.ChangeType(VT_BSTR, &varFilter) == S_OK) {
+                       // \83t\83B\83\8b\83^\8ew\92è\82ª\82 \82é
+                       szFilter = varFilter.bstrVal;
+               }
        }
-       if(filter.ChangeType(VT_BSTR,&varFilter) == S_OK){
-               // \83t\83B\83\8b\83^\8ew\92è\82ª\82 \82é
-               WideCharToMultiByte(GetACP(),0,filter.bstrVal,-1,szFilter,MAX_PATH,NULL,NULL);
-               LPSTR p = szFilter;
-               LPSTR pExt = NULL;
-               while(*p){
-                       if(*p == '|'){
-                               *p++ = 0;
-                               if(!pExt){
+
+       ATL::CString szDefExtention;
+       if (!szFilter.IsEmpty()) {
+               LPTSTR p = szFilter.GetBuffer();
+               LPTSTR pExt = NULL;
+               while (*p) {
+                       if (*p == '|') {
+                               *p++ = 0; // \95\8e\9a\8bæ\90Ø\82è\82Å\8fI\92[\82³\82¹\82é
+                               if (!pExt) {
                                        // \8dÅ\8f\89\82Ì\8bæ\90Ø\82è\83}\81[\83N\82ª\8dÅ\8f\89\82Ì\8ag\92£\8eq\83}\81[\83N\82Å\82 \82ë\82¤\81B
                                        pExt = p;
                                }
                        }
-                       p = CharNextA(p);
+                       p = CharNext(p);
                }
+
                // \95¡\90\94\8ag\92£\8eq\83t\83B\83\8b\83^\82Å\82 \82ê\82Î\8dÅ\8f\89\82Ì\8ag\92£\8eq\82Ì\82Ý\8eæ\82è\8fo\82·
-               lstrcpyA(szDefExtention,pExt);
-               pExt = szDefExtention;
-               while(*pExt){
-                       if(*pExt == ';'){
+               if (pExt) {
+                       szDefExtention = pExt;
+               }
+               pExt = szDefExtention.GetBuffer();
+               while (*pExt) {
+                       if (*pExt == ';'){
+                               *pExt = 0; // \8dÅ\8f\89\82Ì\8ag\92£\8eq\82Å\8fI\97¹\82³\82¹\82é
                                break;
                        }
-                       pExt = CharNextA(pExt);
+                       pExt = CharNext(pExt);
                }
        }
 
+       ATL::CString szInitialDir;
+       if (m_bstr_InitialDir.length() > 0) {
+               // \8f\89\8aú\83f\83B\83\8c\83N\83g\83\8a
+               szInitialDir = (LPCWSTR) m_bstr_InitialDir;
+       }
+
+       ATL::CString strFile(szPathName);
+       const int MAXBUFSIZ = MAX_PATH * 10;
+       LPTSTR pStrFileBuf = strFile.GetBufferSetLength(MAXBUFSIZ + 1);
+
        OPENFILENAME ofn = {0};
        ofn.lStructSize = sizeof(OPENFILENAME);
        ofn.lpstrFilter = szFilter;
-       ofn.lpstrFile   = szPathName;
-       ofn.nMaxFile    = PATHBUFMAX;
+       ofn.lpstrFile   = pStrFileBuf;
+       ofn.nMaxFile    = MAXBUFSIZ;
        ofn.lpstrDefExt = szDefExtention;
        ofn.Flags       = flag;
        ofn.hwndOwner   = GetMainWindow();
 
-       if(m_bstr_InitialDir.length() > 0){
-               // \8f\89\8aú\83f\83B\83\8c\83N\83g\83\8a
-               WideCharToMultiByte(GetACP(),0,m_bstr_InitialDir,-1,szInitialDir,MAX_PATH,NULL,NULL);
+       if (!szInitialDir.IsEmpty()) {
                ofn.lpstrInitialDir = szInitialDir;
        }
 
@@ -72,80 +90,86 @@ void CCommDialog::CommFileDialog(VARIANT* pvarReturn,VARIANT varPathName, VARIAN
                ofn.Flags |= OFN_NODEREFERENCELINKS;
        }
 
-       TCHAR szCaption[MAX_PATH] = {0};
+       ATL::CString szCaption;
        BOOL result = false;
-       if(bMode){
+       if (bMode) {
                // \8aJ\82­\83_\83C\83A\83\8d\83O
-               ofn.Flags |= (m_bReadonly)?OFN_READONLY:0;
-               if(m_bstr_OpenFileCaption.length() > 0){
-                       WideCharToMultiByte(GetACP(),0,m_bstr_OpenFileCaption,-1,szCaption,MAX_PATH,NULL,NULL);
+               ofn.Flags |= (m_bReadonly) ? OFN_READONLY : 0;
+               if (m_bstr_OpenFileCaption.length() > 0) {
+                       szCaption = (LPCWSTR) m_bstr_OpenFileCaption;
                        ofn.lpstrTitle = szCaption;
                }
                result = GetOpenFileName(&ofn);
-               if(result){
-                       m_bReadonly = (ofn.Flags & OFN_READONLY)?true:false;
+               if (result) {
+                       m_bReadonly = (ofn.Flags & OFN_READONLY) ? true : false;
                }
        }
        else{
                // \95Û\91\83_\83C\83A\83\8d\83O
-               if(m_bstr_SaveFileCaption.length() > 0){
-                       WideCharToMultiByte(GetACP(),0,m_bstr_SaveFileCaption,-1,szCaption,MAX_PATH,NULL,NULL);
+               if (m_bstr_SaveFileCaption.length() > 0) {
+                       szCaption = (LPCWSTR) m_bstr_SaveFileCaption;
                        ofn.lpstrTitle = szCaption;
                }
                result = GetSaveFileName(&ofn);
        }
 
-       if(result){
-               if(!(ofn.Flags & OFN_ALLOWMULTISELECT)){
+       if (result) {
+               if (!(ofn.Flags & OFN_ALLOWMULTISELECT)) {
                        // \92P\88ê\83t\83@\83C\83\8b\91I\91ð
                        CComVariant retpath;
-                       retpath = (LPCSTR)ofn.lpstrFile;
+                       retpath = ofn.lpstrFile;
                        retpath.Detach(pvarReturn);
                }
                else{
-                       // \95¡\90\94\83t\83@\83C\83\8b\91I\91ð
+                       // \95¡\90\94\83t\83@\83C\83\8b\91I\91ð(\83_\83u\83\8b\83k\83\8b\8fI\92[)
                        // \95Ô\82³\82ê\82½\83t\83@\83C\83\8b\90\94\82ð\8cv\90\94\82·\82é
                        int cnt = 0;
-                       LPCSTR p = szPathName;
-                       while(*p){
+                       LPCTSTR p = ofn.lpstrFile;
+                       while (*p) {
                                cnt++;
-                               while(*p++);
+                               while (*p++);
                        }
+
                        // \83V\83\93\83O\83\8b\82Ü\82½\82Í\83}\83\8b\83`
                        SAFEARRAY *pArray = NULL;
-                       if(cnt == 1){
+                       if (cnt == 1) {
                                // 1\82Â\82¾\82¯\82È\82ç\83t\83\8b\83p\83X\82ª\95Ô\82Á\82Ä\82¢\82é
-                               CComVariant tmp((LPCSTR)szPathName);
-                               pArray = SafeArrayCreateVector(VT_VARIANT,0,1);
+                               CComVariant tmp(ofn.lpstrFile);
+                               pArray = SafeArrayCreateVector(VT_VARIANT, 0, 1);
                                long indx = 0;
-                               SafeArrayPutElement(pArray,&indx,&tmp);
+                               SafeArrayPutElement(pArray, &indx, &tmp);
                        }
-                       else if(cnt > 1){
+                       else if (cnt > 1) {
                                // SAFEARRAY\82Ì\8dì\90¬
-                               pArray = SafeArrayCreateVector(VT_VARIANT,0,cnt-1);
+                               pArray = SafeArrayCreateVector(VT_VARIANT, 0, cnt - 1);
+
                                // \95¡\90\94\82È\82ç\8dÅ\8f\89\82ª\83f\83B\83\8c\83N\83g\83\8a\96¼\81A2\94Ô\96Ú\88È\8d~\82ª\83t\83@\83C\83\8b\96¼
-                               p = szPathName;
-                               _bstr_t dirname = (LPCSTR)p;
+                               p = ofn.lpstrFile;
+                               _bstr_t dirname = p;
+
                                // \96\96\94ö\82ª\83t\83H\83\8b\83_\83v\83\8c\83C\83X\82ª\8fI\82í\82Á\82Ä\82È\82¯\82ê\82Î\92Ç\89Á\82·\82é
                                LPCWSTR wp = dirname;
-                               while(*wp)wp++;
-                               if(wp - 1 > (LPCWSTR)dirname && *(wp - 1) != '\\'){
+                               while (*wp) wp++;
+                               if (wp - 1 > (LPCWSTR) dirname && *(wp - 1) != '\\') {
                                        dirname += L"\\";
                                }
-                               while(*p++);
+
+                               while (*p++);
                                // 2\94Ô\96Ú\88È\8d~\82Ì\8eæ\93¾
                                long indx = 0;
-                               while(*p){
-                                       _bstr_t name = (LPCSTR)p;
+                               while (*p) {
+                                       _bstr_t name = p;
                                        _bstr_t path = dirname + name;
-                                       CComVariant tmp((BSTR)path);
-                                       SafeArrayPutElement(pArray,&indx,&tmp);
-                                       while(*p++);
+                                       
+                                       CComVariant tmp((LPCWSTR) path);
+                                       SafeArrayPutElement(pArray, &indx, &tmp);
+                                       while (*p++);
                                        indx++;
                                }
                        }
+
                        // SAFEARRAY\82ª\8dì\90¬\82³\82ê\82Ä\82¢\82ê\82Î
-                       if(pArray){
+                       if (pArray) {
                                pvarReturn->vt     = VT_ARRAY | VT_VARIANT;
                                pvarReturn->parray = pArray;
                        }
@@ -291,35 +315,44 @@ STDMETHODIMP CCommDialog::put_BrowseForFolderCaption(BSTR newVal)
        return S_OK;
 }
 
-STDMETHODIMP CCommDialog::BrowseForFolder(VARIANT varCaption,VARIANT varDir, VARIANT varMode,VARIANT* pvarReturn)
+STDMETHODIMP CCommDialog::BrowseForFolder(VARIANT varCaption, VARIANT varDir, VARIANT varMode, VARIANT* pvarReturn)
 {
        ::VariantInit(pvarReturn);
+
        // \83L\83\83\83v\83V\83\87\83\93\82Ì\90Ý\92è
        CComVariant caption;
        if(varCaption.vt != VT_ERROR && varCaption.vt != VT_NULL && varCaption.vt != VT_EMPTY &&
-               caption.ChangeType(VT_BSTR,&varCaption) == S_OK){
+               caption.ChangeType(VT_BSTR, &varCaption) == S_OK) {
                put_BrowseForFolderCaption(caption.bstrVal);
        }
 
-       TCHAR szDirName[MAX_PATH];
-       TCHAR szTitle[MAX_PATH];
-       BROWSEINFO binfo = {0};
+       BROWSEINFO binfo = { 0 };
        binfo.hwndOwner = GetMainWindow();
-       if(m_bstr_BrowseForFolderCaption.length() > 0){
-               WideCharToMultiByte(GetACP(),0,m_bstr_BrowseForFolderCaption,-1,szTitle,MAX_PATH,NULL,NULL);
-               binfo.lpszTitle = szTitle;
+
+       ATL::CString szTitle;
+       {
+               if (m_bstr_BrowseForFolderCaption.length() > 0) {
+                       szTitle = (LPCWSTR)m_bstr_BrowseForFolderCaption;
+                       binfo.lpszTitle = szTitle;
+               }
        }
-       CComVariant path;
-       if(path.ChangeType(VT_BSTR,&varDir) == S_OK){
-               // \83t\83@\83C\83\8b\96¼\82Ì\8eæ\82è\8fo\82µ
-               WideCharToMultiByte(GetACP(),0,path.bstrVal,-1,szDirName,MAX_PATH,NULL,NULL);
+
+       ATL::CString szDirName;
+       {
+               CComVariant path;
+               if (path.ChangeType(VT_BSTR, &varDir) == S_OK){
+                       // \83t\83@\83C\83\8b\96¼\82Ì\8eæ\82è\8fo\82µ
+                       szDirName = path.bstrVal;
+               }
+               binfo.pszDisplayName = szDirName.GetBuffer();
        }
-       binfo.pszDisplayName = szDirName;
+
        int mode = 0;
        CComVariant varTmp;
        if(varTmp.ChangeType(VT_I4,&varMode) == S_OK){
                mode = varTmp.lVal;
        }
+
        binfo.ulFlags = 0;//BIF_NEWDIALOGSTYLE; // BIF_USENEWUI
        switch(mode & 0x0f)
        {
@@ -327,37 +360,49 @@ STDMETHODIMP CCommDialog::BrowseForFolder(VARIANT varCaption,VARIANT varDir, VAR
        default:
                binfo.ulFlags |= BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;
                binfo.lpfn           = BrowseCallbackProc;
-               binfo.lParam         = (LPARAM)szDirName;
+               binfo.lParam         = (LPARAM)(LPCTSTR)szDirName;
                break;
+       
        case 1:
                binfo.ulFlags |= BIF_BROWSEFORCOMPUTER;
                break;
+       
        case 2:
                binfo.ulFlags |= BIF_BROWSEFORPRINTER;
                break;
+       
        case 3:
                binfo.ulFlags |= BIF_RETURNFSANCESTORS;
                break;
        }
-       if(mode & 0x10){
+       
+       if (mode & 0x10) {
                binfo.ulFlags |= BIF_BROWSEINCLUDEFILES;
        }
-       if(mode & 0x20){
+       if (mode & 0x20) {
                binfo.ulFlags |= BIF_BROWSEINCLUDEURLS;
        }
-       if(mode & 0x40){
+       if (mode & 0x40) {
                binfo.ulFlags |= BIF_DONTGOBELOWDOMAIN;
        }
 
        LPITEMIDLIST idlst = NULL;
-       if((idlst = SHBrowseForFolder(&binfo)) != NULL){
-               IMalloc *pMalloc;
-               SHGetMalloc(&pMalloc);
-               SHGetPathFromIDList(idlst,szDirName);
+       if ((idlst = SHBrowseForFolder(&binfo)) != NULL) {
+               IMalloc *pMalloc = NULL;
+               HRESULT hr = SHGetMalloc(&pMalloc);
+               if (FAILED(hr)) {
+                       return hr;
+               }
+
+               ATL::CString ret;
+               LPTSTR pRet = ret.GetBufferSetLength(MAX_PATH);
+               SHGetPathFromIDList(idlst, pRet);
+
                pMalloc->Free(idlst);
                pMalloc->Release();
-               CComVariant tmp((LPCSTR)szDirName);
-               tmp.Detach(pvarReturn);
+
+               CComVariant tmp(pRet);
+               return tmp.Detach(pvarReturn);
        }
        return S_OK;
 }
@@ -412,64 +457,75 @@ STDMETHODIMP CCommDialog::SetMainWindow(VARIANT varUnk)
 STDMETHODIMP CCommDialog::MessageBox(VARIANT mes, VARIANT typ, VARIANT icon, VARIANT* pRet)
 {
        CComVariant ret;
-       LPSTR pBuf = NULL;
+
+       ATL::CString msg;
        CComVariant varMes;
-       if(varMes.ChangeType(VT_BSTR,&mes) == S_OK){
-               int sz = WideCharToMultiByte(GetACP(),0,varMes.bstrVal,-1,NULL,0,NULL,NULL);
-               pBuf = new CHAR[sz+1];
-               WideCharToMultiByte(GetACP(),0,varMes.bstrVal,-1,pBuf,sz,NULL,NULL);
-               pBuf[sz] = 0;
+       if (varMes.ChangeType(VT_BSTR,&mes) == S_OK) {
+               msg = mes.bstrVal;
        }
+
        UINT mode = MB_OK;
        CComVariant varType,varIcon;
-       if(varType.ChangeType(VT_I2,&typ) == S_OK){
-               if(varType.iVal / 10){
+       if (varType.ChangeType(VT_I2, &typ) == S_OK) {
+               if (varType.iVal / 10) {
                        mode = MB_DEFBUTTON2;
                }
+
                switch(varType.iVal % 10)
                {
                case 0:
                default:
                        mode |= MB_OK;
                        break;
+
                case 1:
                        mode |= MB_OKCANCEL;
                        break;
+
                case 2:
                        mode |= MB_YESNO;
                        break;
+
                case 3:
                        mode |= MB_YESNOCANCEL;
                        break;
+
                case 4:
                        mode |= MB_RETRYCANCEL;
                        break;
+
                case 5:
                        mode |= MB_ABORTRETRYIGNORE;
                        break;
                }
        }
-       if(varIcon.ChangeType(VT_I2,&icon) == S_OK){
+
+       if (varIcon.ChangeType(VT_I2,&icon) == S_OK) {
                switch(varIcon.iVal)
                {
                case 0:
                default:
                        break;
+
                case 1:
                        mode |= MB_ICONERROR;
                        break;
+
                case 2:
                        mode |= MB_ICONWARNING;
                        break;
+
                case 3:
                        mode |= MB_ICONINFORMATION;
                        break;
+
                case 4:
                        mode |= MB_ICONQUESTION;
                        break;
                }
        }
-       int md = ::MessageBox(GetMainWindow(),pBuf,GetMainCaption(),mode);
+
+       int md = ::MessageBox(GetMainWindow(), msg, GetMainCaption(),mode);
        switch(md)
        {
        case IDOK:
@@ -490,27 +546,22 @@ STDMETHODIMP CCommDialog::MessageBox(VARIANT mes, VARIANT typ, VARIANT icon, VAR
        return S_OK;
 }
 
-LPCSTR CCommDialog::GetMainCaption()
+ATL::CString CCommDialog::GetMainCaption()
 {
-       static CHAR szCaption[MAX_PATH];
-       if(!m_bstr_MessageCaption.length() && m_pMainWindow){
+       ATL::CString szCaption;
+       if (m_bstr_MessageCaption.Length() == 0 && m_pMainWindow) {
                // \83L\83\83\83v\83V\83\87\83\93\82ª\8ew\92è\82³\82ê\82Ä\82¢\82È\82¢\82È\82ç\8eæ\93¾\82·\82é
-               BSTR bstrCaption;
-               m_pMainWindow->get_Caption(&bstrCaption);
-               int cnt = WideCharToMultiByte(GetACP(),0,bstrCaption,-1,szCaption,MAX_PATH,NULL,NULL);
-               szCaption[cnt] = 0;
-               SysFreeString(bstrCaption);
-       }
-       else{
-               int cnt = WideCharToMultiByte(GetACP(),0,m_bstr_MessageCaption,-1,szCaption,MAX_PATH,NULL,NULL);
-               szCaption[cnt] = 0;
+               CComBSTR bstrCaption;
+               if (SUCCEEDED(m_pMainWindow->get_Caption(&bstrCaption))) {
+                       szCaption = bstrCaption;
+               }
        }
        return szCaption;
 }
 
 STDMETHODIMP CCommDialog::get_MessageCaption(BSTR *pVal)
 {
-       *pVal = m_bstr_MessageCaption.copy();
+       *pVal = m_bstr_MessageCaption.Copy();
        return S_OK;
 }
 
index 88892ec..a1f3b75 100644 (file)
@@ -196,20 +196,22 @@ public:
                return S_OK;
        }
        CComBSTR m_bstrCaption;
+
 public:
        STDMETHOD(ColorDialog)(/*[out,retval]*/VARIANT* pcolorVal);
        STDMETHOD(get_MessageCaption)(/*[out, retval]*/ BSTR *pVal);
        STDMETHOD(put_MessageCaption)(/*[in]*/ BSTR newVal);
-       LPCSTR GetMainCaption();
+       ATL::CString GetMainCaption();
        STDMETHOD(MessageBox)(/*[in]*/VARIANT mes,/*[in,optional]*/VARIANT typ,/*[in,optional]*/VARIANT icon,/*[out,retval]*/VARIANT* pRet);
        STDMETHOD(SetMainWindow)(/*[in]*/VARIANT varUnk);
        HWND GetMainWindow();
        HWND m_hStaticMainWindow;
+
 protected:
        CHOOSECOLOR m_color;
        COLORREF    m_colors[16];
        IOverlappedWindow* m_pMainWindow;
-       _bstr_t m_bstr_MessageCaption;
+       CComBSTR m_bstr_MessageCaption;
 };
 
 #endif //__COMMDIALOG_H_
index fa9ffd2..cc2a052 100644 (file)
@@ -6,6 +6,8 @@
 #include "generic.h"
 #include "objectmap.h"
 #include <list>
+#include <vector>
+
 using namespace std;
 
 /////////////////////////////////////////////////////////////////////////////
@@ -27,33 +29,36 @@ STDMETHODIMP CControl::InterfaceSupportsErrorInfo(REFIID riid)
 
 STDMETHODIMP CControl::get_Text(BSTR *pVal)
 {
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
+
        DWORD siz = ::GetWindowTextLength(m_hWnd);
-       LPSTR pMes = new CHAR[siz+1];
-       GetWindowText(m_hWnd,pMes,siz+1);
-       _bstr_t tmp = (LPCSTR)pMes;
-       *pVal = tmp.copy();
-       delete[]pMes;
+       
+       ATL::CString tmp;
+       LPTSTR pMes = tmp.GetBufferSetLength(siz + 1);
+       GetWindowText(m_hWnd, pMes, siz + 1);
+       tmp.ReleaseBuffer();
+
+       CComBSTR ret(tmp);
+       *pVal = ret.Detach();
        return S_OK;
 }
 
 STDMETHODIMP CControl::put_Text(BSTR newVal)
 {
        if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+               return Error(IDS_ERR_DESTROYED);
        }
-       _bstr_t tmp(newVal,true);
-       ::SetWindowText(m_hWnd,(LPCSTR)tmp);
+       
+       ATL::CString tmp(newVal);
+       ::SetWindowText(m_hWnd, tmp);
        return S_OK;
 }
 
 STDMETHODIMP CControl::get_ID(short *pVal)
 {
-       if(m_hWnd){
+       if (m_hWnd) {
                m_nID = (int)GetWindowLong(m_hWnd,GWL_ID);
        }
        *pVal = m_nID;
@@ -63,13 +68,13 @@ STDMETHODIMP CControl::get_ID(short *pVal)
 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,"BUTTON")){
+       if (m_hWnd) {
+               SetWindowLong(m_hWnd, GWL_ID, newVal);
+               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;
-                       ::SetWindowLong(m_hWnd,GWL_STYLE,m_style);
+                       ::SetWindowLong(m_hWnd, GWL_STYLE, m_style);
                }
        }
        return S_OK;
@@ -77,34 +82,33 @@ STDMETHODIMP CControl::put_ID(short newVal)
 
 STDMETHODIMP CControl::get_Visibility(BOOL *pVal)
 {
-       if(!m_hParent || !m_hWnd){
+       if (!m_hParent || !m_hWnd) {
                *pVal = 0;
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+               return Error(IDS_ERR_DESTROYED);
        }
+
        WINDOWPLACEMENT pls = {0};
        pls.length = sizeof(WINDOWPLACEMENT);
-       ::GetWindowPlacement(m_hWnd,&pls);
-       *pVal = (pls.showCmd != SW_HIDE)?true:false;
+       ::GetWindowPlacement(m_hWnd, &pls);
+       *pVal = (pls.showCmd != SW_HIDE) ? true : false;
        return S_OK;
 }
 
 STDMETHODIMP CControl::put_Visibility(BOOL newVal)
 {
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
-       ::ShowWindow(m_hWnd,newVal?SW_SHOWNORMAL:SW_HIDE);
+
+       ::ShowWindow(m_hWnd, newVal ? SW_SHOWNORMAL : SW_HIDE);
        return S_OK;
 }
 
 STDMETHODIMP CControl::get_Enable(BOOL *pVal)
 {
-       if(!m_hParent || !m_hWnd){
+       if (!m_hParent || !m_hWnd) {
                *pVal = 0;
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+               return Error(IDS_ERR_DESTROYED);
        }
        *pVal = ::IsWindowEnabled(m_hWnd);
        return S_OK;
@@ -112,9 +116,8 @@ STDMETHODIMP CControl::get_Enable(BOOL *pVal)
 
 STDMETHODIMP CControl::put_Enable(BOOL newVal)
 {
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
        ::EnableWindow(m_hWnd,newVal);
        return S_OK;
@@ -132,9 +135,9 @@ STDMETHODIMP CControl::get_CheckState(short *pVal)
 STDMETHODIMP CControl::put_CheckState(short newVal)
 {
        m_bChecked = newVal;
-       if(m_hWnd && newVal >= 0 && newVal <= 2){
+       if (m_hWnd && newVal >= 0 && newVal <= 2) {
                // 0:Unchecked 1:Checked 2:interminate
-               ::SendMessage(m_hWnd,BM_SETCHECK,newVal,0);
+               ::SendMessage(m_hWnd, BM_SETCHECK, newVal, 0);
        }
        return S_OK;
 }
@@ -142,7 +145,7 @@ 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 >>
-       if((m_nID == IDOK) && !lstrcmp(m_classname,"BUTTON")){
+       if ((m_nID == IDOK) && !lstrcmp(m_classname, _TEXT("BUTTON"))) {
                // IDOK\82È\82ç\95Ï\8dX\82·\82é
                m_style |=  BS_DEFPUSHBUTTON;
        }
@@ -157,8 +160,8 @@ BOOL CControl::Create(HWND hParent)
                ,NULL
                ,_Module.m_hInst
                ,NULL);
-       ::SetWindowLong(m_hWnd, GWL_ID, m_nID);
-       ::SetWindowLong(m_hWnd, GWL_USERDATA,(LPARAM)this);
+       ::SetWindowLongPtr(m_hWnd, GWLP_ID, m_nID);
+       ::SetWindowLongPtr(m_hWnd, GWLP_USERDATA, (LONG_PTR) this);
        ::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é
@@ -168,7 +171,7 @@ BOOL CControl::Create(HWND hParent)
 
        //////////////////////////
        // \8e\96\91O\8fó\91Ô\82Ì\90Ý\92è
-       if(!lstrcmp(m_classname,"BUTTON")){
+       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);
@@ -177,11 +180,11 @@ BOOL CControl::Create(HWND hParent)
        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];
-               LPCSTR p = m_caption;
+               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){
-                       LPCSTR d = p;
+                       LPCTSTR d = p;
                        while(*p && *p != ',' && *p != ':'){
                                p = CharNext(p);
                        }
@@ -414,67 +417,69 @@ STDMETHODIMP CControl::put_Exstyle(long newVal)
 
 STDMETHODIMP CControl::get_ClassName(BSTR *pVal)
 {
-       WCHAR wmes[MAX_PATH];
-       MultiByteToWideChar(GetACP(),0,m_classname,-1,wmes,MAX_PATH);
-       *pVal = SysAllocString(wmes);
+       CComBSTR tmp(m_classname);
+       *pVal = tmp.Detach();
        return S_OK;
 }
 
 STDMETHODIMP CControl::Refresh()
 {
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
-       }
-       ::SetWindowPos(m_hWnd,NULL,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_DRAWFRAME|SWP_FRAMECHANGED|SWP_NOCOPYBITS);
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
+       }
+       ::SetWindowPos(
+               m_hWnd,
+               NULL,
+               0, 0, 0, 0,
+               SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DRAWFRAME | SWP_FRAMECHANGED | SWP_NOCOPYBITS);
        return S_OK;
 }
 
 STDMETHODIMP CControl::get_HWND(long *pVal)
 {
-       *pVal = (long)m_hWnd;
+       *pVal = (long) m_hWnd;
        return S_OK;
 }
 
-LPSTR CControl::ConvertVariantToString(VARIANT text)
+HRESULT CControl::ConvertVariantToString(VARIANT text, ATL::CString &retval)
 {
        CComVariant varText;
-       if(varText.ChangeType(VT_BSTR,&text) != S_OK){
-               // \95\8e\9a\82É\95Ï\8a·\82Å\82«\82È\82¯\82ê\82Î\89½\82à\82µ\82È\82¢
-               return NULL;
-       }
-       int sz = WideCharToMultiByte(GetACP(),0,varText.bstrVal,-1,NULL,0,NULL,NULL);
-       LPSTR pBuf = new CHAR[sz+1];
-       WideCharToMultiByte(GetACP(),0,varText.bstrVal,-1,pBuf,sz,NULL,NULL);
-       pBuf[sz] = 0;
-       return pBuf;
+       HRESULT hr = varText.ChangeType(VT_BSTR, &text);
+       if (FAILED(hr)) {
+               return hr;
+       }
+
+       retval = varText.bstrVal;
+       return S_OK;
 }
 
 STDMETHODIMP CControl::AddString(VARIANT text,VARIANT* pRet)
 {
-       CComVariant ret;
        ::VariantInit(pRet);
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
-       LPSTR pBuf;
-       if(!(pBuf = ConvertVariantToString(text))){
-               return DISP_E_TYPEMISMATCH;
+
+       ATL::CString buf;
+       HRESULT hr = ConvertVariantToString(text, buf);
+       if (FAILED(hr)) {
+               return hr;
        }
 
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"COMBOBOX")){
+       CComVariant ret;
+       if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // \83R\83\93\83{\83{\83b\83N\83X\82É\95\8e\9a\97ñ\82ð\92Ç\89Á\82·\82é
-               ret = (short)SendMessage(m_hWnd,CB_ADDSTRING,0,(LPARAM)pBuf);
+               ret = (short)SendMessage(m_hWnd, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)buf);
        }
-       else if(!lstrcmp(m_classname,"LISTBOX")){
+       else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \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)pBuf);
+               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){
+               if (pMap->CreateInstance(&pMap) == S_OK) {
                        pMap->QueryInterface(IID_IUnknown,(void**)&pUnk);
                }
                ::SendMessage(m_hWnd,LB_SETITEMDATA,nIdx,(LPARAM)pUnk);
@@ -485,194 +490,185 @@ STDMETHODIMP CControl::AddString(VARIANT text,VARIANT* pRet)
                int cnt = ListView_GetItemCount(m_hWnd);
                LVITEM item = {0};
                item.mask    = LVIF_TEXT;
-               item.pszText = pBuf;
+               item.pszText = buf.GetBuffer();
                item.iItem   = cnt;
-               int nIdx = ListView_InsertItem(m_hWnd,&item);
+               int nIdx = ListView_InsertItem(m_hWnd, &item);
+
                // \83T\83u\83J\83\89\83\80\82Í\8bó\95\82ð\96\84\82ß\82é
-               int i;
-               for(i = 1 ; i<m_nColumnCount ; i++){
-                       ListView_SetItemText(m_hWnd,nIdx,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;
                IUnknown* pUnk = NULL;
-               if(pMap->CreateInstance(&pMap) == S_OK){
-                       pMap->QueryInterface(IID_IUnknown,(void**)&pUnk);
+               if (pMap->CreateInstance(&pMap) == S_OK) {
+                       pMap->QueryInterface(IID_IUnknown, (void**)&pUnk);
                }
                LVITEM itm = {0};
                itm.iItem  = nIdx;
                itm.mask   = LVIF_PARAM;
-               itm.lParam = (LPARAM)pUnk;
-               ListView_SetItem(m_hWnd,&itm);
+               itm.lParam = (LPARAM) pUnk;
+               ListView_SetItem(m_hWnd, &itm);
                ret = (short)nIdx;
        }
-       else if(!lstrcmp(m_classname,WC_TREEVIEW)){
+       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,pBuf,&pUnk);
+               CTreeItem::CreateTreeItem(m_hWnd,TVI_ROOT, buf, &pUnk);
                if(pUnk != NULL){
                        ret = (IUnknown*)pUnk;
                }
        }
        else{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
-       ret.Detach(pRet);
-       delete[]pBuf;
-       return retcode;
+       return ret.Detach(pRet);
 }
 
 STDMETHODIMP CControl::SetColumnText(VARIANT item, VARIANT col, VARIANT text)
 {
-       if(!m_hParent || !m_hWnd){
+       if (!m_hParent || !m_hWnd) {
                ErrorInfo(IDS_ERR_DESTROYED);
                return DISP_E_EXCEPTION;
        }
 
        int nIdx = -1;
        int nCol = -1;
-       CComVariant varIdx,varCol;
-       if(varIdx.ChangeType(VT_I2,&item) == S_OK){
+       CComVariant varIdx, varCol;
+       if (varIdx.ChangeType(VT_I2, &item) == S_OK) {
                nIdx = varIdx.iVal;
        }
-       if(varCol.ChangeType(VT_I2,&col) == S_OK){
+       if (varCol.ChangeType(VT_I2, &col) == S_OK) {
                nCol = varCol.iVal;
        }
-       if(nIdx < 0 || nCol < 0){
+       if (nIdx < 0 || nCol < 0) {
                // \8ds\81E\8c\85\82ª\8eæ\93¾\82Å\82«\82È\82©\82Á\82½\8fê\8d\87
                return DISP_E_TYPEMISMATCH;
        }
 
-       LPSTR pBuf;
-       if(!(pBuf = ConvertVariantToString(text))){
-               return DISP_E_TYPEMISMATCH;
+       ATL::CString buf;
+       HRESULT hr = ConvertVariantToString(text, buf);
+       if (FAILED(hr)) {
+               return hr;
        }
 
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                int mx = ListView_GetItemCount(m_hWnd);
-               if(nIdx >= mx || nCol >= m_nColumnCount){
+               if (nIdx >= mx || nCol >= m_nColumnCount) {
                        // \8ds\82Ü\82½\82Í\8c\85\82ª\83I\81[\83o\81[\82µ\82Ä\82¢\82é\8fê\8d\87
-                       ErrorInfo(IDS_ERR_RANDEOUT);
-                       retcode = DISP_E_EXCEPTION;
+                       return Error(IDS_ERR_RANDEOUT);
                }
-               else{
+               else {
                        // \83\8a\83X\83g\83r\83\85\81[\82É\95\8e\9a\97ñ\82ð\92Ç\89Á\82·\82é
-                       ListView_SetItemText(m_hWnd,nIdx,nCol,pBuf);
+                       ListView_SetItemText(m_hWnd, nIdx, nCol, buf.GetBuffer());
                }
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
-       delete[]pBuf;
-       return retcode;
+       return S_OK;
 }
 
 STDMETHODIMP CControl::GetColumnText(VARIANT idx, VARIANT col, VARIANT *pText)
 {
        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;
        int nCol = -1;
-       CComVariant varIdx,varCol;
-       if(varIdx.ChangeType(VT_I2,&idx) == S_OK){
+       CComVariant varIdx, varCol;
+       if (varIdx.ChangeType(VT_I2, &idx) == S_OK) {
                nIdx = varIdx.iVal;
        }
-       if(varCol.ChangeType(VT_I2,&col) == S_OK){
+       if (varCol.ChangeType(VT_I2, &col) == S_OK) {
                nCol = varCol.iVal;
        }
-       if(nIdx < 0 || nCol < 0){
-               return DISP_E_TYPEMISMATCH;
+
+       if (nIdx < 0 || nCol < 0) {
+               return DISP_E_BADINDEX;
        }
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,WC_LISTVIEW)){
+
+       if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83C\83\93\83f\83b\83N\83X\82ð\92²\8d¸
                int mx = ListView_GetItemCount(m_hWnd);
-               if(nIdx >= mx || nCol >= m_nColumnCount){
-                       ErrorInfo(IDS_ERR_RANDEOUT);
-                       return DISP_E_EXCEPTION;
+               if (nIdx >= mx || nCol >= m_nColumnCount) {
+                       return Error(IDS_ERR_RANDEOUT);
                }
+
                // \83\8a\83X\83g\83r\83\85\81[\82©\82ç\95\8e\9a\97ñ\82ð\8eæ\93¾\82·\82é
-               LPSTR pBuf = new CHAR[MAX_PATH+1];
-               ListView_GetItemText(m_hWnd,nIdx,nCol,pBuf,MAX_PATH);
+               ATL::CString buf;
+               LPTSTR pBuf = buf.GetBufferSetLength(MAX_PATH);
+               ListView_GetItemText(m_hWnd, nIdx, nCol, pBuf, MAX_PATH);
                ret = pBuf;
-               delete[]pBuf;
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
-       ret.Detach(pText);
-       return retcode;
+       return ret.Detach(pText);
 }
 
 STDMETHODIMP CControl::get_ItemObject(VARIANT idx, VARIANT *pVal)
 {
        ::VariantInit(pVal);
-       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 (varIdx.ChangeType(VT_I2,&idx) == S_OK) {
                nIdx = varIdx.iVal;
        }
-       if(nIdx < 0 ){
-               return DISP_E_TYPEMISMATCH;
+
+       if (nIdx < 0 ) {
+               return DISP_E_BADINDEX;
        }
 
        IUnknown* pUnk = NULL;
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"LISTBOX")){
+       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);
-               if(nIdx >= mx){
-                       ErrorInfo(IDS_ERR_RANDEOUT);
-                       return DISP_E_EXCEPTION;
+               if (nIdx >= mx) {
+                       return Error(IDS_ERR_RANDEOUT);
                }
-               DWORD data = ::SendMessage(m_hWnd,LB_GETITEMDATA ,nIdx,0);
-               if(data != LB_ERR && data){
-                       pUnk = (IUnknown*)data;
+               DWORD data = ::SendMessage(m_hWnd, LB_GETITEMDATA, nIdx, 0);
+               if (data != LB_ERR && data) {
+                       pUnk = (IUnknown*) data;
                }
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82©\82ç\98A\91z\94z\97ñ\83I\83u\83W\83F\83N\83g\82ð\8eæ\93¾\82·\82é
                int mx = ListView_GetItemCount(m_hWnd);
-               if(nIdx >= mx){
-                       ErrorInfo(IDS_ERR_RANDEOUT);
-                       return DISP_E_EXCEPTION;
+               if (nIdx >= mx) {
+                       return Error(IDS_ERR_RANDEOUT);
                }
+
                LVITEM itm = {0};
                itm.mask   = LVIF_PARAM;
                itm.iItem  = nIdx;
-               if(ListView_GetItem(m_hWnd,&itm)){
-                       if(itm.lParam){
-                               pUnk = (IUnknown*)itm.lParam;
+               if (ListView_GetItem(m_hWnd, &itm)) {
+                       if (itm.lParam) {
+                               pUnk = (IUnknown*) itm.lParam;
                        }
                }
        }
-       else{
+       else {
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
-       if(pUnk){
+
+       if (pUnk) {
                pUnk->AddRef();
                pVal->vt      = VT_UNKNOWN;
                pVal->punkVal = pUnk;
        }
-       return retcode;
+       return S_OK;
 }
 
 STDMETHODIMP CControl::DeleteAllItems()
@@ -682,51 +678,49 @@ STDMETHODIMP CControl::DeleteAllItems()
                return DISP_E_EXCEPTION;
        }
        // \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,"LISTBOX")){
+       if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\82Ì\89ð\95ú
-               int mx = ::SendMessage(m_hWnd,CB_GETCOUNT,0,0);
-               int i;
-               for(i=0;i<mx;i++){
-                       DWORD data = ::SendMessage(m_hWnd,LB_GETITEMDATA ,i ,0);
-                       if(data != LB_ERR && data){
-                               ((IUnknown*)data)->Release();
+               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);
+                       if (data != LB_ERR && data) {
+                               ((IUnknown*) data)->Release();
                        }
                }
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \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};
-               int i;
-               for(i=0;i<mx;i++){
+               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();
+                       if (ListView_GetItem(m_hWnd,&itm)) {
+                               if (itm.lParam) {
+                                       ((IUnknown*) itm.lParam)->Release();
                                }
                        }
                }
        }
-       else if(!lstrcmp(m_classname,WC_TREEVIEW)){
+       else if (!lstrcmp(m_classname, WC_TREEVIEW)) {
                // \83c\83\8a\81[\83r\83\85\81[\82Ì\98A\91z\94z\97ñ\82Ì\89ð\95ú
                HTREEITEM hItem = TreeView_GetRoot(m_hWnd);
-               while(hItem){
+               while (hItem) {
                        HTREEITEM hNextItem = TreeView_GetNextSibling(m_hWnd,hItem);
-                       CTreeItem::DeleteTreeItemWithData(m_hWnd,hItem);
+                       CTreeItem::DeleteTreeItemWithData(m_hWnd, hItem);
                        hItem = hNextItem;
                }
        }
        // \98A\91z\94z\97ñ\82ð\82à\82½\82È\82¢\83R\83\93\83g\83\8d\81[\83\8b\82Ì\8f\89\8aú\89»
-       else if(!lstrcmp(m_classname,"COMBOBOX")){
+       else if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // COMBOBOX
-               int cnt = ::SendMessage(m_hWnd,CB_GETCOUNT,0,0);
-               while(cnt > 0){
-                       ::SendMessage(m_hWnd,CB_DELETESTRING,0,0);
+               int cnt = ::SendMessage(m_hWnd, CB_GETCOUNT, 0, 0);
+               while (cnt > 0) {
+                       ::SendMessage(m_hWnd, CB_DELETESTRING, 0, 0);
                        cnt--;
                }
        }
-       else if(!lstrcmp(m_classname,"EDIT")){
+       else if (!lstrcmp(m_classname, _TEXT("EDIT"))) {
                // Edit\81B
                CComVariant dmy(L"");
                put_Text(dmy.bstrVal);
@@ -735,160 +729,159 @@ STDMETHODIMP CControl::DeleteAllItems()
 }
 STDMETHODIMP CControl::DeleteString(VARIANT idx, VARIANT *pRet)
 {
-       CComVariant ret;
        ::VariantInit(pRet);
-       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 (varIdx.ChangeType(VT_I2, &idx) == S_OK) {
                nIdx = varIdx.iVal;
        }
-       if(nIdx < 0 ){
-               return DISP_E_TYPEMISMATCH;
+       if (nIdx < 0 ) {
+               return DISP_E_BADINDEX;
        }
 
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"COMBOBOX")){
+       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);
-               if(nIdx >= mx){
-                       ErrorInfo(IDS_ERR_RANDEOUT);
-                       return DISP_E_EXCEPTION;
+               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,"LISTBOX")){
+       else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82©\82ç\95\8e\9a\97ñ\82ð\8dí\8f\9c\82·\82é
-               int mx = ::SendMessage(m_hWnd,LB_GETCOUNT,0,0);
-               if(nIdx >= mx){
-                       ErrorInfo(IDS_ERR_RANDEOUT);
-                       return DISP_E_EXCEPTION;
+               int mx = ::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0);
+               if (nIdx >= mx) {
+                       return Error(IDS_ERR_RANDEOUT);
                }
+
                // \98A\91z\94z\97ñ\83I\83u\83W\83F\83N\83g\82ð\94j\8aü\82·\82é
-               DWORD data = ::SendMessage(m_hWnd,LB_GETITEMDATA ,nIdx,0);
-               if(data != LB_ERR && data){
+               DWORD data = ::SendMessage(m_hWnd,LB_GETITEMDATA, nIdx, 0);
+               if (data != LB_ERR && data) {
                        ((IUnknown*)data)->Release();
                }
+
                // \8dí\8f\9c
-               int result = ::SendMessage(m_hWnd,LB_DELETESTRING,nIdx,0);
+               int result = ::SendMessage(m_hWnd, LB_DELETESTRING, nIdx, 0);
                ret = (bool)(result != LB_ERR);
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82©\82ç\95\8e\9a\97ñ\82ð\8dí\8f\9c\82·\82é
                int mx = ListView_GetItemCount(m_hWnd);
-               if(nIdx >= mx){
-                       ErrorInfo(IDS_ERR_RANDEOUT);
-                       return DISP_E_EXCEPTION;
+               if (nIdx >= mx) {
+                       return Error(IDS_ERR_RANDEOUT);
                }
+
                // \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)){
-                       if(itm.lParam){
-                               ((IUnknown*)itm.lParam)->Release();
+               if (ListView_GetItem(m_hWnd,&itm)) {
+                       if (itm.lParam) {
+                               ((IUnknown*) itm.lParam)->Release();
                        }
                }
+
                // \8dí\8f\9c
-               ret = (bool)(ListView_DeleteItem(m_hWnd,nIdx)?true:false);
+               ret = ListView_DeleteItem(m_hWnd, nIdx) ? true : false;
        }
        else{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
-       *pRet = ret;
-       return retcode;
+
+       return ret.Detach(pRet);
 }
 
 STDMETHODIMP CControl::GetCount(VARIANT *pRet)
 {
-       CComVariant ret;
        ::VariantInit(pRet);
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+
+       if (!m_hParent || !m_hWnd){
+               return Error(IDS_ERR_DESTROYED);
        }
 
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"COMBOBOX")){
+       CComVariant ret;
+       if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\83J\83E\83\93\83g
-               int mx = ::SendMessage(m_hWnd,CB_GETCOUNT,0,0);
-               if(mx == LB_ERR) mx = 0;
+               int mx = ::SendMessage(m_hWnd, CB_GETCOUNT, 0, 0);
+               if (mx == LB_ERR) {
+                       mx = 0;
+               }
                ret = (short)mx;
        }
-       else if(!lstrcmp(m_classname,"LISTBOX")){
+       else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\83J\83E\83\93\83g
-               int mx = ::SendMessage(m_hWnd,LB_GETCOUNT,0,0);
-               if(mx == LB_ERR) mx = 0;
+               int mx = ::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0);
+               if (mx == LB_ERR) {
+                       mx = 0;
+               }
                ret = (short)mx;
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\83J\83E\83\93\83g
                ret = (short)ListView_GetItemCount(m_hWnd);
        }
        else{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
-       ret.Detach(pRet);
-       return retcode;
+       return ret.Detach(pRet);
 }
 
 STDMETHODIMP CControl::get_CurrentSelectedItem(VARIANT *pVal)
 {
        ::VariantInit(pVal);
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
 
        CComVariant ret;
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"COMBOBOX")){
+       if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // \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);
+               ret = (long)::SendMessage(m_hWnd, CB_GETCURSEL, 0, 0);
        }
-       else if(!lstrcmp(m_classname,"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)){
+               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);
+                       ret = (long)::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0);
                }
                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);
-                       if(mx > 0){
-                               long* pBuf = new long[mx+1];
-                               int cnt = ::SendMessage(m_hWnd,LB_GETSELITEMS,mx,(LPARAM)pBuf);
-                               if(cnt != LB_ERR && cnt > 0){
-                                       ret = (long)pBuf[0];
+                       if (mx > 0) {
+                               std::vector<long> buf(mx + 1);
+                               long* pBuf = &buf[0];
+                               int cnt = ::SendMessage(m_hWnd, LB_GETSELITEMS, mx, (LPARAM)pBuf);
+                               if (cnt != LB_ERR && cnt > 0) {
+                                       ret = buf[0];
                                }
-                               delete[]pBuf;
                        }
                }
        }
-       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·
                ret = (long)ListView_GetNextItem(m_hWnd,-1,LVNI_SELECTED);
        }
-       else if(!lstrcmp(m_classname,WC_TREEVIEW)){
+       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){
+               if (hItem) {
                        CComObject<CTreeItem>* pItem = NULL;
-                       if(pItem->CreateInstance(&pItem) == S_OK){
+                       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){
+                               if (pItem->QueryInterface(IID_IUnknown, (void**)&pUnk) == S_OK) {
                                        ret = pUnk;
                                }
                        }
@@ -896,63 +889,56 @@ STDMETHODIMP CControl::get_CurrentSelectedItem(VARIANT *pVal)
        }
        else{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
-       ret.Detach(pVal);
-       return retcode;
+       return ret.Detach(pVal);
 }
 
 STDMETHODIMP CControl::put_CurrentSelectedItem(VARIANT newVal)
 {
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
 
-       HRESULT retcode = S_OK;
        long nIdx = -1;
        CComVariant varIdx;
        if(varIdx.ChangeType(VT_I4,&newVal) == S_OK){
                nIdx = varIdx.lVal;
        }
-       if(!lstrcmp(m_classname,"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);
+               ::SendMessage(m_hWnd, CB_SETCURSEL, nIdx, 0);
        }
-       else if(!lstrcmp(m_classname,"LISTBOX")){
+       else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\91I\91ð
-               if(!(m_style & LBS_MULTIPLESEL)){
+               if (!(m_style & LBS_MULTIPLESEL)) {
                        // \83V\83\93\83O\83\8b\83Z\83\8c\83N\83g\82Ì\8fê\8d\87
-                       ::SendMessage(m_hWnd,LB_SETCURSEL,nIdx,0);
+                       ::SendMessage(m_hWnd, LB_SETCURSEL, nIdx, 0);
                }
-               else{
+               else {
                        // \83}\83\8b\83`\83Z\83\8c\83N\83g\82Ì\8fê\8d\87
-                       int mx = ::SendMessage(m_hWnd,LB_GETCOUNT,0,0);
-                       int i;
-                       for(i=0;i<mx;i++){
-                               ::SendMessage(m_hWnd,LB_SETSEL,false,i);
+                       int mx = ::SendMessage(m_hWnd, LB_GETCOUNT, 0, 0);
+                       for(int i = 0; i < mx; i++) {
+                               ::SendMessage(m_hWnd, LB_SETSEL, FALSE, i);
                        }
-                       if(nIdx >= 0 && nIdx < mx){
-                               ::SendMessage(m_hWnd,LB_SETSEL,true,nIdx);
+                       if (nIdx >= 0 && nIdx < mx) {
+                               ::SendMessage(m_hWnd, LB_SETSEL, TRUE, nIdx);
                        }
                }
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\91I\91ð
                int mx = ListView_GetItemCount(m_hWnd);
-               int i;
-               for(i = 0 ; i<mx ; i++){
-                       ListView_SetItemState(m_hWnd,i,LVIS_SELECTED ,0);
-               }
-               if(nIdx >= 0 && nIdx < mx){
-                       ListView_SetItemState(m_hWnd,i,LVIS_SELECTED ,LVIS_SELECTED);
+               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
+               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{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
        return S_OK;
 }
@@ -960,81 +946,77 @@ STDMETHODIMP CControl::put_CurrentSelectedItem(VARIANT newVal)
 STDMETHODIMP CControl::get__NewEnum(IUnknown **pVal)
 {
        *pVal = NULL;
+
        if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+               return Error(IDS_ERR_DESTROYED);
        }
 
-       VARIANT* pvarArray = NULL;
+       std::vector<VARIANT> varArray;
        int mx = 0;
 
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"COMBOBOX")){
+       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);
                mx = 1;
-               pvarArray = new VARIANT[1];
-               ::VariantInit(&pvarArray[0]);
-               pvarArray[0].vt   = VT_I2;
-               pvarArray[0].iVal = nIdx;
+               varArray.resize(1);
+               ::VariantInit(&varArray[0]);
+               varArray[0].vt = VT_I2;
+               varArray[0].iVal = nIdx;
        }
-       else if(!lstrcmp(m_classname,"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)){
+               if (!(m_style & LBS_MULTIPLESEL)) {
                        // \83V\83\93\83O\83\8b\83Z\83\8c\83N\83g\82Ì\8fê\8d\87
-                       int nIdx = ::SendMessage(m_hWnd,LB_GETCURSEL,0,0);
+                       int nIdx = ::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0);
                        mx = 1;
-                       pvarArray = new VARIANT[1];
-                       ::VariantInit(&pvarArray[0]);
-                       pvarArray[0].vt   = VT_I2;
-                       pvarArray[0].iVal = nIdx;
+                       varArray.resize(1);
+                       ::VariantInit(&varArray[0]);
+                       varArray[0].vt = VT_I2;
+                       varArray[0].iVal = nIdx;
                }
                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);
-                       long* pBuf = new long[sz+1];
-                       mx = ::SendMessage(m_hWnd,LB_GETSELITEMS,sz,(LPARAM)pBuf);
-                       if(mx != LB_ERR){
+                       std::vector<long> buf(sz + 1);
+                       long* pBuf = &buf[0];
+                       mx = ::SendMessage(m_hWnd, LB_GETSELITEMS, sz, (LPARAM)pBuf);
+                       if (mx != LB_ERR) {
                                // \91I\91ð\82ª\95Ô\82³\82ê\82½\8fê\8d\87
-                               pvarArray = new VARIANT[mx+1];
-                               int i;
-                               for(i=0 ; i<mx ; i++){
-                                       ::VariantInit(&pvarArray[i]);
-                                       pvarArray[i].vt   = VT_I2;
-                                       pvarArray[i].iVal = (short)pBuf[i];
+                               varArray.resize(mx + 1);
+                               for (int i = 0; i < mx; i++) {
+                                       ::VariantInit(&varArray[i]);
+                                       varArray[i].vt = VT_I2;
+                                       varArray[i].iVal = (short)pBuf[i];
                                }
                        }
-                       delete[]pBuf;
                }
        }
        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);
-               pvarArray = new VARIANT[mx+1];
+               varArray.resize(mx + 1);
                int nIdx = -1;
                int i = 0;
-               while((nIdx = ListView_GetNextItem(m_hWnd,nIdx,LVNI_SELECTED)) != -1
-                        && i < mx){
-                       ::VariantInit(&pvarArray[i]);
-                       pvarArray[i].vt   = VT_I2;
-                       pvarArray[i].iVal = (short)nIdx;
+               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{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               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(pCol->CreateInstance(&pCol) == S_OK){
+       if (CComObject<CComEnumVARIANT>::CreateInstance(&pCol) == S_OK) {
                pCol->AddRef();
-               pCol->Init(&pvarArray[0],&pvarArray[mx],pCol,AtlFlagCopy);
+               pCol->Init(&varArray[0], &varArray[mx], pCol, AtlFlagCopy);
                *pVal = pCol;
        }
-       delete[]pvarArray;
        return S_OK;
 }
 
@@ -1055,90 +1037,86 @@ STDMETHODIMP CControl::get_ItemSelectState(VARIANT idx, VARIANT *pVal)
                nIdx = idx.iVal;
        }
 
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"COMBOBOX")){
+       if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // \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);
+               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);
        }
-       else if(!lstrcmp(m_classname,"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)){
+               if (!(m_style & LBS_MULTIPLESEL)) {
                        // \83V\83\93\83O\83\8b\83Z\83\8c\83N\83g\82Ì\8fê\8d\87
-                       int nSel = ::SendMessage(m_hWnd,LB_GETCURSEL,0,0);
+                       int nSel = ::SendMessage(m_hWnd, LB_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 = (nSel == nIdx);
                }
                else{
                        // \83}\83\8b\83`\83Z\83\8c\83N\83g\82Ì\8fê\8d\87
-                       ret = (bool)(::SendMessage(m_hWnd,LB_GETSEL,nIdx,0)>0?true:false);
+                       ret = ::SendMessage(m_hWnd, LB_GETSEL, nIdx, 0) > 0;
                }
        }
-       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){
-                       UINT state = ListView_GetItemState(m_hWnd,nIdx,LVNI_SELECTED);
-                       ret = (bool)((state & LVNI_SELECTED)?true:false);
+               if (nIdx >= 0 && nIdx < mx) {
+                       UINT state = ListView_GetItemState(m_hWnd, nIdx, LVNI_SELECTED);
+                       ret = (state & LVNI_SELECTED) != 0;
                }
        }
        else{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
        ret.Detach(pVal);
-       return retcode;
+       return S_OK;
 }
 
 STDMETHODIMP CControl::put_ItemSelectState(VARIANT idx, VARIANT newVal)
 {
-       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 (varIdx.ChangeType(VT_I2,&idx) == S_OK) {
                nIdx = idx.iVal;
        }
-       BOOL bSelected = false;
+
+       bool bSelected = false;
        CComVariant varSelected;
-       if(varSelected.ChangeType(VT_I2,&newVal) == S_OK){
-               bSelected = newVal.iVal;
+       if (varSelected.ChangeType(VT_I2,&newVal) == S_OK) {
+               bSelected = newVal.iVal != 0;
        }
 
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"COMBOBOX")){
+       if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // \83R\83\93\83{\83{\83b\83N\83X\82Ì\8c»\8dÝ\82Ì\91I\91ð\82ð\95Ï\8dX\82·\82é
-               ::SendMessage(m_hWnd,CB_SETCURSEL,bSelected?nIdx:-1,0);
+               ::SendMessage(m_hWnd, CB_SETCURSEL, bSelected ? nIdx : -1, 0);
        }
-       else if(!lstrcmp(m_classname,"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)){
+               if (!(m_style & LBS_MULTIPLESEL)) {
                        // \83V\83\93\83O\83\8b\83Z\83\8c\83N\83g\82Ì\8fê\8d\87
-                       ::SendMessage(m_hWnd,LB_SETCURSEL,bSelected?nIdx:-1,0);
+                       ::SendMessage(m_hWnd, LB_SETCURSEL, bSelected ? nIdx : -1, 0);
                }
-               else{
+               else {
                        // \83}\83\8b\83`\83Z\83\8c\83N\83g
-                       ::SendMessage(m_hWnd,LB_SETSEL,nIdx,bSelected);
+                       ::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);
+               if (nIdx >= 0 && nIdx < mx) {
+                       ListView_SetItemState(m_hWnd, nIdx, bSelected ? LVNI_SELECTED : 0, LVNI_SELECTED);
                }
        }
        else{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
-       return retcode;
+       return S_OK;
 }
 
 STDMETHODIMP CControl::get_SelectedCount(short *pVal)
@@ -1149,33 +1127,31 @@ STDMETHODIMP CControl::get_SelectedCount(short *pVal)
                return DISP_E_EXCEPTION;
        }
 
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"COMBOBOX")){
+       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);
        }
-       else if(!lstrcmp(m_classname,"LISTBOX")){
+       else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\83{\83b\83N\83X\82Ì\83J\83E\83\93\83g
-               if(!(m_style & LBS_MULTIPLESEL)){
-                       int nIdx = ::SendMessage(m_hWnd,LB_GETCURSEL,0,0);
-                       *pVal = (short)(nIdx>=0?1:0);
+               if (!(m_style & LBS_MULTIPLESEL)) {
+                       int nIdx = ::SendMessage(m_hWnd, LB_GETCURSEL, 0, 0);
+                       *pVal = (short)(nIdx >= 0 ? 1 : 0);
                }
                else{
                        // \83}\83\8b\83`\83Z\83\8c\83N\83g
-                       *pVal = (short)::SendMessage(m_hWnd,LB_GETSELCOUNT,0,0);
+                       *pVal = (short)::SendMessage(m_hWnd, LB_GETSELCOUNT, 0, 0);
                }
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\82Ì\83J\83E\83\93\83g
                *pVal = (short)ListView_GetSelectedCount(m_hWnd);
        }
        else{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
-       return retcode;
+       return S_OK;
 }
 
 STDMETHODIMP CControl::get_TreeRoot(VARIANT *pVal)
@@ -1203,57 +1179,60 @@ STDMETHODIMP CControl::get_TreeRoot(VARIANT *pVal)
 
 void CControl::ListSort(int column)
 {
-       if(!m_hParent || !m_hWnd){
+       if (!m_hParent || !m_hWnd) {
                return;
        }
+
        // \82¨\82È\82\83J\83\89\83\80\82ð\83\\81[\83g\82µ\82½\8fê\8d\87\82Í\8bt\8f\87\82Æ\82·\82é
-       if(m_dLastSortColumn == column){
+       if (m_dLastSortColumn == column) {
                m_bSortReverse = !m_bSortReverse;
        }
-       else{
+       else {
                m_bSortReverse = false;
        }
+
        m_dLastSortColumn = column;
        m_typCompare = VT_EMPTY;
        // \83\\81[\83g\82ð\8cÄ\82Ñ\8fo\82·
-       ListView_SortItems(m_hWnd,CompareFunc,(LPARAM)this);
+       ListView_SortItems(m_hWnd, CompareFunc, (LPARAM)this);
 }
 
 int CControl::CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
 {
-       if(!lParam1 || !lParam2){
+       if (!lParam1 || !lParam2) {
                // \83C\83\8c\83M\83\85\83\89\81[\81B\83f\81[\83^\81[\82ª\82È\82¢\82Ì\82Å\94ä\8ar\95s\89Â\94\
                return 0;
        }
+
        CControl* me = (CControl*)lParamSort;
 
        IObjectMap* pMap1 = (IObjectMap*)lParam1;
        IObjectMap* pMap2 = (IObjectMap*)lParam2;
 
-       CHAR mes[16];
-       wsprintf(mes,"SORT%d",me->m_dLastSortColumn);
+       TCHAR mes[16];
+       wsprintf(mes, _TEXT("SORT%d"), me->m_dLastSortColumn);
        CComVariant key(mes);
 
        CComVariant val1,val2;
-       if(!me->m_bSortReverse){
-               pMap1->get_Value(key,&val1);
-               pMap2->get_Value(key,&val2);
+       if (!me->m_bSortReverse) {
+               pMap1->get_Value(key, &val1);
+               pMap2->get_Value(key, &val2);
        }
        else{
-               pMap1->get_Value(key,&val2);
-               pMap2->get_Value(key,&val1);
+               pMap1->get_Value(key, &val2);
+               pMap2->get_Value(key, &val1);
        }
 
-       if(me->m_typCompare == VT_EMPTY){
+       if (me->m_typCompare == VT_EMPTY) {
                // \82Ü\82¾\94ä\8ar\82ð\8aJ\8en\82µ\82Ä\82¢\82È\82¢\82È\82ç\94ä\8ar\83^\83C\83v\82ð\8c\88\92è\82·\82é
                me->m_typCompare = val1.vt;
-               if(val1.vt != val2.vt){
+               if (val1.vt != val2.vt) {
                        me->m_typCompare = VT_BSTR;
                }
        }
 
        int ret = 0;
-       switch(me->m_typCompare)
+       switch (me->m_typCompare)
        {
        case VT_UI1:
                {
@@ -1294,7 +1273,7 @@ int CControl::CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
                {
                        val1.ChangeType(VT_CY);
                        val2.ChangeType(VT_CY);
-                       ret = (int)(val1.cyVal.int64 - val2.cyVal.int64); //UNDONE: \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
+                       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:
@@ -1320,13 +1299,14 @@ int CControl::CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
 
 void CControl::OnRClick()
 {
-       if(!m_hParent || !m_hWnd){
+       if (!m_hParent || !m_hWnd) {
                return;
        }
-       if(!lstrcmp(m_classname,WC_TREEVIEW)){
+
+       if (!lstrcmp(m_classname, WC_TREEVIEW)) {
                // \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){
+               if (hItem) {
                        TreeView_SelectItem(m_hWnd,hItem);
                }
        }
@@ -1335,167 +1315,166 @@ void CControl::OnRClick()
 
 STDMETHODIMP CControl::get_ItemCheckState(VARIANT idx, BOOL *pVal)
 {
-       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,WC_LISTVIEW)){
+
+       if (lstrcmp(m_classname, WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               return DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
+
        CComVariant varIdx;
-       if(varIdx.ChangeType(VT_I2,&idx) != S_OK){
-               return DISP_E_TYPEMISMATCH;
+       HRESULT hr = varIdx.ChangeType(VT_I2, &idx);
+       if (FAILED(hr)) {
+               return hr;
        }
+
        *pVal = VB_FALSE;
-       if(m_afterstyle & LVS_EX_CHECKBOXES){
-               *pVal = ListView_GetCheckState(m_hWnd,varIdx.iVal)?VB_TRUE:VB_FALSE;
+       if (m_afterstyle & LVS_EX_CHECKBOXES) {
+               *pVal = ListView_GetCheckState(m_hWnd, varIdx.iVal) ? VB_TRUE : VB_FALSE;
        }
        return S_OK;
 }
 
 STDMETHODIMP CControl::put_ItemCheckState(VARIANT idx, BOOL newVal)
 {
-       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,WC_LISTVIEW)){
+
+       if (lstrcmp(m_classname,WC_LISTVIEW)) {
                // \83\8a\83X\83g\83r\83\85\81[\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               return DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
+
        CComVariant varIdx;
-       if(varIdx.ChangeType(VT_I2,&idx) != S_OK){
-               return DISP_E_TYPEMISMATCH;
+       HRESULT hr = varIdx.ChangeType(VT_I2, &idx);
+       if (FAILED(hr)) {
+               return hr;
        }
-       if(m_afterstyle & LVS_EX_CHECKBOXES){
-               ListView_SetCheckState(m_hWnd,varIdx.iVal,newVal);
+
+       if (m_afterstyle & LVS_EX_CHECKBOXES) {
+               ListView_SetCheckState(m_hWnd, varIdx.iVal, newVal);
        }
        return S_OK;
 }
 
 STDMETHODIMP CControl::DeleteSelectedItem()
 {
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"LISTBOX")){
+
+       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){
+               CComVariant varRet, dmy;
+               while (get_CurrentSelectedItem(&varRet) == S_OK && varRet.vt != VT_EMPTY) {
                        varRet.ChangeType(VT_I4);
-                       if(varRet.lVal < 0){
+                       if (varRet.lVal < 0) {
                                break;
                        }
-                       DeleteString(varRet,&dmy);
+                       DeleteString(varRet, &dmy);
                }
        }
        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){
-                       CComVariant varIdx((long)nIdx),dmy;
-                       DeleteString(varIdx,&dmy);
+               while ((nIdx = ListView_GetNextItem(m_hWnd, nIdx, LVNI_SELECTED)) != -1) {
+                       CComVariant varIdx((long)nIdx), dmy;
+                       DeleteString(varIdx, &dmy);
                        nIdx = -1;
                }
        }
        else{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
        return S_OK;
 }
 
 STDMETHODIMP CControl::get_ItemText(VARIANT idx, BSTR *pVal)
 {
-       _bstr_t tmp;
        if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+               return Error(IDS_ERR_DESTROYED);
        }
+
        int nIdx = -1;
        CComVariant varIdx;
-       if(varIdx.ChangeType(VT_I2,&idx) == S_OK){
+       if (varIdx.ChangeType(VT_I2,&idx) == S_OK) {
                nIdx = varIdx.iVal;
        }
+
        if(nIdx < 0){
                return DISP_E_TYPEMISMATCH;
        }
 
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,"COMBOBOX")){
+       CComBSTR ret;
+       if (!lstrcmp(m_classname, _TEXT("COMBOBOX"))) {
                // \83R\83\93\83z\83{\83b\83N\83X\82©\82ç\95\8e\9a\97ñ\82ð\8eæ\93¾\82·\82é
-               int siz = ::SendMessage(m_hWnd,CB_GETLBTEXTLEN,nIdx,0);
-               if(siz > 0){
-                       LPTSTR p = new CHAR[siz+1];
-                       if(::SendMessage(m_hWnd,CB_GETLBTEXT,nIdx,(LPARAM)p) > 0){
-                               tmp = (LPCSTR)p;
+               int siz = ::SendMessage(m_hWnd, CB_GETLBTEXTLEN, nIdx, 0);
+               if (siz > 0) {
+                       ATL::CString tmp;
+                       LPTSTR p = tmp.GetBufferSetLength(siz + 1);
+                       if (::SendMessage(m_hWnd, CB_GETLBTEXT, nIdx, (LPARAM)p) > 0) {
+                               ret = p;
                        }
-                       delete[]p;
                }
        }
-       else if(!lstrcmp(m_classname,"LISTBOX")){
+       else if (!lstrcmp(m_classname, _TEXT("LISTBOX"))) {
                // \83\8a\83X\83g\82©\82ç\95\8e\9a\97ñ\82ð\8eæ\93¾\82·\82é
-               int siz = ::SendMessage(m_hWnd,LB_GETTEXTLEN,nIdx,0);
-               if(siz > 0){
-                       LPTSTR p = new CHAR[siz+1];
-                       if(::SendMessage(m_hWnd,LB_GETTEXT,nIdx,(LPARAM)p) > 0){
-                               tmp = (LPCSTR)p;
+               int siz = ::SendMessage(m_hWnd, LB_GETTEXTLEN, nIdx, 0);
+               if (siz > 0) {
+                       ATL::CString tmp;
+                       LPTSTR p = tmp.GetBufferSetLength(siz + 1);
+                       if (::SendMessage(m_hWnd, LB_GETTEXT, nIdx, (LPARAM)p) > 0) {
+                               ret = p;
                        }
-                       delete[]p;
                }
        }
-       else if(!lstrcmp(m_classname,WC_LISTVIEW)){
-               CComVariant arg,ret;
+       else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
+               CComVariant arg, text;
                arg = (long)0;
-               if((retcode = GetColumnText(idx,arg,&ret)) == S_OK){
-                       if(ret.ChangeType(VT_BSTR) == S_OK){
-                               tmp = ret.bstrVal;
+               HRESULT hr;
+               if (SUCCEEDED(GetColumnText(idx, arg, &text))) {
+                       if (SUCCEEDED(text.ChangeType(VT_BSTR))) {
+                               ret = text.bstrVal;
                        }
                }
        }
        else{
                // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return Error(IDS_ERR_NOTSUPPORTCONTROL);
        }
-       *pVal = tmp.copy();
-       return retcode;
+       *pVal = ret.Detach();
+       return S_OK;
 }
 
 STDMETHODIMP CControl::put_ItemText(VARIANT idx, BSTR newVal)
 {
-       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 (varIdx.ChangeType(VT_I2, &idx) == S_OK) {
                nIdx = varIdx.iVal;
        }
-       if(nIdx < 0){
-               return DISP_E_TYPEMISMATCH;
+
+       if (nIdx < 0) {
+               return DISP_E_BADINDEX;
        }
 
-       HRESULT retcode = S_OK;
-       if(!lstrcmp(m_classname,WC_LISTVIEW)){
-               CComVariant arg,text;
+       if (!lstrcmp(m_classname, WC_LISTVIEW)) {
+               CComVariant arg, text;
                arg = (long)0;
                text = (BSTR)newVal;
-               retcode = SetColumnText(idx,arg,text);
-       }
-       else{
-               // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
-               ErrorInfo(IDS_ERR_NOTSUPPORTCONTROL);
-               retcode = DISP_E_EXCEPTION;
+               return SetColumnText(idx, arg, text);
        }
-       return retcode;
+
+       // \82»\82ê\88È\8aO\82Í\83T\83|\81[\83g\8aO
+       return Error(IDS_ERR_NOTSUPPORTCONTROL);
 }
 
 STDMETHODIMP CControl::SetClassEvent(BSTR name,VARIANT* pvarUnk)
@@ -1513,27 +1492,28 @@ void CControl::GetClassEvent(BSTR *pEventName)
 STDMETHODIMP CControl::CreateChild(VARIANT text, VARIANT varItem, VARIANT* pvarUnk)
 {
        ::VariantInit(pvarUnk);
-       if(!m_hParent || !m_hWnd){
-               ErrorInfo(IDS_ERR_DESTROYED);
-               return DISP_E_EXCEPTION;
+       if (!m_hParent || !m_hWnd) {
+               return Error(IDS_ERR_DESTROYED);
        }
+
        // \83A\83C\83e\83\80\82Ì\8c\9f\8fØ
        CComVariant tmp;
-       if(tmp.ChangeType(VT_UNKNOWN,&varItem) == S_OK){
+       if (tmp.ChangeType(VT_UNKNOWN, &varItem) == S_OK) {
                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){
+               if (pItem->Create(text,&pUnk) == S_OK) {
                        pvarUnk->vt      = VT_UNKNOWN;
                        pvarUnk->punkVal = pUnk;
                }
                pItem->Release();
        }
        else{
-               tmp.ChangeType(VT_VARIANT,&varItem);
-               if(tmp.vt == VT_ERROR || tmp.vt == VT_NULL || tmp.vt == VT_EMPTY){
+               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);
                }
index 487a2bc..f23c635 100644 (file)
--- a/Control.h
+++ b/Control.h
@@ -10,7 +10,7 @@
 // CControl
 class ATL_NO_VTABLE CControl : 
        public CComObjectRootEx<CComSingleThreadModel>,
-//     public CComCoClass<CControl, &CLSID_Control>,
+       public CComCoClass<CControl, &CLSID_Control>,
        public ISupportErrorInfo,
        public IConnectionPointContainerImpl<CControl>,
        public IDispatchImpl<IControl, &IID_IControl, &LIBID_SERAPHYSCRIPTTOOLSLib>
@@ -34,32 +34,36 @@ public:
                m_nColumnCount = 0;
                m_dLastSortColumn = -1; //\8dÅ\8cã\82É\83\\81[\83g\82µ\82½\83J\83\89\83\80
        }
-       void SetParam(DWORD afterstyle,DWORD exstyle,LPCSTR classname,LPCSTR caption,DWORD style,int x,int y,int w,int h,int nID)
+
+       void SetParam(DWORD afterstyle, DWORD exstyle, LPCTSTR classname, LPCTSTR caption, DWORD style, int x, int y, int w, int h, int nID)
        {
-               CHAR tmp[64];
-               wsprintf(tmp,"OnCommand%d",nID);
+               TCHAR tmp[64];
+               wsprintf(tmp, _T("OnCommand%d"), nID);
                m_x = x;
                m_y = y;
                m_h = h;
                m_w = w;
-               m_exstyle   = exstyle;
-               m_style     = style;
-               lstrcpy(m_classname,classname);
-               lstrcpy(m_caption,caption);
-               m_nID       = nID;
+               m_exstyle = exstyle;
+               m_style   = style;
+               lstrcpy(m_classname, classname);
+               lstrcpy(m_caption, caption);
+               m_nID  = nID;
                m_bstrClassEvent = tmp;
                m_hWnd = NULL;
                m_hParent = NULL;
                m_afterstyle = afterstyle;
        }
+
        HWND GetHWnd()
        {
                return m_hWnd;
        }
+
        void Redraw()
        {
-               RedrawWindow(m_hWnd,NULL,NULL,RDW_ERASE|RDW_FRAME|RDW_INTERNALPAINT|RDW_INVALIDATE);
+               RedrawWindow(m_hWnd, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INTERNALPAINT | RDW_INVALIDATE);
        }
+
        void SetFont(HFONT hFont)
        {
                if(m_hWnd){
@@ -183,7 +187,7 @@ protected:
        VARTYPE m_typCompare;
        int m_dLastSortColumn;
        int m_nColumnCount;
-       LPSTR ConvertVariantToString(VARIANT text);
+       HRESULT ConvertVariantToString(VARIANT text, ATL::CString &retval);
 };
 
 #endif //__CONTROL_H_
index 7fb3f55..83762e3 100644 (file)
--- a/Draw.cpp
+++ b/Draw.cpp
@@ -64,7 +64,7 @@ STDMETHODIMP CCanvas::get_Layer(VARIANT varLay, VARIANT *pVal)
 // \88ó\8dü\83\81\83\\83b\83h\81E\83v\83\8d\83p\83e\83B
 STDMETHODIMP CCanvas::PrintAs(VARIANT print,VARIANT* pRet)
 {
-       CComVariant varRet,varPrint;
+       CComVariant varRet, varPrint;
        PRINTDLG pdlg = {0};
        pdlg.lStructSize = sizeof(PRINTDLG);
        pdlg.hwndOwner = m_hParent;
@@ -77,11 +77,11 @@ STDMETHODIMP CCanvas::PrintAs(VARIANT print,VARIANT* pRet)
                                delete m_pPrinterDeviceMode;
                        }
                        DEVMODE *pDevMode = (DEVMODE*)GlobalLock(pdlg.hDevMode);
-                       m_pPrinterDeviceMode = (DEVMODE*)new BYTE[siz+1];
-                       CopyMemory(m_pPrinterDeviceMode,pDevMode,siz);
+                       m_pPrinterDeviceMode = (DEVMODE*) new BYTE[siz + 1];
+                       CopyMemory(m_pPrinterDeviceMode, pDevMode, siz);
                        // \83v\83\8a\83\93\83^\96¼\82ð\95Û\91
-                       lstrcpy(m_szPrinterName,(LPCSTR)pDevMode->dmDeviceName);
-                       varRet = (LPCSTR)(pDevMode->dmDeviceName);
+                       StringCbCopy(m_szPrinterName, MAX_PATH, (LPCTSTR) pDevMode->dmDeviceName);
+                       varRet = pDevMode->dmDeviceName;
                        GlobalUnlock(pdlg.hDevMode);
                        GlobalFree(pdlg.hDevMode);
                }
@@ -131,7 +131,7 @@ BOOL CCanvas::PrintCore(CDC dc)
        // \83v\83\8a\83\93\83^\82Ì\83I\81[\83v\83\93
        DOCINFO dinfo = {0};
        dinfo.cbSize = sizeof(DOCINFO);
-       dinfo.lpszDocName = "SeraphyScriptTools";
+       dinfo.lpszDocName = _TEXT("SeraphyScriptTools");
        int nJob = StartDoc(dc.m_hDC,&dinfo);
        StartPage(dc.m_hDC);
        // \88ó\8dü\94Í\88Í\82Ì\90Ý\92è
@@ -159,35 +159,41 @@ BOOL CCanvas::PrintCore(CDC dc)
 
 STDMETHODIMP CCanvas::GetPrinterDefault(VARIANT name)
 {
-       TCHAR szPrinterName[MAX_PATH];
-       DWORD namesz = MAX_PATH;
        CComVariant varName;
-       if(varName.ChangeType(VT_BSTR,&name) == S_OK){
-               WideCharToMultiByte(GetACP(),0,varName.bstrVal,-1,szPrinterName,MAX_PATH,NULL,NULL);
+       ATL::CString szPrinterName(_TEXT(""));
+       if (varName.ChangeType(VT_BSTR,&name) == S_OK) {
+               szPrinterName = varName.bstrVal;
        }
-       else if(!GetDefaultPrinter(szPrinterName,&namesz)){
-               // \8aù\92è\82Ì\83v\83\8a\83\93\83^\82ª\8c©\82Â\82©\82ç\82È\82©\82Á\82½\8fê\8d\87
-               ErrorInfo(IDS_ERR_NODEFPRINTER);
-               return DISP_E_EXCEPTION;
+       else {
+               DWORD namesz = MAX_PATH;
+               LPTSTR pName = szPrinterName.GetBufferSetLength(namesz);
+               if (!GetDefaultPrinter(pName, &namesz)){
+                       // \8aù\92è\82Ì\83v\83\8a\83\93\83^\82ª\8c©\82Â\82©\82ç\82È\82©\82Á\82½\8fê\8d\87
+                       return Error(IDS_ERR_NODEFPRINTER);
+               }
+               szPrinterName.ReleaseBuffer();
        }
+
        HANDLE hp;
-       if(OpenPrinter(szPrinterName,&hp,NULL)){
-               if(m_pPrinterDeviceMode){
+       if (OpenPrinter(szPrinterName.GetBuffer(), &hp, NULL)) {
+               if (m_pPrinterDeviceMode) {
                        // \8aù\91\82Ì\83o\83b\83t\83A\82ð\83N\83\8a\83A
                        delete m_pPrinterDeviceMode;
                }
+
                // \95K\97v\82È\83p\83\89\83\81\81[\83^\81[\82Ì\95Û\8e\9d
-               DWORD sz = (DWORD)DocumentProperties(m_hParent,hp,szPrinterName,NULL,NULL,0);
+               DWORD sz = (DWORD)DocumentProperties(m_hParent, hp, szPrinterName.GetBuffer(), NULL, NULL, 0);
                m_pPrinterDeviceMode = (DEVMODE*)new BYTE[sz+1];
-               DocumentProperties(m_hParent,hp,szPrinterName,m_pPrinterDeviceMode,NULL,DM_OUT_BUFFER);
+
+               DocumentProperties(m_hParent, hp, szPrinterName.GetBuffer(), m_pPrinterDeviceMode, NULL, DM_OUT_BUFFER);
                ClosePrinter(hp);
+
                // \83v\83\8a\83\93\83^\96¼\82Ì\95Û\91
-               lstrcpy(m_szPrinterName,szPrinterName);
+               lstrcpy(m_szPrinterName, szPrinterName);
        }
        else{
                // \83v\83\8a\83\93\83^\8fî\95ñ\82Ì\8eæ\93¾\82É\8e¸\94s\82µ\82½\8fê\8d\87
-               ErrorInfo(IDS_ERR_PRINTERSETTING);
-               return DISP_E_EXCEPTION;
+               return Error(IDS_ERR_PRINTERSETTING);
        }
        return S_OK;
 }
index 132e99f..9367b40 100644 (file)
--- a/Form.cpp
+++ b/Form.cpp
@@ -65,25 +65,39 @@ STDMETHODIMP CForm::get_Control(VARIANT varNum, VARIANT *pVal)
 
 STDMETHODIMP CForm::SetControlFont(VARIANT fontname, VARIANT fontsize)
 {
-       CComVariant varName,varSize;
-       TCHAR szFontName[MAX_PATH] = {0};
-       if(varName.ChangeType(VT_BSTR,&fontname) == S_OK){
-               WideCharToMultiByte(GetACP(),0,varName.bstrVal,-1,szFontName,MAX_PATH,NULL,NULL);
+       CComVariant varName;
+       ATL::CString szFontName;
+       if (varName.ChangeType(VT_BSTR,&fontname) == S_OK) {
+               szFontName = varName.bstrVal;
        }
+
+       CComVariant varSize;
        int siz = 20;
-       if(varSize.ChangeType(VT_I2,&fontsize) == S_OK){
+       if (varSize.ChangeType(VT_I2, &fontsize) == S_OK) {
                siz = varSize.iVal;
        }
+
        // \8am\95Û\8dÏ\82Ý\83t\83H\83\93\83g\82ð\89ð\95ú\82·\82é
-       if(m_hControlFont){
+       if (m_hControlFont) {
                DeleteObject(m_hControlFont);
        }
+
        // \90V\82µ\82¢\83t\83H\83\93\83g\82ð\8dì\90¬\82·\82é
-       m_hControlFont = CreateFont(siz,0,0,0,0,false,false,false,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_DONTCARE,szFontName);
+       m_hControlFont = CreateFont(
+               siz,
+               0, 0, 0, 0, false, false, false,
+               SHIFTJIS_CHARSET,
+               OUT_DEFAULT_PRECIS,
+               CLIP_DEFAULT_PRECIS,
+               DEFAULT_QUALITY,
+               FF_DONTCARE,
+               szFontName);
+
        m_nControlFontSize = siz;
+
        // \8c»\8dÝ\82Ì\83R\83\93\83g\83\8d\81[\83\8b\82·\82×\82Ä\82É\93K\97p\82·\82é(\90\90¬\82³\82ê\82Ä\82¢\82ê\82Î)
        list<CComObject<CControl>*>::iterator p = m_lstControl.begin();
-       while(p != m_lstControl.end()){
+       while (p != m_lstControl.end()) {
                (*p)->SetFont(m_hControlFont);
                p++;
        }
@@ -93,49 +107,49 @@ STDMETHODIMP CForm::SetControlFont(VARIANT fontname, VARIANT fontsize)
 STDMETHODIMP CForm::Label(VARIANT text, VARIANT width, VARIANT *pvarUnk)
 {
        CComVariant dmy;
-       CreateControlCore(text,width,dmy,pvarUnk,0,SS_NOTIFY,0,"STATIC");
+       CreateControlCore(text,width,dmy,pvarUnk,0,SS_NOTIFY,0, _TEXT("STATIC"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::Button(VARIANT text, VARIANT width, VARIANT *pvarUnk)
 {
        CComVariant dmy;
-       CreateControlCore(text,width,dmy,pvarUnk,0,WS_TABSTOP|BS_PUSHBUTTON,0,"BUTTON");
+       CreateControlCore(text,width,dmy,pvarUnk,0,WS_TABSTOP|BS_PUSHBUTTON,0, _TEXT("BUTTON"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::CheckBox(VARIANT text, VARIANT width, VARIANT *pvarUnk)
 {
        CComVariant dmy;
-       CreateControlCore(text,width,dmy,pvarUnk,0,WS_TABSTOP|BS_AUTOCHECKBOX,0,"BUTTON");
+       CreateControlCore(text,width,dmy,pvarUnk,0,WS_TABSTOP|BS_AUTOCHECKBOX,0, _TEXT("BUTTON"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::RadioButton(VARIANT text, VARIANT width, VARIANT *pvarUnk)
 {
        CComVariant dmy;
-       CreateControlCore(text,width,dmy,pvarUnk,0,BS_AUTORADIOBUTTON|(m_bControlNextIsGroupHead?WS_TABSTOP:0),0,"BUTTON");
+       CreateControlCore(text,width,dmy,pvarUnk,0,BS_AUTORADIOBUTTON|(m_bControlNextIsGroupHead?WS_TABSTOP:0),0, _TEXT("BUTTON"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::CheckBox3state(VARIANT text, VARIANT width, VARIANT *pvarUnk)
 {
        CComVariant dmy;
-       CreateControlCore(text,width,dmy,pvarUnk,0,WS_TABSTOP|BS_AUTO3STATE,0,"BUTTON");
+       CreateControlCore(text,width,dmy,pvarUnk,0,WS_TABSTOP|BS_AUTO3STATE,0, _TEXT("BUTTON"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::PushCheckButton(VARIANT text, VARIANT width, VARIANT *pvarUnk)
 {
        CComVariant dmy;
-       CreateControlCore(text,width,dmy,pvarUnk,0,WS_TABSTOP|BS_AUTOCHECKBOX|BS_PUSHLIKE,0,"BUTTON");
+       CreateControlCore(text,width,dmy,pvarUnk,0,WS_TABSTOP|BS_AUTOCHECKBOX|BS_PUSHLIKE,0, _TEXT("BUTTON"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::PushRadioButton(VARIANT text, VARIANT width, VARIANT *pvarUnk)
 {
        CComVariant dmy;
-       CreateControlCore(text,width,dmy,pvarUnk,0,BS_AUTORADIOBUTTON|BS_PUSHLIKE|(m_bControlNextIsGroupHead?WS_TABSTOP:0),0,"BUTTON");
+       CreateControlCore(text,width,dmy,pvarUnk,0,BS_AUTORADIOBUTTON|BS_PUSHLIKE|(m_bControlNextIsGroupHead?WS_TABSTOP:0),0, _TEXT("BUTTON"));
        return S_OK;
 }
 
@@ -150,7 +164,7 @@ STDMETHODIMP CForm::ReadonlyEdit(VARIANT text, VARIANT width, VARIANT height, VA
                // \92P\88ê\8ds
                style |= ES_AUTOHSCROLL;
        }
-       CreateControlCore(text,width,height,punkVal,m_bControlUseStaticEdge?WS_EX_STATICEDGE:WS_EX_CLIENTEDGE,style,0,"EDIT");
+       CreateControlCore(text,width,height,punkVal,m_bControlUseStaticEdge?WS_EX_STATICEDGE:WS_EX_CLIENTEDGE,style,0, _TEXT("EDIT"));
        return S_OK;
 }
 
@@ -165,41 +179,41 @@ STDMETHODIMP CForm::Edit(VARIANT text, VARIANT width, VARIANT height, VARIANT *p
                // \92P\88ê\8ds
                style |= ES_AUTOHSCROLL;
        }
-       CreateControlCore(text,width,height,pvarUnk,WS_EX_CLIENTEDGE,style,0,"EDIT");
+       CreateControlCore(text,width,height,pvarUnk,WS_EX_CLIENTEDGE,style,0, _TEXT("EDIT"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::PasswordEdit(VARIANT text, VARIANT width, VARIANT *pvarUnk)
 {
        CComVariant dmy;
-       CreateControlCore(text,width,dmy,pvarUnk,WS_EX_CLIENTEDGE,WS_TABSTOP|ES_PASSWORD,0,"EDIT");
+       CreateControlCore(text,width,dmy,pvarUnk,WS_EX_CLIENTEDGE,WS_TABSTOP|ES_PASSWORD,0, _TEXT("EDIT"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::ListBox(VARIANT width, VARIANT height,VARIANT* pvarUnk)
 {
        CComVariant text;
-       CreateControlCore(text,width,height,pvarUnk,WS_EX_CLIENTEDGE,WS_TABSTOP|LBS_NOTIFY|LBS_USETABSTOPS|LBS_NOINTEGRALHEIGHT|LBS_DISABLENOSCROLL,0,"LISTBOX");
+       CreateControlCore(text,width,height,pvarUnk,WS_EX_CLIENTEDGE,WS_TABSTOP|LBS_NOTIFY|LBS_USETABSTOPS|LBS_NOINTEGRALHEIGHT|LBS_DISABLENOSCROLL,0, _TEXT("LISTBOX"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::MultiListBox(VARIANT width, VARIANT height, VARIANT *pvarUnk)
 {
        CComVariant text;
-       CreateControlCore(text,width,height,pvarUnk,WS_EX_CLIENTEDGE,WS_TABSTOP|LBS_NOTIFY|LBS_USETABSTOPS|LBS_NOINTEGRALHEIGHT|LBS_MULTIPLESEL|/*LBS_EXTENDEDSEL|*/LBS_DISABLENOSCROLL|LBS_HASSTRINGS,0,"LISTBOX");
+       CreateControlCore(text,width,height,pvarUnk,WS_EX_CLIENTEDGE,WS_TABSTOP|LBS_NOTIFY|LBS_USETABSTOPS|LBS_NOINTEGRALHEIGHT|LBS_MULTIPLESEL|/*LBS_EXTENDEDSEL|*/LBS_DISABLENOSCROLL|LBS_HASSTRINGS,0,_TEXT("LISTBOX"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::DropdownList(VARIANT width, VARIANT height, VARIANT *pvarUnk)
 {
        CComVariant dmy;
-       CreateControlCore(dmy,width,height,pvarUnk,WS_EX_CLIENTEDGE,WS_TABSTOP|CBS_DROPDOWNLIST|CBS_SORT,0,"COMBOBOX");
+       CreateControlCore(dmy,width,height,pvarUnk,WS_EX_CLIENTEDGE,WS_TABSTOP|CBS_DROPDOWNLIST|CBS_SORT,0,_TEXT("COMBOBOX"));
        return S_OK;
 }
 
 STDMETHODIMP CForm::DropdownEdit(VARIANT text,VARIANT width, VARIANT height, VARIANT *pvarUnk)
 {
-       CreateControlCore(text,width,height,pvarUnk,WS_EX_CLIENTEDGE,WS_TABSTOP|CBS_DROPDOWN|CBS_AUTOHSCROLL|CBS_SORT,0,"COMBOBOX");
+       CreateControlCore(text,width,height,pvarUnk,WS_EX_CLIENTEDGE,WS_TABSTOP|CBS_DROPDOWN|CBS_AUTOHSCROLL|CBS_SORT,0,_TEXT("COMBOBOX"));
        return S_OK;
 }
 
@@ -258,12 +272,12 @@ STDMETHODIMP CForm::ClearControls()
        return S_OK;
 }
 
-CControl* CForm::CreateControlCore(VARIANT &text, VARIANT &width, VARIANT &height,VARIANT *pvarUnk, DWORD extstyle, DWORD style, DWORD afterstyle,LPCSTR classname)
+CControl* CForm::CreateControlCore(VARIANT &text, VARIANT &width, VARIANT &height,VARIANT *pvarUnk, DWORD extstyle, DWORD style, DWORD afterstyle,LPCTSTR classname)
 {
        CComVariant varText;
-       TCHAR szCaption[MAX_PATH] = {0};
-       if(varText.ChangeType(VT_BSTR,&text) == S_OK){
-               WideCharToMultiByte(GetACP(),0,varText.bstrVal,-1,szCaption,MAX_PATH,NULL,NULL);
+       ATL::CString szCaption;
+       if (varText.ChangeType(VT_BSTR,&text) == S_OK) {
+               szCaption = varText.bstrVal;
        }
        
        // \94z\92u\83T\83C\83Y\82Ì\8eæ\93¾
@@ -321,7 +335,7 @@ CControl* CForm::CreateControlCore(VARIANT &text, VARIANT &width, VARIANT &heigh
        pvarUnk->punkVal = pUnk;
 
        // \8e\9f\82É\89ü\8ds\82µ\82½\82Æ\82«\82É\88Ú\93®\82·\82é\97Ê
-       if(!lstrcmp(classname,"COMBOBOX")){
+       if (!lstrcmp(classname, _TEXT("COMBOBOX"))) {
                // \83R\83\93\83{\83{\83b\83N\83X\82Í\95\\8e¦\82³\82ê\82Ä\82¢\82é\82Ì\82Í1\8ds\95ª\82¾\82¯\81B
                nHeight = m_nControlFontSize;
        }
@@ -381,7 +395,7 @@ STDMETHODIMP CForm::ControlPad(VARIANT width, VARIANT height)
 
 STDMETHODIMP CForm::StatusLabel(VARIANT text, VARIANT width, VARIANT height, VARIANT *pvarUnk)
 {
-       CreateControlCore(text,width,height,pvarUnk,m_bControlUseStaticEdge?WS_EX_STATICEDGE:WS_EX_CLIENTEDGE,SS_NOTIFY,0,"STATIC");
+       CreateControlCore(text,width,height,pvarUnk,m_bControlUseStaticEdge?WS_EX_STATICEDGE:WS_EX_CLIENTEDGE,SS_NOTIFY,0,_TEXT("STATIC"));
        return S_OK;
 }
 
diff --git a/Form.h b/Form.h
index c9570c4..0b33122 100644 (file)
--- a/Form.h
+++ b/Form.h
@@ -91,8 +91,10 @@ public:
        STDMETHOD(Button)(/*[in]*/VARIANT text,/*[in]*/VARIANT width,/*[out,retval]*/ VARIANT *pvarUnk);
        STDMETHOD(Label)(/*[in]*/VARIANT text,/*[in,optional]*/VARIANT width,/*[out,retval]*/VARIANT* pvarUnk);
 protected:
-       CControl* CreateControlCore(VARIANT& text,VARIANT& width,VARIANT& height,VARIANT* pvarUnk,DWORD extstyle,DWORD style,DWORD afterstyle,LPCSTR classname);
-       list<CComObject<CControl>*> m_lstControl;
+       CControl* CreateControlCore(VARIANT& text, VARIANT& width, VARIANT& height, VARIANT* pvarUnk,
+               DWORD extstyle, DWORD style, DWORD afterstyle, LPCTSTR classname);
+
+       std::list<CComObject<CControl>*> m_lstControl;
        BOOL m_bControlUseStaticEdge;
        BOOL m_bControlNextIsGroupHead;
        int m_nCommandID;
index cfb3da8..eff6782 100644 (file)
--- a/Layer.cpp
+++ b/Layer.cpp
@@ -42,7 +42,8 @@ void CLayer::Draw(CDC dc)
                        fntsiz = MulDiv(fntsiz,height_mm,height_px);
                        ReleaseDC(hWnd,hdc);
                }
-               HFONT hFont = CreateFont(fntsiz,0,0,0,0,false,false,false,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_DONTCARE,m_szFontName);
+               HFONT hFont = CreateFont(fntsiz, 0, 0, 0, 0, false, false, false,
+                       SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, m_szFontName);
                HFONT hOldFont = NULL;
                if(hFont){
                        hOldFont = (HFONT)SelectObject(dc.m_hDC,hFont);
@@ -80,40 +81,43 @@ void CLayer::FinalRelease()
 STDMETHODIMP CLayer::Text(VARIANT x,VARIANT y,VARIANT text)
 {
        CComVariant str;
-       if(str.ChangeType(VT_BSTR,&text) != S_OK){
-               return DISP_E_TYPEMISMATCH;
+       HRESULT hr = str.ChangeType(VT_BSTR, &text);
+       if(FAILED(hr)) {
+               return hr;
        }
+
        long lx = GetMappedValue(x);
        long ly = GetMappedValue(y);
        int len = SysStringByteLen(str.bstrVal);
-       LPSTR pBuf = new CHAR[len+1];
-       WideCharToMultiByte(GetACP(),0,str.bstrVal,len,pBuf,len,0,0);
-       pBuf[len] = 0;
-       AddDrawData(new textdata(lx,ly,pBuf,m_bTextMappingMode));
-       delete[]pBuf;
+
+       ATL::CString buf(str.bstrVal);
+
+       AddDrawData(new textdata(lx, ly, buf, m_bTextMappingMode));
        return S_OK;
 }
 
 STDMETHODIMP CLayer::TextBox(VARIANT sx, VARIANT sy, VARIANT ex, VARIANT ey, VARIANT text, VARIANT fmt)
 {
-       CComVariant str,cfmt;
        long lsx = GetMappedValue(sx);
        long lsy = GetMappedValue(sy);
        long lex = GetMappedValue(ex);
        long ley = GetMappedValue(ey);
+
        UINT ufmt = 0;
-       if(cfmt.ChangeType(VT_I4,&fmt) == S_OK){
+       CComVariant cfmt;
+       if (cfmt.ChangeType(VT_I4, &fmt) == S_OK){
                ufmt = cfmt.lVal;
        }
-       if(str.ChangeType(VT_BSTR,&text) != S_OK){
-               return DISP_E_TYPEMISMATCH;
+
+       CComVariant str;
+       HRESULT hr = str.ChangeType(VT_BSTR, &text);
+       if (FAILED(hr)) {
+               return hr;
        }
-       int len = SysStringByteLen(str.bstrVal);
-       LPSTR pBuf = new CHAR[len+1];
-       int cnt = WideCharToMultiByte(GetACP(),0,str.bstrVal,-1,pBuf,len,0,0);
-       pBuf[cnt-1] = 0;
-       AddDrawData(new textboxdata(lsx,lsy,lex,ley,pBuf,ufmt,m_bTextMappingMode));
-       delete[]pBuf;
+
+       ATL::CString buf(str.bstrVal);
+
+       AddDrawData(new textboxdata(lsx, lsy, lex, ley, buf, ufmt, m_bTextMappingMode));
        return S_OK;
 }
 
@@ -333,15 +337,14 @@ STDMETHODIMP CLayer::put_Visible(BOOL newVal)
 
 STDMETHODIMP CLayer::get_FontName(BSTR *pVal)
 {
-       WCHAR wmes[MAX_PATH];
-       MultiByteToWideChar(GetACP(),0,m_szFontName,-1,wmes,MAX_PATH);
-       *pVal = SysAllocString(wmes);
+       CComBSTR ret(m_szFontName);
+       *pVal = ret.Detach();
        return S_OK;
 }
 
 STDMETHODIMP CLayer::put_FontName(BSTR newVal)
 {
-       WideCharToMultiByte(GetACP(),0,newVal,-1,m_szFontName,MAX_PATH,NULL,NULL);
+       m_szFontName = newVal;
        return S_OK;
 }
 
diff --git a/Layer.h b/Layer.h
index 2c356cd..7574acc 100644 (file)
--- a/Layer.h
+++ b/Layer.h
@@ -61,7 +61,7 @@ protected:
 class textdata : public drawdata
 {
 public:
-       textdata(long x,long y,LPCSTR text,BOOL mapmode)
+       textdata(long x, long y, LPCTSTR text, BOOL mapmode)
        {
                pBuf = new TCHAR[lstrlen(text)+1];
                lstrcpy(pBuf,text);
@@ -69,11 +69,13 @@ public:
                m_y = y;
                m_bTextMappingMode = mapmode;
        }
+
        virtual void Destroy()
        {
                delete pBuf;
                delete this;
        }
+
        virtual void Draw(CDC dc)
        {
                POINT pt = {m_x,m_y};
@@ -95,7 +97,7 @@ protected:
 class textboxdata : public drawdata
 {
 public:
-       textboxdata(long sx,long sy,long ex,long ey,LPCSTR text,UINT fmt,BOOL mapmode)
+       textboxdata(long sx, long sy, long ex, long ey, LPCTSTR text, UINT fmt, BOOL mapmode)
        {
                pBuf = new TCHAR[lstrlen(text)+1];
                lstrcpy(pBuf,text);
@@ -509,7 +511,7 @@ public:
                m_nFontSize = 0;
                m_dwFillColor = 0x808080;
                m_dwFontColor = ::GetSysColor(COLOR_WINDOWTEXT);
-               ZeroMemory(m_szFontName,MAX_PATH);
+               m_szFontName.Empty();
                // \83}\83b\83s\83\93\83O\83\82\81[\83h
                m_bTextMappingMode = 0;
                m_bFontTextMappingMode = 0;
@@ -572,7 +574,7 @@ protected:
        DWORD m_dwColor;
        int m_nFontSize;
        BOOL m_bVisible;
-       CHAR m_szFontName[MAX_PATH];
+       ATL::CString m_szFontName;
        int m_bTextMappingMode;
        int m_bFontTextMappingMode;
 };
index 1dcba00..c86a8ad 100644 (file)
@@ -232,24 +232,21 @@ STDMETHODIMP CObjectMap::ExpandVariables(VARIANT text, VARIANT env, VARIANT *pVa
                                                }
                                        }
                                }
-                               else if(bEnv){
+                               else if (bEnv){
                                        // \98A\91z\94z\97ñ\82É\82Í\91\8dÝ\82¹\82¸\81A\8aÂ\8b«\95Ï\90\94\93W\8aJ\82ª\8ew\8e¦\82³\82ê\82Ä\82¢\82é
-                                       CHAR szName [MAX_PATH] = { 0 };
-                                       CHAR szBuf  [MAX_PATH] = { 0 };
-                                       WCHAR wbuf[MAX_PATH] = { 0 };
-                                       WideCharToMultiByte(GetACP(),0,name,-1,szName,MAX_PATH,NULL,NULL);
-                                       DWORD ret = GetEnvironmentVariable(szName,szBuf,MAX_PATH);
-                                       if(ret && ret < MAX_PATH){
+                                       ATL::CString szName(name);
+                                       TCHAR szBuf[MAX_PATH] = {0};
+                                       DWORD ret = GetEnvironmentVariable(szName, szBuf, MAX_PATH);
+                                       if (ret && ret < MAX_PATH) {
                                                // \8aÂ\8b«\95Ï\90\94\82ª\94­\8c©\82³\82ê\82½
-                                               if(phase == 0){
+                                               if (phase == 0) {
                                                        // \83t\83G\81[\83Y1\82Í\83J\83E\83\93\83g\82·\82é\82¾\82¯
                                                        expandsize += ret;
                                                }
                                                else{
                                                        // \83t\83F\81[\83Y2\82Í\8eÀ\8dÛ\82É\8f\91\82«\8d\9e\82Þ
-                                                       MultiByteToWideChar(GetACP(),0,szBuf,ret,wbuf,MAX_PATH);
-                                                       UINT i;
-                                                       for(i=0;i<ret;i++){
+                                                       ATL::CStringW wbuf(szBuf);
+                                                       for (UINT i=0; i < ret; i++) {
                                                                pExpandBuffer[writeidx++] = wbuf[i];
                                                        }
                                                }
index e022df0..d787166 100644 (file)
@@ -205,11 +205,11 @@ HWND COverlappedWindow::SafeCreateWnd()
 
        if(windowParam.noclose){
                // \95Â\82\82é\83{\83^\83\93\82È\82µ\83^\83C\83v
-               windowParam.SetWindowClassName("SeraphyScriptToolsOverlappedWindowNC");
+               windowParam.SetWindowClassName(_TEXT("SeraphyScriptToolsOverlappedWindowNC"));
                windowParam.wndstyle = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS | CS_NOCLOSE;
        }
        else{
-               windowParam.SetWindowClassName("SeraphyScriptToolsOverlappedWindow");
+               windowParam.SetWindowClassName(_TEXT("SeraphyScriptToolsOverlappedWindow"));
                windowParam.wndstyle = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
        }
        
@@ -231,7 +231,7 @@ HWND COverlappedWindow::SafeCreateWnd()
        HWND hWnd = CreateWindowEx(
                WS_EX_CONTROLPARENT,
                windowParam.szClassName,
-               "", // \83_\83~\81[
+               _TEXT(""), // \83_\83~\81[
                windowParam.GetStyle(),
                CW_USEDEFAULT,
                CW_USEDEFAULT,
@@ -239,7 +239,7 @@ HWND COverlappedWindow::SafeCreateWnd()
                windowParam.height,
                m_hParentWnd,
                NULL, _Module.m_hInst, this);
-       ::SetWindowLong(hWnd,GWL_USERDATA,(LONG)this); // \83N\83\89\83X\82Æ\8aÖ\98A\95t\82¯\82é
+       ::SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) this); // \83N\83\89\83X\82Æ\8aÖ\98A\95t\82¯\82é
        m_hPopupWnd = hWnd;
        // \83E\83B\83\93\83h\83E\83X\83^\83C\83\8b\82Ì\8dÄ\90Ý\92è
        ::SetWindowLong(m_hPopupWnd,GWL_STYLE,windowParam.GetStyle());
@@ -253,7 +253,7 @@ HWND COverlappedWindow::SafeCreateWnd()
        minfo.fMask  = MIIM_TYPE|MIIM_ID;
        minfo.fType  = MFT_STRING;
        minfo.wID    = WM_MOVENEXT_OVERLAPPED;
-       minfo.dwTypeData = "\8e\9f\82Ì\83E\83B\83\93\83h\83E\82É\88Ú\93®\tF6";
+       minfo.dwTypeData = _TEXT("\8e\9f\82Ì\83E\83B\83\93\83h\83E\82É\88Ú\93®\tF6"); //FIXME: \83\8a\83\\81[\83X\82É\88Ú\93®\82·\82é
        ::InsertMenuItem(hMenu,cnt,true,&minfo);
        
        // \83t\83H\81[\83\80\82Ì\83\81\83C\83\93\83E\83B\83\93\83h\83E\97p\82Æ\82µ\82Ä\83A\83^\83b\83`\82·\82é
@@ -271,7 +271,7 @@ HWND COverlappedWindow::SafeCreateWnd()
 
 LRESULT CALLBACK COverlappedWindow::WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-       COverlappedWindow* me = (COverlappedWindow*)::GetWindowLong(hWnd,GWL_USERDATA);
+       COverlappedWindow* me = (COverlappedWindow*)::GetWindowLongPtr(hWnd, GWLP_USERDATA);
 
        // \8bÙ\8b}\92â\8e~\82Ì\94»\92è
        if(GetAsyncKeyState(VK_PAUSE) & 0x8000){
@@ -453,7 +453,7 @@ LRESULT CALLBACK COverlappedWindow::WindowProc(HWND hWnd, UINT uMsg, WPARAM wPar
                {
 #ifdef _DEBUG
                        TCHAR mes[MAX_PATH];
-                       wsprintf(mes,"command=%d:%d\n",HIWORD(wParam),LOWORD(wParam));
+                       wsprintf(mes, _TEXT("command=%d:%d\n"), HIWORD(wParam), LOWORD(wParam));
                        OutputDebugString(mes);
 #endif
                        HWND hControl = (HWND)lParam;
@@ -515,8 +515,8 @@ LRESULT CALLBACK COverlappedWindow::WindowProc(HWND hWnd, UINT uMsg, WPARAM wPar
                                {
                                        // ListView\82Å\83J\83\89\83\80\82ª\83N\83\8a\83b\83N\82³\82ê\82½\82±\82Æ\82ð\92Ê\92m\82·\82é
                                        LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam;
-                                       DWORD addr = ::GetWindowLong(pnmv->hdr.hwndFrom,GWL_USERDATA);
-                                       if(addr){
+                                       LONG_PTR addr = ::GetWindowLongPtr(pnmv->hdr.hwndFrom, GWLP_USERDATA);
+                                       if (addr) {
                                                // \83J\83\89\83\80\83N\83\8a\83b\83N\82É\82æ\82é\83\\81[\83e\83B\83\93\83O\82ð\8ds\82¤
                                                CComObject<CControl>* pCtrl = (CComObject<CControl>*)addr;
                                                pCtrl->ListSort(pnmv->iSubItem);
@@ -564,8 +564,8 @@ LRESULT CALLBACK COverlappedWindow::WindowProc(HWND hWnd, UINT uMsg, WPARAM wPar
                                {
                                        // ListView - TreeView \82Å\89E\83N\83\8a\83b\83N\82³\82ê\82½\82±\82Æ\82ð\92Ê\92m\82·\82é
                                        LPNMHDR lpnmh = (LPNMHDR) lParam;
-                                       DWORD addr = ::GetWindowLong(lpnmh->hwndFrom,GWL_USERDATA);
-                                       if(addr){
+                                       LONG_PTR addr = ::GetWindowLong(lpnmh->hwndFrom, GWLP_USERDATA);
+                                       if (addr) {
                                                CComObject<CControl>* pCtrl = (CComObject<CControl>*)addr;
                                                pCtrl->OnRClick(); // \83R\83\93\83g\83\8d\81[\83\8b\82É\89E\83N\83\8a\83b\83N\82ð\92Ê\92m\82µ\91O\8f\88\97\9d\82ð\8ds\82í\82¹\82é
                                        }
@@ -790,10 +790,9 @@ STDMETHODIMP COverlappedWindow::DoEvent(VARIANT *varResult)
                                                }
                                        }
                                        // \83\81\83j\83\85\81[\82Ì\8c\9f\8dõ
-                                       if(m_hMenu && nID >= 100){
-                                               map<int,_bstr_t>::iterator p;
-                                               p = m_cMenuMap.find(nID);
-                                               if(p != m_cMenuMap.end()){
+                                       if (m_hMenu && nID >= 100) {
+                                               map<int, CComBSTR>::iterator p = m_cMenuMap.find(nID);
+                                               if (p != m_cMenuMap.end()) {
                                                        // \94­\8c©\82³\82ê\82½
                                                        ClassObjectInvoke(p->second);
                                                }
@@ -1251,33 +1250,32 @@ STDMETHODIMP COverlappedWindow::SetMenu(VARIANT fmt)
        HRESULT hRet = S_OK;
        CComVariant tmp;
        if(tmp.ChangeType(VT_BSTR,&fmt) == S_OK){
-               UINT len = SysStringByteLen(tmp.bstrVal)+1;
-               LPSTR pBuf = new CHAR[len];
-               int cnt = WideCharToMultiByte(GetACP(),0,tmp.bstrVal,-1,pBuf,len,NULL,NULL);
-               pBuf[cnt - 1] = 0;
+               ATL::CString buf(tmp.bstrVal);
+
                // \8cÃ\82¢\83\81\83j\83\85\81[\82ð\94j\8aü\82·\82é
-               if(m_hMenu){
+               if (m_hMenu) {
                        m_cMenuMap.clear();
                        ::SetMenu(m_hPopupWnd,NULL);
                        DestroyMenu(m_hMenu);
                        m_hMenu = NULL;
                }
-               if(cnt > 1){
+
+               if (buf.GetLength() > 0) {
                        // \8d\80\96Ú\82ª\82 \82ê\82Î\83\81\83j\83\85\81[\96¼\82ð\83p\81[\83X\82·\82é
                        m_hMenu = CreateMenu();
                        TCHAR menuname[MAX_PATH];
                        TCHAR szSubmenu[MAX_PATH];
-                       LPSTR p = pBuf;
+                       LPTSTR p = buf.GetBuffer();
                        HMENU hPopupMenu = NULL;
                        int lv1 = 0;
                        int lv2 = 0;
                        int cmd = 0;
-                       while(*p){
-                               while(*p == ' ' || *p == '\t')p++; // \83u\83\89\83\93\83N\83X\83L\83b\83v
-                               if(*p == '/'){
+                       while (*p) {
+                               while (*p == ' ' || *p == '\t') p++; // \83u\83\89\83\93\83N\83X\83L\83b\83v
+                               if (*p == '/') {
                                        p++;
                                        // \83|\83b\83v\83A\83b\83v\83\81\83j\83\85\81[\82Ì\8dì\90¬
-                                       if(hPopupMenu){
+                                       if (hPopupMenu) {
                                                // \8aù\91\82Ì\83|\83b\83v\83A\83b\83v\82ð\96\84\82ß\8d\9e\82Þ
                                                MENUITEMINFO inf = {0};
                                                inf.cbSize = sizeof(MENUITEMINFO);
@@ -1291,38 +1289,38 @@ STDMETHODIMP COverlappedWindow::SetMenu(VARIANT fmt)
                                        lv2 = 0;
                                        cmd = 0;
                                        hPopupMenu = CreatePopupMenu();
-                                       LPSTR d = p;
-                                       while(*p && *p != ',' && *p != '/' && *p != ':'){
+                                       LPTSTR d = p;
+                                       while (*p && *p != ',' && *p != '/' && *p != ':') {
                                                p = CharNext(p);
                                        }
-                                       ZeroMemory(szSubmenu,MAX_PATH);
-                                       CopyMemory(szSubmenu,d,p-d);
-                                       if(*p == ',' || *p == ':'){
+                                       ZeroMemory(szSubmenu, MAX_PATH);
+                                       CopyMemory(szSubmenu, d, p-d);
+                                       if (*p == ',' || *p == ':') {
                                                p++;
                                        }
                                }
                                else{
                                        // \83\81\83j\83\85\81[\82Ì\8dì\90¬
-                                       if(hPopupMenu){
-                                               LPSTR d = p;
-                                               while(*p && *p != ',' && *p != '/' && *p != ':'){
+                                       if (hPopupMenu) {
+                                               LPTSTR d = p;
+                                               while (*p && *p != ',' && *p != '/' && *p != ':') {
                                                        p = CharNext(p);
                                                }
-                                               ZeroMemory(menuname,MAX_PATH);
-                                               CopyMemory(menuname,d,p-d);
+                                               ZeroMemory(menuname, MAX_PATH);
+                                               CopyMemory(menuname, d, p-d);
                                                // \83R\83}\83\93\83h\83Z\83p\83\8c\81[\83^\81[\82ð\8c\9f\8d¸\82·\82é
-                                               _bstr_t eventname;
-                                               LPSTR findcmd = strchr(menuname,'@');
+                                               CComBSTR eventname;
+                                               LPTSTR findcmd = _tcschr(menuname, _TEXT('@'));
                                                if(findcmd){
                                                        *findcmd = 0;
                                                        eventname = (LPCSTR)(findcmd + 1);
                                                }
                                                else{
-                                                       CHAR tmp[64];
-                                                       wsprintf(tmp,"OnMenu%d",lv1*100+cmd);
+                                                       TCHAR tmp[64];
+                                                       wsprintf(tmp, _TEXT("OnMenu%d"), lv1 * 100 + cmd);
                                                        eventname = tmp;
                                                }
-                                               m_cMenuMap.insert(pair<int,_bstr_t>(lv1*100+cmd,eventname));
+                                               m_cMenuMap.insert(std::pair<int, CComBSTR>(lv1 * 100 + cmd, eventname));
                                                // \83\81\83j\83\85\81[\82Ì\8dì\90¬
                                                MENUITEMINFO inf = {0};
                                                inf.cbSize = sizeof(MENUITEMINFO);
@@ -1362,7 +1360,6 @@ STDMETHODIMP COverlappedWindow::SetMenu(VARIANT fmt)
                        }
                        ::SetMenu(m_hPopupWnd,m_hMenu);
                }
-               delete[]pBuf;
        }
        return hRet;
 }
@@ -1370,70 +1367,75 @@ STDMETHODIMP COverlappedWindow::SetMenu(VARIANT fmt)
 STDMETHODIMP COverlappedWindow::TrackPopupMenu(VARIANT text, VARIANT cmd,VARIANT* pRet)
 {
        SafeCreateWnd();
-       CComVariant varCmd;
-       CComVariant varText;
+
        CComVariant varRet;
        varRet = 0;
 
        int nCommand = 0;
-       if(varCmd.ChangeType(VT_I2,&cmd) == S_OK){
+       CComVariant varCmd;
+       if (varCmd.ChangeType(VT_I2, &cmd) == S_OK){
                nCommand = varCmd.iVal;
        }
-       if(varText.ChangeType(VT_BSTR,&text) == S_OK){
+
+       CComVariant varText;
+       if (varText.ChangeType(VT_BSTR, &text) == S_OK) {
                TCHAR menuname[MAX_PATH];
-               UINT len = SysStringByteLen(varText.bstrVal)+1;
-               LPSTR pBuf = new CHAR[len];
-               int cnt = WideCharToMultiByte(GetACP(),0,varText.bstrVal,-1,pBuf,len,NULL,NULL);
-               pBuf[cnt - 1] = 0;
-               LPSTR p = pBuf;
+
+               ATL::CString buf(varText.bstrVal);
+               UINT len = buf.GetLength() + 1;
+               LPTSTR p = buf.GetBuffer();
+
                int lv = 0;
                int cmd = 0;
                HMENU hPopupMenu = CreatePopupMenu();
-               while(*p){
-                       LPSTR d = p;
-                       while(*p == ' ' || *p == '\t'){
+               while (*p) {
+                       LPTSTR d = p;
+                       while (*p == ' ' || *p == '\t') {
                                p++;
                        }
-                       while(*p && *p != ',' && *p != '/' && *p != ':'){
+                       while (*p && *p != ',' && *p != '/' && *p != ':') {
                                p = CharNext(p);
                        }
-                       ZeroMemory(menuname,MAX_PATH);
-                       CopyMemory(menuname,d,p-d);
+                       ZeroMemory(menuname, MAX_PATH);
+                       CopyMemory(menuname, d, p-d);
                        MENUITEMINFO inf = {0};
                        inf.cbSize = sizeof(MENUITEMINFO);
                        inf.fMask  = MIIM_TYPE|MIIM_ID;
                        inf.fType  = MFT_STRING;
-                       if(nCommand != 0){
-                               inf.wID    = nCommand + cmd;
+                       if (nCommand != 0) {
+                               inf.wID = nCommand + cmd;
                        }
-                       else{
+                       else {
                                // \83R\83}\83\93\83h\83x\81[\83X\82ª0\82È\82ç\82Î\83R\83}\83\93\83h\83C\83x\83\93\83g\82Í\94­\90\82³\82¹\82È\82¢\81B
                                // TrackPopupMenu\82Í\83R\83}\83\93\83h\82ð\91I\91ð\82µ\82È\82©\82Á\82½\8fê\8d\87\82Í0\82ð\95Ô\82·\82½\82ß\81A0\82æ\82è\82à\91å\82«\82È\92l\82É\82·\82é\95K\97v\82ª\82 \82é\81B
                                inf.wID    = nCommand + cmd + 1;
                        }
                        inf.dwTypeData = menuname;
-                       InsertMenuItem(hPopupMenu,lv,true,&inf);
+                       InsertMenuItem(hPopupMenu, lv, true, &inf);
                        lv++;
                        cmd++;
-                       if(*p == ',' || *p == '/'){
+                       if (*p == ',' || *p == '/') {
                                p++;
                        }
-                       else if(*p == ':'){
+                       else if (*p == ':') {
                                inf.fMask  = MIIM_TYPE;
                                inf.fType  = MFT_SEPARATOR;
-                               InsertMenuItem(hPopupMenu,lv,true,&inf);
+                               InsertMenuItem(hPopupMenu, lv, true, &inf);
                                p++;
                                lv++;
                        }
                }
-               delete[]pBuf;
+
                // TrackPopupMene
                DWORD pos = GetMessagePos();
                ::SetFocus(m_hPopupWnd);
-               varRet = (SHORT)::TrackPopupMenuEx(hPopupMenu
-                       ,TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RIGHTBUTTON | 
-                        (nCommand==0?(TPM_NONOTIFY|TPM_RETURNCMD):0) // \83R\83}\83\93\83h\83x\81[\83X\82ª0\82Å\82 \82ê\82Î\81A\83R\83}\83\93\83h\83C\83x\83\93\83g\82ð\92Ê\92m\82³\82¹\82È\82¢\81B
-                       ,LOWORD(pos),HIWORD(pos),m_hPopupWnd,NULL);
+               varRet = (SHORT) ::TrackPopupMenuEx(hPopupMenu,
+                       TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RIGHTBUTTON | 
+                        (nCommand == 0 ? (TPM_NONOTIFY | TPM_RETURNCMD) : 0), // \83R\83}\83\93\83h\83x\81[\83X\82ª0\82Å\82 \82ê\82Î\81A\83R\83}\83\93\83h\83C\83x\83\93\83g\82ð\92Ê\92m\82³\82¹\82È\82¢\81B
+                       LOWORD(pos),
+                       HIWORD(pos),
+                       m_hPopupWnd,
+                       NULL);
                DestroyMenu(hPopupMenu);
        }
        varRet.Detach(pRet);
@@ -1641,36 +1643,38 @@ STDMETHODIMP COverlappedWindow::get_Exstyle(long *pVal)
 STDMETHODIMP COverlappedWindow::put_Exstyle(long newVal)
 {
        windowParam.exstyle = (DWORD)newVal;
-       if(m_hPopupWnd){
-               ::SetWindowLong(m_hPopupWnd,GWL_STYLE,windowParam.exstyle);
+       if (m_hPopupWnd) {
+               ::SetWindowLong(m_hPopupWnd, GWL_STYLE, windowParam.exstyle);
        }
        return S_OK;
 }
 
 STDMETHODIMP COverlappedWindow::get_WindowClassName(BSTR *pVal)
 {
-       WCHAR wmes[MAX_PATH];
-       MultiByteToWideChar(GetACP(),0,windowParam.szClassName,-1,wmes,MAX_PATH);
-       *pVal = SysAllocString(wmes);
+       CComBSTR tmp(windowParam.szClassName);
+       *pVal = tmp.Detach();
        return S_OK;
 }
 
 STDMETHODIMP COverlappedWindow::Refresh()
 {
-       if(m_hPopupWnd){
-               ::SetWindowPos(m_hPopupWnd,NULL,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_DRAWFRAME|SWP_FRAMECHANGED|SWP_NOCOPYBITS);
+       if (m_hPopupWnd) {
+               ::SetWindowPos(
+                       m_hPopupWnd,
+                       NULL,
+                       0, 0, 0, 0,
+                       SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DRAWFRAME | SWP_FRAMECHANGED | SWP_NOCOPYBITS);
        }
        return S_OK;
 }
 
 void COverlappedWindow::SetTitle()
 {
-       if(!m_hPopupWnd){
+       if (!m_hPopupWnd) {
                return;
        }
-       TCHAR szTitle[MAX_PATH] = {0};
-       WideCharToMultiByte(GetACP(),0,m_bstrCaption,-1,szTitle,MAX_PATH,NULL,NULL);
-       ::SetWindowText(m_hPopupWnd,szTitle);
+       ATL::CString tmp(m_bstrCaption);
+       ::SetWindowText(m_hPopupWnd, tmp);
 }
 
 STDMETHODIMP COverlappedWindow::SetPlacement(VARIANT x, VARIANT y, VARIANT w, VARIANT h, VARIANT *pvarUnk)
@@ -1929,8 +1933,8 @@ void COverlappedWindow::CreateWindowList(list<HWND>& lstWnd,BOOL bSearchRoot)
        HWND* hWnds = NULL;
        if(m_hParentWnd && bSearchRoot){
                // \8dª\8c³\82Å\82È\82¯\82ê\82Î\81A\82³\82ç\82É\96â\82¢\8d\87\82í\82¹\82é
-               COverlappedWindow* pParent = (COverlappedWindow*)::GetWindowLong(m_hParentWnd,GWL_USERDATA);
-               if(pParent){
+               COverlappedWindow* pParent = (COverlappedWindow*)::GetWindowLongPtr(m_hParentWnd, GWLP_USERDATA);
+               if (pParent) {
                        pParent->CreateWindowList(lstWnd,true);
                }
        }
@@ -2024,20 +2028,22 @@ STDMETHODIMP COverlappedWindow::put_WaitCursor(short newVal)
 
 STDMETHODIMP COverlappedWindow::LoadIcon(VARIANT text)
 {
-       CHAR szPath[MAX_PATH];
        CComVariant varText;
-       if(varText.ChangeType(VT_BSTR,&text) != S_OK){
+       if (varText.ChangeType(VT_BSTR, &text) != S_OK) {
                return DISP_E_TYPEMISMATCH;
        }
-       WideCharToMultiByte(GetACP(),0,varText.bstrVal,-1,szPath,MAX_PATH,NULL,NULL);
-       if(m_hIcon){
+       ATL::CString szPath(varText.bstrVal);
+
+       if (m_hIcon) {
                DestroyIcon(m_hIcon);
                m_hIcon = NULL;
        }
-       m_hIcon = (HICON)LoadImage(NULL,szPath,IMAGE_ICON
-               ,GetSystemMetrics(SM_CXSMICON)
-               ,GetSystemMetrics(SM_CYSMICON),LR_LOADFROMFILE);
-       if(m_hIcon && m_hPopupWnd){
+       m_hIcon = (HICON)LoadImage(NULL, szPath, IMAGE_ICON,
+               GetSystemMetrics(SM_CXSMICON),
+               GetSystemMetrics(SM_CYSMICON),
+               LR_LOADFROMFILE);
+
+       if (m_hIcon && m_hPopupWnd) {
                ::SendMessage(m_hPopupWnd, WM_SETICON, false, (LPARAM)m_hIcon);
        }
        return S_OK;
index cf1d6eb..4726908 100644 (file)
@@ -35,9 +35,9 @@ public:
        }
        void Clear()
        {
-               list<LPSTR>::iterator p = m_lstPath.begin();
+               list<LPTSTR>::iterator p = m_lstPath.begin();
                while(p != m_lstPath.end()){
-                       delete (*p);
+                       delete[] *p;
                        p = m_lstPath.erase(p);
                }
        }
@@ -48,7 +48,7 @@ public:
                int i;
                for(i=0;i<count;i++){
                        DWORD sz = ::DragQueryFile(hDrop,i,NULL,0);
-                       LPSTR pBuf = new CHAR[sz+1];
+                       LPTSTR pBuf = new TCHAR[sz+1];
                        ::DragQueryFile(hDrop,i,pBuf,MAX_PATH);
                        m_lstPath.push_back(pBuf);
                }
@@ -64,13 +64,10 @@ public:
                VARIANT* pvars;
                if(SafeArrayAccessData(pArray,(void**)&pvars) == S_OK){
                        int i = 0;
-                       list<LPSTR>::iterator p = m_lstPath.begin();
+                       list<LPTSTR>::iterator p = m_lstPath.begin();
                        while(p != m_lstPath.end()){
-                               WCHAR wbuf[MAX_PATH];
-                               MultiByteToWideChar(GetACP(),0,*p,-1,wbuf,MAX_PATH);
-                               VariantInit(&pvars[i]);
-                               pvars[i].vt = VT_BSTR;
-                               pvars[i].bstrVal = SysAllocString(wbuf);
+                               CComVariant wbuf(*p);
+                               wbuf.Detach(&pvars[i]);
                                p++;
                                i++;
                        }
@@ -81,7 +78,7 @@ public:
                pvarPathName->parray = pArray;
        }
 protected:
-       list<LPSTR> m_lstPath;
+       list<LPTSTR> m_lstPath;
 };
 
 /////////////////////////////////////////////////////////////////////////////
@@ -122,11 +119,11 @@ public:
                width  = w;
                height = h;
        }
-       inline void SetWindowClassName(LPCSTR name)
+       inline void SetWindowClassName(LPCTSTR name)
        {
                lstrcpy(szClassName,name);
        }
-       CHAR szClassName[MAX_PATH];
+       TCHAR szClassName[MAX_PATH];
        DWORD wndstyle;
        DWORD style;
        DWORD exstyle;
@@ -390,7 +387,7 @@ protected:
        HWND m_hPopupWnd;
        HWND m_hParentWnd;
        HICON m_hIcon;
-       map<int,_bstr_t> m_cMenuMap;
+       map<int, CComBSTR> m_cMenuMap;
 };
 
 #endif //__OverlappedWindow_H_
index 3013074..95908c3 100644 (file)
@@ -24,8 +24,7 @@ STDMETHODIMP CPrivateProfile::InterfaceSupportsErrorInfo(REFIID riid)
 
 STDMETHODIMP CPrivateProfile::get_ProfilePath(BSTR *pVal)
 {
-       *pVal = m_bstr_profilepath.copy();
-       return S_OK;
+       return m_bstr_profilepath.CopyTo(pVal);
 }
 
 STDMETHODIMP CPrivateProfile::put_ProfilePath(BSTR newVal)
@@ -41,15 +40,17 @@ STDMETHODIMP CPrivateProfile::OpenSection(VARIANT text,VARIANT* pVal)
        if(varText.ChangeType(VT_BSTR,&text) != S_OK){
                return DISP_E_TYPEMISMATCH;
        }
-       if(m_bstr_profilepath.length() <= 0){
+       if (m_bstr_profilepath.Length() <= 0) {
                ErrorInfo(IDS_ERR_PROFILEPATH);
                return DISP_E_EXCEPTION;
        }
        CComObject<CProfileSection>* pSection = NULL;
        pSection->CreateInstance(&pSection);
        ATLASSERT(pSection);
-       WideCharToMultiByte(GetACP(),0,m_bstr_profilepath,-1,pSection->m_szProfilePath,MAX_PATH,NULL,NULL);
-       WideCharToMultiByte(GetACP(),0,varText.bstrVal   ,-1,pSection->m_szSectionName,MAX_PATH,NULL,NULL);
+
+       pSection->m_szProfilePath = m_bstr_profilepath;
+       pSection->m_szSectionName = varText.bstrVal;
+
        IUnknown* pUnk = NULL;
        pSection->QueryInterface(IID_IUnknown,(void**)&pUnk);
        ATLASSERT(pUnk);
index 1d3aba1..c5bef6b 100644 (file)
@@ -37,7 +37,7 @@ public:
        STDMETHOD(get_ProfilePath)(/*[out, retval]*/ BSTR *pVal);
        STDMETHOD(put_ProfilePath)(/*[in]*/ BSTR newVal);
 protected:
-       _bstr_t m_bstr_profilepath;
+       CComBSTR m_bstr_profilepath;
 };
 
 #endif //__PRIVATEPROFILE_H_
index 13f405c..abaaaf0 100644 (file)
@@ -23,37 +23,40 @@ STDMETHODIMP CProfileSection::InterfaceSupportsErrorInfo(REFIID riid)
 STDMETHODIMP CProfileSection::get_Value(VARIANT idx, VARIANT *pVal)
 {
        ::VariantInit(pVal);
+
+       ATL::CString szKeyname;
        CComVariant varIdx;
-       CHAR szKeyname[MAX_PATH] = { 0 };
-       const int siz = 1024 * 8; // 8KBytes
-       LPSTR szReturn = new CHAR[siz];
-       if(varIdx.ChangeType(VT_BSTR,&idx) == S_OK){
-               WideCharToMultiByte(GetACP(),0,varIdx.bstrVal,-1,szKeyname,MAX_PATH,NULL,NULL);
+       if (varIdx.ChangeType(VT_BSTR, &idx) == S_OK){
+               szKeyname = varIdx.bstrVal;
        }
-       if(GetPrivateProfileString(m_szSectionName,szKeyname,"",szReturn,siz,m_szProfilePath)){
-               CComVariant ret((LPCSTR)szReturn);
+
+       const int siz = 1024 * 8; // 8KBytes
+       ATL::CString buf;
+       LPTSTR szReturn = buf.GetBufferSetLength(siz);
+       if (GetPrivateProfileString(m_szSectionName, szKeyname, _TEXT(""), szReturn, siz, m_szProfilePath)) {
+               CComVariant ret(szReturn);
                ret.Detach(pVal);
        }
-       delete[]szReturn;
        return S_OK;
 }
 
 STDMETHODIMP CProfileSection::put_Value(VARIANT idx, VARIANT newVal)
 {
        // \83f\83B\83t\83H\83\8b\83g\82Ì\92l\82Â\82«\8eæ\93¾
-       CComVariant varIdx,varNew;
-       CHAR szKeyname[MAX_PATH] = { 0 };
-       const int siz = 1024 * 8; // 8KBytes
-       LPSTR szWrite = new CHAR[siz+1];
-       if(varIdx.ChangeType(VT_BSTR,&idx) == S_OK){
-               WideCharToMultiByte(GetACP(),0,varIdx.bstrVal,-1,szKeyname,MAX_PATH,NULL,NULL);
+
+       ATL::CString szKeyname;
+       CComVariant varIdx;
+       if (varIdx.ChangeType(VT_BSTR, &idx) == S_OK) {
+               szKeyname = varIdx.bstrVal;
        }
-       if(varNew.ChangeType(VT_BSTR,&newVal) == S_OK){
-               int cnt = WideCharToMultiByte(GetACP(),0,varNew.bstrVal,-1,szWrite,siz,NULL,NULL);
-               szWrite[cnt] = 0;
+
+       ATL::CString szWrite;
+       CComVariant varNew;
+       if (varNew.ChangeType(VT_BSTR, &newVal) == S_OK){
+               szWrite = varNew.bstrVal;
        }
-       WritePrivateProfileString(m_szSectionName,szKeyname,szWrite,m_szProfilePath);
-       delete[]szWrite;
+
+       WritePrivateProfileString(m_szSectionName, szKeyname, szWrite, m_szProfilePath);
        return S_OK;
 }
 
@@ -61,22 +64,26 @@ STDMETHODIMP CProfileSection::GetValue(VARIANT idx, VARIANT def,VARIANT* pVal)
 {
        // \83f\83B\83t\83H\83\8b\83g\82Ì\92l\82Â\82«\8eæ\93¾
        ::VariantInit(pVal);
-       CComVariant varIdx,varDef;
-       CHAR szKeyname[MAX_PATH] = { 0 };
-       CHAR szDefault[MAX_PATH] = { 0 };
-       const int siz = 1024 * 8; // 8KBytes
-       LPSTR szReturn = new CHAR[siz];
-       if(varIdx.ChangeType(VT_BSTR,&idx) == S_OK){
-               WideCharToMultiByte(GetACP(),0,varIdx.bstrVal,-1,szKeyname,MAX_PATH,NULL,NULL);
+
+       ATL::CString szKeyname;
+       CComVariant varIdx;
+       if (varIdx.ChangeType(VT_BSTR, &idx) == S_OK) {
+               szKeyname = varIdx.bstrVal;
        }
-       if(varDef.ChangeType(VT_BSTR,&def) == S_OK){
-               WideCharToMultiByte(GetACP(),0,varDef.bstrVal,-1,szDefault,MAX_PATH,NULL,NULL);
+
+       ATL::CString szDefault;
+       CComVariant varDef;
+       if (varDef.ChangeType(VT_BSTR, &def) == S_OK) {
+               szDefault = varDef.bstrVal;
        }
-       if(GetPrivateProfileString(m_szSectionName,szKeyname,szDefault,szReturn,siz,m_szProfilePath)){
-               CComVariant ret((LPCSTR)szReturn);
+
+       const int siz = 1024 * 8; // 8KBytes
+       ATL::CString buf;
+       LPTSTR szReturn = buf.GetBufferSetLength(siz);
+       if (GetPrivateProfileString(m_szSectionName, szKeyname, szDefault, szReturn, siz, m_szProfilePath)) {
+               CComVariant ret(szReturn);
                ret.Detach(pVal);
        }
-       delete[]szReturn;
        return S_OK;
 }
 
@@ -86,30 +93,30 @@ STDMETHODIMP CProfileSection::GetKeyNames(VARIANT *pVal)
        DWORD siz = 4096;
        DWORD oldsiz = 0;
        DWORD retsiz = 0;
-       LPSTR pBuf = new CHAR[siz];
-       while(  (retsiz  = GetPrivateProfileSection(m_szSectionName,pBuf,siz,m_szProfilePath)) &&
-                       (retsiz == (siz - 2)) && ( oldsiz != retsiz ) ){
+       LPTSTR pBuf = new TCHAR[siz];
+       while ((retsiz = GetPrivateProfileSection(m_szSectionName, pBuf, siz, m_szProfilePath)) &&
+                       (retsiz == (siz - 2)) && (oldsiz != retsiz)) {
                oldsiz = siz;
                siz *= 2;
                delete []pBuf;
-               pBuf = new CHAR[siz];
+               pBuf = new TCHAR[siz];
        }
        // \83J\83E\83\93\83g\82·\82é
-       LPSTR p = pBuf;
+       LPTSTR p = pBuf;
        long count = 0;
-       while(*p){
+       while (*p) {
                count++;
-               while(*p++);
+               while (*p++);
        }
        // \88ê\8e\9f\94z\97ñ\82Ì\90\90¬
-       SAFEARRAY* pArray = SafeArrayCreateVector(VT_VARIANT,0,count);
+       SAFEARRAY* pArray = SafeArrayCreateVector(VT_VARIANT, 0, count);
        long idx = 0;
        p = pBuf;
-       while(*p){
+       while (*p) {
                CComVariant tmp;
-               LPCSTR pb = p;
-               while(*p){
-                       if(*p == '='){
+               LPCTSTR pb = p;
+               while (*p) {
+                       if (*p == '=') {
                                *p = 0;
                        }
                        p++;
index b1093ef..4ba515c 100644 (file)
@@ -37,8 +37,8 @@ public:
        STDMETHOD(GetValue)(/*[in]*/VARIANT idx,/*[in,optional]*/VARIANT def,/*[out,retval]*/VARIANT* pVal);
        STDMETHOD(get_Value)(/*[in]*/VARIANT idx, /*[out, retval]*/ VARIANT *pVal);
        STDMETHOD(put_Value)(/*[in]*/VARIANT idx, /*[in]*/ VARIANT newVal);
-       CHAR m_szProfilePath[MAX_PATH];
-       CHAR m_szSectionName[MAX_PATH];
+       ATL::CString m_szProfilePath;
+       ATL::CString m_szSectionName;
 };
 
 #endif //__PROFILESECTION_H_
index 4277a44..dedb6e4 100644 (file)
@@ -24,6 +24,9 @@
 #include "profilesection.h"
 #include "privateprofile.h"
 
+// Common Controls\97plib\82Ì\83\8d\81[\83h
+#pragma comment(lib, "comctl32.lib")
+
 CComModule _Module;
 
 BEGIN_OBJECT_MAP(ObjectMap)
index 2b96bce..224ce5a 100644 (file)
@@ -4,7 +4,7 @@
 
 
  /* File created by MIDL compiler version 8.00.0603 */
-/* at Sun Jul 19 17:53:12 2015
+/* at Sat Jul 25 10:10:02 2015
  */
 /* Compiler settings for SeraphyScriptTools.idl:
     Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 
index 99ca8c9..2be6752 100644 (file)
@@ -6,26 +6,32 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SeraphyScriptTools", "Serap
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Win32 = Debug|Win32
-               Release MinDependency|Win32 = Release MinDependency|Win32
-               Release MinSize|Win32 = Release MinSize|Win32
+               MBCS Debug|Win32 = MBCS Debug|Win32
+               MBCS Debug|x64 = MBCS Debug|x64
+               MBCS Release|Win32 = MBCS Release|Win32
+               MBCS Release|x64 = MBCS Release|x64
                Unicode Debug|Win32 = Unicode Debug|Win32
-               Unicode Release MinDependency|Win32 = Unicode Release MinDependency|Win32
-               Unicode Release MinSize|Win32 = Unicode Release MinSize|Win32
+               Unicode Debug|x64 = Unicode Debug|x64
+               Unicode Release|Win32 = Unicode Release|Win32
+               Unicode Release|x64 = Unicode Release|x64
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Debug|Win32.ActiveCfg = Debug|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Debug|Win32.Build.0 = Debug|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Release MinDependency|Win32.ActiveCfg = Release MinDependency|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Release MinDependency|Win32.Build.0 = Release MinDependency|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Release MinSize|Win32.ActiveCfg = Release MinSize|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Release MinSize|Win32.Build.0 = Release MinSize|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Release MinDependency|Win32.ActiveCfg = Unicode Release MinDependency|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Release MinDependency|Win32.Build.0 = Unicode Release MinDependency|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Release MinSize|Win32.ActiveCfg = Unicode Release MinSize|Win32
-               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Release MinSize|Win32.Build.0 = Unicode Release MinSize|Win32
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.MBCS Debug|Win32.ActiveCfg = MBCS Debug|Win32
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.MBCS Debug|Win32.Build.0 = MBCS Debug|Win32
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.MBCS Debug|x64.ActiveCfg = MBCS Debug|x64
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.MBCS Debug|x64.Build.0 = MBCS Debug|x64
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.MBCS Release|Win32.ActiveCfg = MBCS Release|Win32
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.MBCS Release|Win32.Build.0 = MBCS Release|Win32
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.MBCS Release|x64.ActiveCfg = MBCS Release|x64
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.MBCS Release|x64.Build.0 = MBCS Release|x64
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Debug|Win32.ActiveCfg = Unicode Release|Win32
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Debug|Win32.Build.0 = Unicode Release|Win32
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Release|x64.ActiveCfg = Unicode Release|x64
+               {06035D5C-5F95-47F2-88B4-D614B0E06D2F}.Unicode Release|x64.Build.0 = Unicode Release|x64
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
diff --git a/SeraphyScriptTools.vcproj b/SeraphyScriptTools.vcproj
deleted file mode 100644 (file)
index 15bad66..0000000
+++ /dev/null
@@ -1,704 +0,0 @@
-<?xml version="1.0" encoding = "shift_jis"?>
-<VisualStudioProject
-       ProjectType="Visual C++"
-       Version="7.00"
-       Name="SeraphyScriptTools"
-       SccProjectName=""
-       SccLocalPath=""
-       Keyword="AtlProj">
-       <Platforms>
-               <Platform
-                       Name="Win32"/>
-       </Platforms>
-       <Configurations>
-               <Configuration
-                       Name="Release MinDependency|Win32"
-                       OutputDirectory=".\ReleaseMinDependency"
-                       IntermediateDirectory=".\ReleaseMinDependency"
-                       ConfigurationType="2"
-                       UseOfMFC="0"
-                       UseOfATL="1"
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE"
-                       CharacterSet="2">
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               Optimization="1"
-                               InlineFunctionExpansion="1"
-                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL"
-                               StringPooling="TRUE"
-                               RuntimeLibrary="0"
-                               EnableFunctionLevelLinking="TRUE"
-                               UsePrecompiledHeader="3"
-                               PrecompiledHeaderThrough="stdafx.h"
-                               PrecompiledHeaderFile=".\ReleaseMinDependency/SeraphyScriptTools.pch"
-                               AssemblerListingLocation=".\ReleaseMinDependency/"
-                               ObjectFile=".\ReleaseMinDependency/"
-                               ProgramDataBaseFileName=".\ReleaseMinDependency/"
-                               WarningLevel="3"
-                               SuppressStartupBanner="TRUE"/>
-                       <Tool
-                               Name="VCCustomBuildTool"
-                               Description="\93o\98^\82ð\8ds\82Á\82Ä\82¢\82Ü\82·"
-                               CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;
-echo regsvr32 exec. time &gt; &quot;$(OutDir)\regsvr32.trg&quot;
-"
-                               Outputs="$(OutDir)\regsvr32.trg"/>
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalOptions="/MACHINE:I386"
-                               AdditionalDependencies="comctl32.lib odbc32.lib odbccp32.lib version.lib"
-                               OutputFile=".\ReleaseMinDependency/SeraphyScriptTools.dll"
-                               LinkIncremental="1"
-                               SuppressStartupBanner="TRUE"
-                               ModuleDefinitionFile=".\SeraphyScriptTools.def"
-                               ProgramDatabaseFile=".\ReleaseMinDependency/SeraphyScriptTools.pdb"
-                               SubSystem="2"
-                               ImportLibrary=".\ReleaseMinDependency/SeraphyScriptTools.lib"/>
-                       <Tool
-                               Name="VCMIDLTool"
-                               TypeLibraryName=".\ReleaseMinDependency/SeraphyScriptTools.tlb"/>
-                       <Tool
-                               Name="VCPostBuildEventTool"/>
-                       <Tool
-                               Name="VCPreBuildEventTool"/>
-                       <Tool
-                               Name="VCPreLinkEventTool"/>
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="NDEBUG"
-                               Culture="1041"/>
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"/>
-                       <Tool
-                               Name="VCWebDeploymentTool"/>
-               </Configuration>
-               <Configuration
-                       Name="Unicode Release MinDependency|Win32"
-                       OutputDirectory=".\ReleaseUMinDependency"
-                       IntermediateDirectory=".\ReleaseUMinDependency"
-                       ConfigurationType="2"
-                       UseOfMFC="0"
-                       UseOfATL="1"
-                       ATLMinimizesCRunTimeLibraryUsage="TRUE"
-                       CharacterSet="1">
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               InlineFunctionExpansion="1"
-                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL"
-                               StringPooling="TRUE"
-                               RuntimeLibrary="0"
-                               EnableFunctionLevelLinking="TRUE"
-                               UsePrecompiledHeader="3"
-                               PrecompiledHeaderThrough="stdafx.h"
-                               PrecompiledHeaderFile=".\ReleaseUMinDependency/SeraphyScriptTools.pch"
-                               AssemblerListingLocation=".\ReleaseUMinDependency/"
-                               ObjectFile=".\ReleaseUMinDependency/"
-                               ProgramDataBaseFileName=".\ReleaseUMinDependency/"
-                               WarningLevel="3"
-                               SuppressStartupBanner="TRUE"/>
-                       <Tool
-                               Name="VCCustomBuildTool"
-                               Description="\93o\98^\82ð\8ds\82Á\82Ä\82¢\82Ü\82·"
-                               CommandLine="if &quot;%OS%&quot;==&quot;&quot; goto NOTNT
-if not &quot;%OS%&quot;==&quot;Windows_NT&quot; goto NOTNT
-regsvr32 /s /c &quot;$(TargetPath)&quot;
-echo regsvr32 exec. time &gt; &quot;$(OutDir)\regsvr32.trg&quot;
-goto end
-:NOTNT
-echo \8cx\8d\90 : Windows 95 \82É Unicode DLL \82ð\93o\98^\82·\82é\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ
-:end
-"
-                               Outputs="$(OutDir)\regsvr32.trg"/>
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalOptions="/MACHINE:I386"
-                               AdditionalDependencies="comctl32.lib odbc32.lib odbccp32.lib"
-                               OutputFile=".\ReleaseUMinDependency/SeraphyScriptTools.dll"
-                               LinkIncremental="1"
-                               SuppressStartupBanner="TRUE"
-                               ModuleDefinitionFile=".\SeraphyScriptTools.def"
-                               ProgramDatabaseFile=".\ReleaseUMinDependency/SeraphyScriptTools.pdb"
-                               SubSystem="2"
-                               ImportLibrary=".\ReleaseUMinDependency/SeraphyScriptTools.lib"/>
-                       <Tool
-                               Name="VCMIDLTool"
-                               TypeLibraryName=".\ReleaseUMinDependency/SeraphyScriptTools.tlb"/>
-                       <Tool
-                               Name="VCPostBuildEventTool"/>
-                       <Tool
-                               Name="VCPreBuildEventTool"/>
-                       <Tool
-                               Name="VCPreLinkEventTool"/>
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="NDEBUG"
-                               Culture="1041"/>
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"/>
-                       <Tool
-                               Name="VCWebDeploymentTool"/>
-               </Configuration>
-               <Configuration
-                       Name="Debug|Win32"
-                       OutputDirectory=".\Debug"
-                       IntermediateDirectory=".\Debug"
-                       ConfigurationType="2"
-                       UseOfMFC="0"
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE"
-                       CharacterSet="2">
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               Optimization="0"
-                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL"
-                               BasicRuntimeChecks="3"
-                               RuntimeLibrary="1"
-                               UsePrecompiledHeader="3"
-                               PrecompiledHeaderThrough="stdafx.h"
-                               PrecompiledHeaderFile=".\Debug/SeraphyScriptTools.pch"
-                               AssemblerListingLocation=".\Debug/"
-                               ObjectFile=".\Debug/"
-                               ProgramDataBaseFileName=".\Debug/"
-                               WarningLevel="3"
-                               SuppressStartupBanner="TRUE"
-                               DebugInformationFormat="4"/>
-                       <Tool
-                               Name="VCCustomBuildTool"
-                               Description="\93o\98^\82ð\8ds\82Á\82Ä\82¢\82Ü\82·"
-                               CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;
-echo regsvr32 exec. time &gt; &quot;$(OutDir)\regsvr32.trg&quot;
-"
-                               Outputs="$(OutDir)\regsvr32.trg"/>
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalOptions="/MACHINE:I386"
-                               AdditionalDependencies="comctl32.lib odbc32.lib odbccp32.lib version.lib"
-                               OutputFile=".\Debug/SeraphyScriptTools.dll"
-                               LinkIncremental="2"
-                               SuppressStartupBanner="TRUE"
-                               ModuleDefinitionFile=".\SeraphyScriptTools.def"
-                               GenerateDebugInformation="TRUE"
-                               ProgramDatabaseFile=".\Debug/SeraphyScriptTools.pdb"
-                               SubSystem="2"
-                               ImportLibrary=".\Debug/SeraphyScriptTools.lib"/>
-                       <Tool
-                               Name="VCMIDLTool"
-                               TypeLibraryName=".\Debug/SeraphyScriptTools.tlb"/>
-                       <Tool
-                               Name="VCPostBuildEventTool"/>
-                       <Tool
-                               Name="VCPreBuildEventTool"/>
-                       <Tool
-                               Name="VCPreLinkEventTool"/>
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="_DEBUG"
-                               Culture="1041"/>
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"/>
-                       <Tool
-                               Name="VCWebDeploymentTool"/>
-               </Configuration>
-               <Configuration
-                       Name="Unicode Release MinSize|Win32"
-                       OutputDirectory=".\ReleaseUMinSize"
-                       IntermediateDirectory=".\ReleaseUMinSize"
-                       ConfigurationType="2"
-                       UseOfMFC="0"
-                       UseOfATL="2"
-                       ATLMinimizesCRunTimeLibraryUsage="TRUE"
-                       CharacterSet="1">
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               InlineFunctionExpansion="1"
-                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL"
-                               StringPooling="TRUE"
-                               RuntimeLibrary="0"
-                               EnableFunctionLevelLinking="TRUE"
-                               UsePrecompiledHeader="3"
-                               PrecompiledHeaderThrough="stdafx.h"
-                               PrecompiledHeaderFile=".\ReleaseUMinSize/SeraphyScriptTools.pch"
-                               AssemblerListingLocation=".\ReleaseUMinSize/"
-                               ObjectFile=".\ReleaseUMinSize/"
-                               ProgramDataBaseFileName=".\ReleaseUMinSize/"
-                               WarningLevel="3"
-                               SuppressStartupBanner="TRUE"/>
-                       <Tool
-                               Name="VCCustomBuildTool"
-                               Description="\93o\98^\82ð\8ds\82Á\82Ä\82¢\82Ü\82·"
-                               CommandLine="if &quot;%OS%&quot;==&quot;&quot; goto NOTNT
-if not &quot;%OS%&quot;==&quot;Windows_NT&quot; goto NOTNT
-regsvr32 /s /c &quot;$(TargetPath)&quot;
-echo regsvr32 exec. time &gt; &quot;$(OutDir)\regsvr32.trg&quot;
-goto end
-:NOTNT
-echo \8cx\8d\90 : Windows 95 \82É Unicode DLL \82ð\93o\98^\82·\82é\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ
-:end
-"
-                               Outputs="$(OutDir)\regsvr32.trg"/>
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalOptions="/MACHINE:I386"
-                               AdditionalDependencies="comctl32.lib odbc32.lib odbccp32.lib"
-                               OutputFile=".\ReleaseUMinSize/SeraphyScriptTools.dll"
-                               LinkIncremental="1"
-                               SuppressStartupBanner="TRUE"
-                               ModuleDefinitionFile=".\SeraphyScriptTools.def"
-                               ProgramDatabaseFile=".\ReleaseUMinSize/SeraphyScriptTools.pdb"
-                               SubSystem="2"
-                               ImportLibrary=".\ReleaseUMinSize/SeraphyScriptTools.lib"/>
-                       <Tool
-                               Name="VCMIDLTool"
-                               TypeLibraryName=".\ReleaseUMinSize/SeraphyScriptTools.tlb"/>
-                       <Tool
-                               Name="VCPostBuildEventTool"/>
-                       <Tool
-                               Name="VCPreBuildEventTool"/>
-                       <Tool
-                               Name="VCPreLinkEventTool"/>
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="NDEBUG"
-                               Culture="1041"/>
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"/>
-                       <Tool
-                               Name="VCWebDeploymentTool"/>
-               </Configuration>
-               <Configuration
-                       Name="Release MinSize|Win32"
-                       OutputDirectory=".\ReleaseMinSize"
-                       IntermediateDirectory=".\ReleaseMinSize"
-                       ConfigurationType="2"
-                       UseOfMFC="0"
-                       UseOfATL="2"
-                       ATLMinimizesCRunTimeLibraryUsage="TRUE"
-                       CharacterSet="2">
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               InlineFunctionExpansion="1"
-                               PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL"
-                               StringPooling="TRUE"
-                               RuntimeLibrary="0"
-                               EnableFunctionLevelLinking="TRUE"
-                               UsePrecompiledHeader="3"
-                               PrecompiledHeaderThrough="stdafx.h"
-                               PrecompiledHeaderFile=".\ReleaseMinSize/SeraphyScriptTools.pch"
-                               AssemblerListingLocation=".\ReleaseMinSize/"
-                               ObjectFile=".\ReleaseMinSize/"
-                               ProgramDataBaseFileName=".\ReleaseMinSize/"
-                               WarningLevel="3"
-                               SuppressStartupBanner="TRUE"/>
-                       <Tool
-                               Name="VCCustomBuildTool"
-                               Description="\93o\98^\82ð\8ds\82Á\82Ä\82¢\82Ü\82·"
-                               CommandLine="regsvr32 /s /c &quot;$(TargetPath)&quot;
-echo regsvr32 exec. time &gt; &quot;$(OutDir)\regsvr32.trg&quot;
-"
-                               Outputs="$(OutDir)\regsvr32.trg"/>
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalOptions="/MACHINE:I386"
-                               AdditionalDependencies="comctl32.lib odbc32.lib odbccp32.lib"
-                               OutputFile=".\ReleaseMinSize/SeraphyScriptTools.dll"
-                               LinkIncremental="1"
-                               SuppressStartupBanner="TRUE"
-                               ModuleDefinitionFile=".\SeraphyScriptTools.def"
-                               ProgramDatabaseFile=".\ReleaseMinSize/SeraphyScriptTools.pdb"
-                               SubSystem="2"
-                               ImportLibrary=".\ReleaseMinSize/SeraphyScriptTools.lib"/>
-                       <Tool
-                               Name="VCMIDLTool"
-                               TypeLibraryName=".\ReleaseMinSize/SeraphyScriptTools.tlb"/>
-                       <Tool
-                               Name="VCPostBuildEventTool"/>
-                       <Tool
-                               Name="VCPreBuildEventTool"/>
-                       <Tool
-                               Name="VCPreLinkEventTool"/>
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="NDEBUG"
-                               Culture="1041"/>
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"/>
-                       <Tool
-                               Name="VCWebDeploymentTool"/>
-               </Configuration>
-               <Configuration
-                       Name="Unicode Debug|Win32"
-                       OutputDirectory=".\DebugU"
-                       IntermediateDirectory=".\DebugU"
-                       ConfigurationType="2"
-                       UseOfMFC="0"
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE"
-                       CharacterSet="1">
-                       <Tool
-                               Name="VCCLCompilerTool"
-                               Optimization="0"
-                               PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL"
-                               BasicRuntimeChecks="3"
-                               RuntimeLibrary="1"
-                               UsePrecompiledHeader="3"
-                               PrecompiledHeaderThrough="stdafx.h"
-                               PrecompiledHeaderFile=".\DebugU/SeraphyScriptTools.pch"
-                               AssemblerListingLocation=".\DebugU/"
-                               ObjectFile=".\DebugU/"
-                               ProgramDataBaseFileName=".\DebugU/"
-                               WarningLevel="3"
-                               SuppressStartupBanner="TRUE"
-                               DebugInformationFormat="4"/>
-                       <Tool
-                               Name="VCCustomBuildTool"
-                               Description="\93o\98^\82ð\8ds\82Á\82Ä\82¢\82Ü\82·"
-                               CommandLine="if &quot;%OS%&quot;==&quot;&quot; goto NOTNT
-if not &quot;%OS%&quot;==&quot;Windows_NT&quot; goto NOTNT
-regsvr32 /s /c &quot;$(TargetPath)&quot;
-echo regsvr32 exec. time &gt; &quot;$(OutDir)\regsvr32.trg&quot;
-goto end
-:NOTNT
-echo \8cx\8d\90 : Windows 95 \82É Unicode DLL \82ð\93o\98^\82·\82é\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ
-:end
-"
-                               Outputs="$(OutDir)\regsvr32.trg"/>
-                       <Tool
-                               Name="VCLinkerTool"
-                               AdditionalOptions="/MACHINE:I386"
-                               AdditionalDependencies="comctl32.lib odbc32.lib odbccp32.lib"
-                               OutputFile=".\DebugU/SeraphyScriptTools.dll"
-                               LinkIncremental="2"
-                               SuppressStartupBanner="TRUE"
-                               ModuleDefinitionFile=".\SeraphyScriptTools.def"
-                               GenerateDebugInformation="TRUE"
-                               ProgramDatabaseFile=".\DebugU/SeraphyScriptTools.pdb"
-                               SubSystem="2"
-                               ImportLibrary=".\DebugU/SeraphyScriptTools.lib"/>
-                       <Tool
-                               Name="VCMIDLTool"
-                               TypeLibraryName=".\DebugU/SeraphyScriptTools.tlb"/>
-                       <Tool
-                               Name="VCPostBuildEventTool"/>
-                       <Tool
-                               Name="VCPreBuildEventTool"/>
-                       <Tool
-                               Name="VCPreLinkEventTool"/>
-                       <Tool
-                               Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="_DEBUG"
-                               Culture="1041"/>
-                       <Tool
-                               Name="VCWebServiceProxyGeneratorTool"/>
-                       <Tool
-                               Name="VCWebDeploymentTool"/>
-               </Configuration>
-       </Configurations>
-       <Files>
-               <Filter
-                       Name="Source Files"
-                       Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
-                       <File
-                               RelativePath=".\CommDialog.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\Control.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\Draw.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\Event.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\Form.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\Instance.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\Layer.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\ObjectMap.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\ObjectVector.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\OverlappedWindow.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\PrivateProfile.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\ProfileSection.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\SeraphyScriptTools.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\SeraphyScriptTools.def">
-                       </File>
-                       <File
-                               RelativePath=".\SeraphyScriptTools.idl">
-                               <FileConfiguration
-                                       Name="Release MinDependency|Win32">
-                                       <Tool
-                                               Name="VCMIDLTool"
-                                               GenerateStublessProxies="TRUE"
-                                               TypeLibraryName=".\SeraphyScriptTools.tlb"
-                                               HeaderFileName="SeraphyScriptTools.h"
-                                               InterfaceIdentifierFileName="SeraphyScriptTools_i.c"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Unicode Release MinDependency|Win32">
-                                       <Tool
-                                               Name="VCMIDLTool"
-                                               GenerateStublessProxies="TRUE"
-                                               TypeLibraryName=".\SeraphyScriptTools.tlb"
-                                               HeaderFileName="SeraphyScriptTools.h"
-                                               InterfaceIdentifierFileName="SeraphyScriptTools_i.c"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Debug|Win32">
-                                       <Tool
-                                               Name="VCMIDLTool"
-                                               GenerateStublessProxies="TRUE"
-                                               TypeLibraryName=".\SeraphyScriptTools.tlb"
-                                               HeaderFileName="SeraphyScriptTools.h"
-                                               InterfaceIdentifierFileName="SeraphyScriptTools_i.c"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Unicode Release MinSize|Win32">
-                                       <Tool
-                                               Name="VCMIDLTool"
-                                               GenerateStublessProxies="TRUE"
-                                               TypeLibraryName=".\SeraphyScriptTools.tlb"
-                                               HeaderFileName="SeraphyScriptTools.h"
-                                               InterfaceIdentifierFileName="SeraphyScriptTools_i.c"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Release MinSize|Win32">
-                                       <Tool
-                                               Name="VCMIDLTool"
-                                               GenerateStublessProxies="TRUE"
-                                               TypeLibraryName=".\SeraphyScriptTools.tlb"
-                                               HeaderFileName="SeraphyScriptTools.h"
-                                               InterfaceIdentifierFileName="SeraphyScriptTools_i.c"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Unicode Debug|Win32">
-                                       <Tool
-                                               Name="VCMIDLTool"
-                                               GenerateStublessProxies="TRUE"
-                                               TypeLibraryName=".\SeraphyScriptTools.tlb"
-                                               HeaderFileName="SeraphyScriptTools.h"
-                                               InterfaceIdentifierFileName="SeraphyScriptTools_i.c"/>
-                               </FileConfiguration>
-                       </File>
-                       <File
-                               RelativePath=".\SeraphyScriptTools.rc">
-                               <FileConfiguration
-                                       Name="Release MinDependency|Win32">
-                                       <Tool
-                                               Name="VCResourceCompilerTool"
-                                               AdditionalIncludeDirectories="$(OUTDIR);$(NoInherit)"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Unicode Release MinDependency|Win32">
-                                       <Tool
-                                               Name="VCResourceCompilerTool"
-                                               AdditionalIncludeDirectories="$(OUTDIR);$(NoInherit)"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Debug|Win32">
-                                       <Tool
-                                               Name="VCResourceCompilerTool"
-                                               AdditionalIncludeDirectories="$(OUTDIR);$(NoInherit)"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Unicode Release MinSize|Win32">
-                                       <Tool
-                                               Name="VCResourceCompilerTool"
-                                               AdditionalIncludeDirectories="$(OUTDIR);$(NoInherit)"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Release MinSize|Win32">
-                                       <Tool
-                                               Name="VCResourceCompilerTool"
-                                               AdditionalIncludeDirectories="$(OUTDIR);$(NoInherit)"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Unicode Debug|Win32">
-                                       <Tool
-                                               Name="VCResourceCompilerTool"
-                                               AdditionalIncludeDirectories="$(OUTDIR);$(NoInherit)"/>
-                               </FileConfiguration>
-                       </File>
-                       <File
-                               RelativePath=".\Shell.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\StdAfx.cpp">
-                               <FileConfiguration
-                                       Name="Release MinDependency|Win32">
-                                       <Tool
-                                               Name="VCCLCompilerTool"
-                                               UsePrecompiledHeader="1"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Unicode Release MinDependency|Win32">
-                                       <Tool
-                                               Name="VCCLCompilerTool"
-                                               UsePrecompiledHeader="1"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Debug|Win32">
-                                       <Tool
-                                               Name="VCCLCompilerTool"
-                                               UsePrecompiledHeader="1"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Unicode Release MinSize|Win32">
-                                       <Tool
-                                               Name="VCCLCompilerTool"
-                                               UsePrecompiledHeader="1"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Release MinSize|Win32">
-                                       <Tool
-                                               Name="VCCLCompilerTool"
-                                               UsePrecompiledHeader="1"/>
-                               </FileConfiguration>
-                               <FileConfiguration
-                                       Name="Unicode Debug|Win32">
-                                       <Tool
-                                               Name="VCCLCompilerTool"
-                                               UsePrecompiledHeader="1"/>
-                               </FileConfiguration>
-                       </File>
-                       <File
-                               RelativePath=".\TreeItem.cpp">
-                       </File>
-                       <File
-                               RelativePath=".\generic.cpp">
-                       </File>
-               </Filter>
-               <Filter
-                       Name="Header Files"
-                       Filter="h;hpp;hxx;hm;inl">
-                       <File
-                               RelativePath=".\CommDialog.h">
-                       </File>
-                       <File
-                               RelativePath=".\Control.h">
-                       </File>
-                       <File
-                               RelativePath=".\Draw.h">
-                       </File>
-                       <File
-                               RelativePath=".\Event.h">
-                       </File>
-                       <File
-                               RelativePath=".\Form.h">
-                       </File>
-                       <File
-                               RelativePath=".\Instance.h">
-                       </File>
-                       <File
-                               RelativePath=".\Layer.h">
-                       </File>
-                       <File
-                               RelativePath=".\ObjectMap.h">
-                       </File>
-                       <File
-                               RelativePath=".\ObjectVector.h">
-                       </File>
-                       <File
-                               RelativePath=".\OverlappedWindow.h">
-                       </File>
-                       <File
-                               RelativePath=".\PrivateProfile.h">
-                       </File>
-                       <File
-                               RelativePath=".\ProfileSection.h">
-                       </File>
-                       <File
-                               RelativePath=".\Resource.h">
-                       </File>
-                       <File
-                               RelativePath=".\SeraphyScriptToolsCP.h">
-                       </File>
-                       <File
-                               RelativePath=".\Shell.h">
-                       </File>
-                       <File
-                               RelativePath=".\StdAfx.h">
-                       </File>
-                       <File
-                               RelativePath=".\TreeItem.h">
-                       </File>
-                       <File
-                               RelativePath=".\generic.h">
-                       </File>
-               </Filter>
-               <Filter
-                       Name="Resource Files"
-                       Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
-                       <File
-                               RelativePath=".\CommDialog.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\Control.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\Draw.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\EnumSelect.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\Event.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\Form.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\Instance.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\Layer.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\ObjectMap.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\ObjectVector.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\OverlappedWindow.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\ParseName.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\PrivateProfile.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\ProfileSection.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\Shell.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\ShellExecObj.rgs">
-                       </File>
-                       <File
-                               RelativePath=".\TreeItem.rgs">
-                       </File>
-               </Filter>
-               <File
-                       RelativePath=".\old.txt">
-               </File>
-       </Files>
-       <Globals>
-       </Globals>
-</VisualStudioProject>
index 252cbc8..9e913ff 100644 (file)
@@ -1,30 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
+    <ProjectConfiguration Include="MBCS Debug|Win32">
+      <Configuration>MBCS Debug</Configuration>
       <Platform>Win32</Platform>
     </ProjectConfiguration>
-    <ProjectConfiguration Include="Release MinDependency|Win32">
-      <Configuration>Release MinDependency</Configuration>
-      <Platform>Win32</Platform>
+    <ProjectConfiguration Include="MBCS Debug|x64">
+      <Configuration>MBCS Debug</Configuration>
+      <Platform>x64</Platform>
     </ProjectConfiguration>
-    <ProjectConfiguration Include="Release MinSize|Win32">
-      <Configuration>Release MinSize</Configuration>
+    <ProjectConfiguration Include="MBCS Release|Win32">
+      <Configuration>MBCS Release</Configuration>
       <Platform>Win32</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="MBCS Release|x64">
+      <Configuration>MBCS Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
     <ProjectConfiguration Include="Unicode Debug|Win32">
       <Configuration>Unicode Debug</Configuration>
       <Platform>Win32</Platform>
     </ProjectConfiguration>
-    <ProjectConfiguration Include="Unicode Release MinDependency|Win32">
-      <Configuration>Unicode Release MinDependency</Configuration>
-      <Platform>Win32</Platform>
+    <ProjectConfiguration Include="Unicode Debug|x64">
+      <Configuration>Unicode Debug</Configuration>
+      <Platform>x64</Platform>
     </ProjectConfiguration>
-    <ProjectConfiguration Include="Unicode Release MinSize|Win32">
-      <Configuration>Unicode Release MinSize</Configuration>
+    <ProjectConfiguration Include="Unicode Release|Win32">
+      <Configuration>Unicode Release</Configuration>
       <Platform>Win32</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Unicode Release|x64">
+      <Configuration>Unicode Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <SccProjectName />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release MinSize|Win32'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v120</PlatformToolset>
     <UseOfMfc>false</UseOfMfc>
-    <UseOfAtl>Dynamic</UseOfAtl>
     <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinSize|Win32'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <CharacterSet>Unicode</CharacterSet>
     <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
-    <UseOfAtl>Dynamic</UseOfAtl>
     <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release|Win32'" Label="Configuration">
+    <UseOfAtl>Static</UseOfAtl>
+    <CharacterSet>Unicode</CharacterSet>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <PlatformToolset>v120</PlatformToolset>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>MultiByte</CharacterSet>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'" Label="Configuration">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Release|Win32'" Label="Configuration">
+    <UseOfAtl>Static</UseOfAtl>
+    <CharacterSet>MultiByte</CharacterSet>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <PlatformToolset>v120</PlatformToolset>
-    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release|x64'" Label="Configuration">
     <UseOfAtl>Static</UseOfAtl>
     <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release MinDependency|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <PlatformToolset>v120</PlatformToolset>
-    <UseOfMfc>false</UseOfMfc>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Release|x64'" Label="Configuration">
     <UseOfAtl>Static</UseOfAtl>
-    <CharacterSet>MultiByte</CharacterSet>
+    <CharacterSet>Unicode</CharacterSet>
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <PlatformToolset>v120</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'" Label="PropertySheets">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release MinSize|Win32'" Label="PropertySheets">
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'" Label="PropertySheets">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinSize|Win32'" Label="PropertySheets">
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|x64'" Label="PropertySheets">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release|Win32'" Label="PropertySheets">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'" Label="PropertySheets">
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Release|Win32'" Label="PropertySheets">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release MinDependency|Win32'" Label="PropertySheets">
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Release|x64'" Label="PropertySheets">
     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
   </ImportGroup>
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
     <_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release MinDependency|Win32'">
-    <OutDir>.\ReleaseMinDependency\</OutDir>
-    <IntDir>.\ReleaseMinDependency\</IntDir>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release|Win32'">
     <LinkIncremental>false</LinkIncremental>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">
-    <OutDir>.\ReleaseUMinDependency\</OutDir>
-    <IntDir>.\ReleaseUMinDependency\</IntDir>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Release|Win32'">
     <LinkIncremental>false</LinkIncremental>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <OutDir>.\Debug\</OutDir>
-    <IntDir>.\Debug\</IntDir>
-    <LinkIncremental>true</LinkIncremental>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinSize|Win32'">
-    <OutDir>.\ReleaseUMinSize\</OutDir>
-    <IntDir>.\ReleaseUMinSize\</IntDir>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release|x64'">
     <LinkIncremental>false</LinkIncremental>
   </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release MinSize|Win32'">
-    <OutDir>.\ReleaseMinSize\</OutDir>
-    <IntDir>.\ReleaseMinSize\</IntDir>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Release|x64'">
     <LinkIncremental>false</LinkIncremental>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">
-    <OutDir>.\DebugU\</OutDir>
-    <IntDir>.\DebugU\</IntDir>
     <LinkIncremental>true</LinkIncremental>
   </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release MinDependency|Win32'">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release|Win32'">
+    <ClCompile>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>Create</PrecompiledHeader>
+      <Optimization>MinSpace</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <CustomBuildStep />
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <ImageHasSafeExceptionHandlers>true</ImageHasSafeExceptionHandlers>
+    </Link>
+    <Midl>
+      <TypeLibraryName>.\ReleaseUMinDependency/SeraphyScriptTools.tlb</TypeLibraryName>
+    </Midl>
+    <ResourceCompile />
+    <ResourceCompile>
+      <Culture>0x0411</Culture>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Release|Win32'">
     <ClCompile>
+      <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>Create</PrecompiledHeader>
       <Optimization>MinSpace</Optimization>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <CustomBuildStep />
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+    </Link>
+    <Midl>
+      <TypeLibraryName>.\ReleaseUMinDependency/SeraphyScriptTools.tlb</TypeLibraryName>
+    </Midl>
+    <ResourceCompile />
+    <ResourceCompile>
+      <Culture>0x0411</Culture>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release|x64'">
+    <ClCompile>
       <StringPooling>true</StringPooling>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
-      <PrecompiledHeaderOutputFile>.\ReleaseMinDependency/SeraphyScriptTools.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\ReleaseMinDependency/</AssemblerListingLocation>
-      <ObjectFileName>.\ReleaseMinDependency/</ObjectFileName>
-      <ProgramDataBaseFileName>.\ReleaseMinDependency/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <PrecompiledHeader>Create</PrecompiledHeader>
     </ClCompile>
-    <CustomBuildStep>
-      <Message>登録を行っています</Message>
-      <Command>regsvr32 /s /c "$(TargetPath)"
-echo regsvr32 exec. time &gt; "$(OutDir)regsvr32.trg"
-</Command>
-      <Outputs>$(OutDir)regsvr32.trg;%(Outputs)</Outputs>
-    </CustomBuildStep>
+    <CustomBuildStep />
     <Link>
-      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>comctl32.lib;odbc32.lib;odbccp32.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\ReleaseMinDependency/SeraphyScriptTools.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ModuleDefinitionFile>.\SeraphyScriptTools.def</ModuleDefinitionFile>
-      <ProgramDatabaseFile>.\ReleaseMinDependency/SeraphyScriptTools.pdb</ProgramDatabaseFile>
       <SubSystem>Windows</SubSystem>
-      <ImportLibrary>.\ReleaseMinDependency/SeraphyScriptTools.lib</ImportLibrary>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
     </Link>
     <Midl>
-      <TypeLibraryName>.\ReleaseMinDependency/SeraphyScriptTools.tlb</TypeLibraryName>
+      <TypeLibraryName>.\ReleaseUMinDependency/SeraphyScriptTools.tlb</TypeLibraryName>
     </Midl>
+    <ResourceCompile />
     <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0411</Culture>
     </ResourceCompile>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Release|x64'">
     <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
-      <PrecompiledHeaderOutputFile>.\ReleaseUMinDependency/SeraphyScriptTools.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\ReleaseUMinDependency/</AssemblerListingLocation>
-      <ObjectFileName>.\ReleaseUMinDependency/</ObjectFileName>
-      <ProgramDataBaseFileName>.\ReleaseUMinDependency/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <PrecompiledHeader>Create</PrecompiledHeader>
     </ClCompile>
-    <CustomBuildStep>
-      <Message>登録を行っています</Message>
-      <Command>if "%25OS%25"=="" goto NOTNT
-if not "%25OS%25"=="Windows_NT" goto NOTNT
-regsvr32 /s /c "$(TargetPath)"
-echo regsvr32 exec. time &gt; "$(OutDir)regsvr32.trg"
-goto end
-:NOTNT
-echo 警告 : Windows 95 に Unicode DLL を登録することはできません
-:end
-</Command>
-      <Outputs>$(OutDir)regsvr32.trg;%(Outputs)</Outputs>
-    </CustomBuildStep>
+    <CustomBuildStep />
     <Link>
-      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>comctl32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\ReleaseUMinDependency/SeraphyScriptTools.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ModuleDefinitionFile>.\SeraphyScriptTools.def</ModuleDefinitionFile>
-      <ProgramDatabaseFile>.\ReleaseUMinDependency/SeraphyScriptTools.pdb</ProgramDatabaseFile>
       <SubSystem>Windows</SubSystem>
-      <ImportLibrary>.\ReleaseUMinDependency/SeraphyScriptTools.lib</ImportLibrary>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
     </Link>
     <Midl>
       <TypeLibraryName>.\ReleaseUMinDependency/SeraphyScriptTools.tlb</TypeLibraryName>
     </Midl>
+    <ResourceCompile />
     <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0411</Culture>
     </ResourceCompile>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
-      <PrecompiledHeaderOutputFile>.\Debug/SeraphyScriptTools.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\Debug/</AssemblerListingLocation>
-      <ObjectFileName>.\Debug/</ObjectFileName>
-      <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <PrecompiledHeader>Create</PrecompiledHeader>
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
     </ClCompile>
-    <CustomBuildStep>
-      <Message>登録を行っています</Message>
-      <Command>regsvr32 /s /c "$(TargetPath)"
-echo regsvr32 exec. time &gt; "$(OutDir)regsvr32.trg"
-</Command>
-      <Outputs>$(OutDir)regsvr32.trg;%(Outputs)</Outputs>
-    </CustomBuildStep>
+    <CustomBuildStep />
     <Link>
-      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>comctl32.lib;odbc32.lib;odbccp32.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\Debug/SeraphyScriptTools.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ModuleDefinitionFile>.\SeraphyScriptTools.def</ModuleDefinitionFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\Debug/SeraphyScriptTools.pdb</ProgramDatabaseFile>
       <SubSystem>Windows</SubSystem>
-      <ImportLibrary>.\Debug/SeraphyScriptTools.lib</ImportLibrary>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
     </Link>
     <Midl>
-      <TypeLibraryName>.\Debug/SeraphyScriptTools.tlb</TypeLibraryName>
+      <TypeLibraryName>.\DebugU/SeraphyScriptTools.tlb</TypeLibraryName>
     </Midl>
+    <ResourceCompile />
     <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0411</Culture>
     </ResourceCompile>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinSize|Win32'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|Win32'">
     <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
-      <PrecompiledHeaderOutputFile>.\ReleaseUMinSize/SeraphyScriptTools.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\ReleaseUMinSize/</AssemblerListingLocation>
-      <ObjectFileName>.\ReleaseUMinSize/</ObjectFileName>
-      <ProgramDataBaseFileName>.\ReleaseUMinSize/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <Optimization>Disabled</Optimization>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeader>Create</PrecompiledHeader>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
     </ClCompile>
-    <CustomBuildStep>
-      <Message>登録を行っています</Message>
-      <Command>if "%25OS%25"=="" goto NOTNT
-if not "%25OS%25"=="Windows_NT" goto NOTNT
-regsvr32 /s /c "$(TargetPath)"
-echo regsvr32 exec. time &gt; "$(OutDir)regsvr32.trg"
-goto end
-:NOTNT
-echo 警告 : Windows 95 に Unicode DLL を登録することはできません
-:end
-</Command>
-      <Outputs>$(OutDir)regsvr32.trg;%(Outputs)</Outputs>
-    </CustomBuildStep>
+    <CustomBuildStep />
     <Link>
-      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>comctl32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\ReleaseUMinSize/SeraphyScriptTools.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ModuleDefinitionFile>.\SeraphyScriptTools.def</ModuleDefinitionFile>
-      <ProgramDatabaseFile>.\ReleaseUMinSize/SeraphyScriptTools.pdb</ProgramDatabaseFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Windows</SubSystem>
-      <ImportLibrary>.\ReleaseUMinSize/SeraphyScriptTools.lib</ImportLibrary>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
     </Link>
     <Midl>
-      <TypeLibraryName>.\ReleaseUMinSize/SeraphyScriptTools.tlb</TypeLibraryName>
+      <TypeLibraryName>.\DebugU/SeraphyScriptTools.tlb</TypeLibraryName>
     </Midl>
+    <ResourceCompile />
     <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0411</Culture>
     </ResourceCompile>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release MinSize|Win32'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">
     <ClCompile>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
-      <PrecompiledHeaderOutputFile>.\ReleaseMinSize/SeraphyScriptTools.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\ReleaseMinSize/</AssemblerListingLocation>
-      <ObjectFileName>.\ReleaseMinSize/</ObjectFileName>
-      <ProgramDataBaseFileName>.\ReleaseMinSize/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <Optimization>Disabled</Optimization>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <PrecompiledHeader>Create</PrecompiledHeader>
     </ClCompile>
-    <CustomBuildStep>
-      <Message>登録を行っています</Message>
-      <Command>regsvr32 /s /c "$(TargetPath)"
-echo regsvr32 exec. time &gt; "$(OutDir)regsvr32.trg"
-</Command>
-      <Outputs>$(OutDir)regsvr32.trg;%(Outputs)</Outputs>
-    </CustomBuildStep>
+    <CustomBuildStep />
     <Link>
-      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>comctl32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\ReleaseMinSize/SeraphyScriptTools.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ModuleDefinitionFile>.\SeraphyScriptTools.def</ModuleDefinitionFile>
-      <ProgramDatabaseFile>.\ReleaseMinSize/SeraphyScriptTools.pdb</ProgramDatabaseFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Windows</SubSystem>
-      <ImportLibrary>.\ReleaseMinSize/SeraphyScriptTools.lib</ImportLibrary>
     </Link>
     <Midl>
-      <TypeLibraryName>.\ReleaseMinSize/SeraphyScriptTools.tlb</TypeLibraryName>
+      <TypeLibraryName>.\DebugU/SeraphyScriptTools.tlb</TypeLibraryName>
     </Midl>
+    <ResourceCompile />
     <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0411</Culture>
     </ResourceCompile>
   </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|x64'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>Use</PrecompiledHeader>
-      <PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
-      <PrecompiledHeaderOutputFile>.\DebugU/SeraphyScriptTools.pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\DebugU/</AssemblerListingLocation>
-      <ObjectFileName>.\DebugU/</ObjectFileName>
-      <ProgramDataBaseFileName>.\DebugU/</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <PrecompiledHeader>Create</PrecompiledHeader>
     </ClCompile>
-    <CustomBuildStep>
-      <Message>登録を行っています</Message>
-      <Command>if "%25OS%25"=="" goto NOTNT
-if not "%25OS%25"=="Windows_NT" goto NOTNT
-regsvr32 /s /c "$(TargetPath)"
-echo regsvr32 exec. time &gt; "$(OutDir)regsvr32.trg"
-goto end
-:NOTNT
-echo 警告 : Windows 95 に Unicode DLL を登録することはできません
-:end
-</Command>
-      <Outputs>$(OutDir)regsvr32.trg;%(Outputs)</Outputs>
-    </CustomBuildStep>
+    <CustomBuildStep />
     <Link>
-      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>comctl32.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <OutputFile>.\DebugU/SeraphyScriptTools.dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ModuleDefinitionFile>.\SeraphyScriptTools.def</ModuleDefinitionFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>.\DebugU/SeraphyScriptTools.pdb</ProgramDatabaseFile>
       <SubSystem>Windows</SubSystem>
-      <ImportLibrary>.\DebugU/SeraphyScriptTools.lib</ImportLibrary>
     </Link>
     <Midl>
       <TypeLibraryName>.\DebugU/SeraphyScriptTools.tlb</TypeLibraryName>
     </Midl>
+    <ResourceCompile />
     <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <Culture>0x0411</Culture>
     </ResourceCompile>
   </ItemDefinitionGroup>
@@ -412,12 +333,14 @@ echo 警告 : Windows 95 に Unicode DLL を登録することはできません
     <ClCompile Include="SeraphyScriptTools.cpp" />
     <ClCompile Include="Shell.cpp" />
     <ClCompile Include="StdAfx.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release MinDependency|Win32'">Create</PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release MinSize|Win32'">Create</PrecompiledHeader>
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">Create</PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">Create</PrecompiledHeader>
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinSize|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|x64'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Unicode Release|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='MBCS Release|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Unicode Release|x64'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='MBCS Release|x64'">Create</PrecompiledHeader>
     </ClCompile>
     <ClCompile Include="TreeItem.cpp" />
   </ItemGroup>
@@ -443,40 +366,50 @@ echo 警告 : Windows 95 に Unicode DLL を登録することはできません
   </ItemGroup>
   <ItemGroup>
     <Midl Include="SeraphyScriptTools.idl">
-      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</GenerateStublessProxies>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\SeraphyScriptTools.tlb</TypeLibraryName>
-      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">SeraphyScriptTools.h</HeaderFileName>
-      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
-      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Release MinDependency|Win32'">true</GenerateStublessProxies>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Release MinDependency|Win32'">.\SeraphyScriptTools.tlb</TypeLibraryName>
-      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Release MinDependency|Win32'">SeraphyScriptTools.h</HeaderFileName>
-      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Release MinDependency|Win32'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
-      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Release MinSize|Win32'">true</GenerateStublessProxies>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Release MinSize|Win32'">.\SeraphyScriptTools.tlb</TypeLibraryName>
-      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Release MinSize|Win32'">SeraphyScriptTools.h</HeaderFileName>
-      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Release MinSize|Win32'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
       <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</GenerateStublessProxies>
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|Win32'">true</GenerateStublessProxies>
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</GenerateStublessProxies>
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|x64'">true</GenerateStublessProxies>
       <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">.\SeraphyScriptTools.tlb</TypeLibraryName>
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|Win32'">.\SeraphyScriptTools.tlb</TypeLibraryName>
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">.\SeraphyScriptTools.tlb</TypeLibraryName>
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|x64'">.\SeraphyScriptTools.tlb</TypeLibraryName>
       <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">SeraphyScriptTools.h</HeaderFileName>
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|Win32'">SeraphyScriptTools.h</HeaderFileName>
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">SeraphyScriptTools.h</HeaderFileName>
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|x64'">SeraphyScriptTools.h</HeaderFileName>
       <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
-      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</GenerateStublessProxies>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">.\SeraphyScriptTools.tlb</TypeLibraryName>
-      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">SeraphyScriptTools.h</HeaderFileName>
-      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
-      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinSize|Win32'">true</GenerateStublessProxies>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinSize|Win32'">.\SeraphyScriptTools.tlb</TypeLibraryName>
-      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinSize|Win32'">SeraphyScriptTools.h</HeaderFileName>
-      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinSize|Win32'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|Win32'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|x64'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Release|Win32'">true</GenerateStublessProxies>
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='MBCS Release|Win32'">true</GenerateStublessProxies>
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Release|x64'">true</GenerateStublessProxies>
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='MBCS Release|x64'">true</GenerateStublessProxies>
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Release|Win32'">.\SeraphyScriptTools.tlb</TypeLibraryName>
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='MBCS Release|Win32'">.\SeraphyScriptTools.tlb</TypeLibraryName>
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Release|x64'">.\SeraphyScriptTools.tlb</TypeLibraryName>
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='MBCS Release|x64'">.\SeraphyScriptTools.tlb</TypeLibraryName>
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release|Win32'">SeraphyScriptTools.h</HeaderFileName>
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='MBCS Release|Win32'">SeraphyScriptTools.h</HeaderFileName>
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release|x64'">SeraphyScriptTools.h</HeaderFileName>
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='MBCS Release|x64'">SeraphyScriptTools.h</HeaderFileName>
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release|Win32'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='MBCS Release|Win32'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release|x64'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='MBCS Release|x64'">SeraphyScriptTools_i.c</InterfaceIdentifierFileName>
     </Midl>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="SeraphyScriptTools.rc">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(OUTDIR)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release MinDependency|Win32'">$(OUTDIR)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release MinSize|Win32'">$(OUTDIR)</AdditionalIncludeDirectories>
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">$(OUTDIR)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">$(OUTDIR)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinSize|Win32'">$(OUTDIR)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|Win32'">$(OUTDIR)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">$(OUTDIR)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='MBCS Debug|x64'">$(OUTDIR)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Release|Win32'">$(OUTDIR)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='MBCS Release|Win32'">$(OUTDIR)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Release|x64'">$(OUTDIR)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='MBCS Release|x64'">$(OUTDIR)</AdditionalIncludeDirectories>
     </ResourceCompile>
   </ItemGroup>
   <ItemGroup>
index 5b5968e..c0e91cf 100644 (file)
--- a/Shell.cpp
+++ b/Shell.cpp
@@ -4,8 +4,11 @@
 #include "Shell.h"
 #include "generic.h"
 #include <list>
+#include <vector>
 using namespace std;
 
+#pragma comment(lib, "Version.lib")
+
 /////////////////////////////////////////////////////////////////////////////
 // CShell
 
@@ -25,67 +28,73 @@ STDMETHODIMP CShell::InterfaceSupportsErrorInfo(REFIID riid)
 
 STDMETHODIMP CShell::ShellExecute(VARIANT path, VARIANT param, VARIANT initdir, VARIANT show, VARIANT *punkVal)
 {
-       CComVariant varPath,varParam,varInitDir,varMode;
-       CHAR szPath[MAX_PATH] = { 0 };
-       CHAR szInitDir[MAX_PATH] = { 0 };
-       int nShow = SW_SHOWNORMAL;
-       LPSTR pBuf = NULL;
-       if(varPath.ChangeType(VT_BSTR,&path) == S_OK){
-               WideCharToMultiByte(GetACP(),0,varPath.bstrVal,-1,szPath,MAX_PATH,NULL,NULL);
+       ATL::CString szPath;
+       CComVariant varPath;
+       if (varPath.ChangeType(VT_BSTR, &path) == S_OK) {
+               szPath = varPath.bstrVal;
        }
-       if(varParam.ChangeType(VT_BSTR,&param) == S_OK){
-               int needsize = WideCharToMultiByte(GetACP(),0,varParam.bstrVal,-1,NULL,0,NULL,NULL);
-               pBuf = new CHAR[needsize+1];
-               WideCharToMultiByte(GetACP(),0,varParam.bstrVal,-1,pBuf,needsize,NULL,NULL);
+
+       ATL::CString szParam;
+       CComVariant varParam;
+       if (varParam.ChangeType(VT_BSTR, &param) == S_OK) {
+               szParam = varParam.bstrVal;
        }
-       if(varInitDir.ChangeType(VT_BSTR,&initdir) == S_OK){
-               WideCharToMultiByte(GetACP(),0,varInitDir.bstrVal,-1,szInitDir,MAX_PATH,NULL,NULL);
+
+       ATL::CString szInitDir;
+       CComVariant varInitDir;
+       if (varInitDir.ChangeType(VT_BSTR, &initdir) == S_OK) {
+               szInitDir = varInitDir.bstrVal;
        }
-       if(varMode.ChangeType(VT_I2,&show) == S_OK){
-               switch(varMode.iVal)
+
+       int nShow = SW_SHOWNORMAL;
+       CComVariant varMode;
+       if (varMode.ChangeType(VT_I2, &show) == S_OK) {
+               switch (varMode.iVal)
                {
                case 0:
                        nShow = SW_HIDE;
                        break;
+
                case 1:
                default:
                        nShow = SW_SHOWNORMAL;
                        break;
+
                case 2:
                        nShow = SW_SHOWMAXIMIZED;
                        break;
+
                case 3:
                        nShow = SW_SHOWMINIMIZED;
                        break;
+
                case 4:
                        nShow = SW_SHOWMINNOACTIVE;
                        break;
                }
        }
+
        //
        SHELLEXECUTEINFO info = {0};
        info.cbSize = sizeof(SHELLEXECUTEINFO);
        info.fMask  = SEE_MASK_DOENVSUBST | SEE_MASK_NOCLOSEPROCESS;
        info.hwnd   = GetMainWindow();
-       info.lpVerb = "OPEN";
+       info.lpVerb = _TEXT("OPEN");
        info.lpFile = szPath;
-       info.lpParameters = pBuf;
+       info.lpParameters = szParam;
        info.lpDirectory  = szInitDir;
        info.nShow  = nShow;
-       if(ShellExecuteEx(&info)){
+       if (ShellExecuteEx(&info)) {
                // ShellExecObj\82Ì\90\90¬
                CComObject<CShellExecObj>* pExec = NULL;
-               if(pExec->CreateInstance(&pExec) == S_OK){
+               if (pExec->CreateInstance(&pExec) == S_OK) {
                        pExec->m_hProcess = info.hProcess;
                        IUnknown* pUnk = NULL;
-                       pExec->QueryInterface(IID_IUnknown,(void**)&pUnk);
+                       pExec->QueryInterface(IID_IUnknown, (void**)&pUnk);
                        punkVal->vt      = VT_UNKNOWN;
                        punkVal->punkVal = pUnk;
                }
        }
-       if(pBuf){
-               delete[]pBuf;
-       }
        return S_OK;
 }
 
@@ -97,33 +106,33 @@ STDMETHODIMP CShellExecObj::Wait(VARIANT tim, VARIANT *pVal)
 {
        ::VariantInit(pVal);
        BOOL bExit = true;
-       if(m_hProcess){
+       if (m_hProcess) {
                CComVariant varTim;
                DWORD dwWaitTime = 0;
-               if(varTim.ChangeType(VT_I4,&tim) == S_OK){
-                       if(varTim.lVal < 0){
+               if (varTim.ChangeType(VT_I4, &tim) == S_OK) {
+                       if (varTim.lVal < 0) {
                                // \96³\8cÀ\82Ü\82¿
                                dwWaitTime = INFINITE;
                        }
-                       else{
+                       else {
                                dwWaitTime = (DWORD)varTim.lVal;
                        }
                }
-               DWORD ret = WaitForSingleObject(m_hProcess,dwWaitTime);
-               if(ret == WAIT_TIMEOUT){
+               DWORD ret = WaitForSingleObject(m_hProcess, dwWaitTime);
+               if (ret == WAIT_TIMEOUT) {
                        // \83v\83\8d\83Z\83X\82Í\8fI\97¹\82µ\82Ä\82¢\82È\82¢
                        bExit = false;
                }
        }
        pVal->vt      = VT_BOOL;
-       pVal->boolVal = bExit?VB_TRUE:VB_FALSE;
+       pVal->boolVal = bExit ? VB_TRUE : VB_FALSE;
        return S_OK;
 }
 
 STDMETHODIMP CShellExecObj::get_ExitCode(long *pVal)
 {
-       if(m_hProcess){
-               GetExitCodeProcess(m_hProcess,(DWORD*)pVal);
+       if (m_hProcess) {
+               GetExitCodeProcess(m_hProcess, (DWORD*)pVal);
        }
        return S_OK;
 }
@@ -131,113 +140,116 @@ STDMETHODIMP CShellExecObj::get_ExitCode(long *pVal)
 class SPECIALFOLDERPAIR
 {
 public:
-       SPECIALFOLDERPAIR(LPCSTR arg_name,int arg_id){
+       SPECIALFOLDERPAIR(LPCTSTR arg_name, int arg_id) {
                name = arg_name;
                id   = arg_id;
        }
-       LPCSTR name;
+       LPCTSTR name;
        int id;
 };
 
 STDMETHODIMP CShell::GetSpecialFolderLocations(IUnknown *punkVal)
 {
-       if(!punkVal){
+       if (!punkVal) {
                return E_FAIL;
        }
+
        IObjectMap* pMap = NULL;
-       if(punkVal->QueryInterface(IID_IObjectMap,(void**)&pMap) != S_OK){
+       if (punkVal->QueryInterface(IID_IObjectMap, (void**)&pMap) != S_OK) {
                return DISP_E_TYPEMISMATCH;
        }
+
        // \83V\83X\83e\83\80\83o\81[\83W\83\87\83\93\83`\83F\83b\83N
        BOOL bWinNT;
        get_IsWindowNT(&bWinNT);
        // NT\8cn\82Ì\8fê\8d\87\82Æ9x\8cn\82Ì\8fê\8d\87\82Æ\82Í\8eæ\93¾\82Å\82«\82é\83t\83H\83\8b\83_\82Ì\8eí\97Þ\82ª\82¿\82ª\82¤\82Ì\82Å\95ª\82¯\82Ä\82¨\82­
-       list<SPECIALFOLDERPAIR> lst;
-       if(bWinNT){
+       std::list<SPECIALFOLDERPAIR> lst;
+       if (bWinNT) {
                // WINNT
-               lst.push_back(SPECIALFOLDERPAIR("ADMINTOOLS",CSIDL_ADMINTOOLS));
-               lst.push_back(SPECIALFOLDERPAIR("ALTSTARTUP",CSIDL_ALTSTARTUP));
-               lst.push_back(SPECIALFOLDERPAIR("APPDATA",CSIDL_APPDATA));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_ADMINTOOLS",CSIDL_COMMON_ADMINTOOLS));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_ALTSTARTUP",CSIDL_COMMON_ALTSTARTUP));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_APPDATA",CSIDL_COMMON_APPDATA));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_DESKTOPDIRECTORY",CSIDL_COMMON_DESKTOPDIRECTORY));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_DOCUMENTS",CSIDL_COMMON_DOCUMENTS));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_FAVORITES",CSIDL_COMMON_FAVORITES));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_PROGRAMS",CSIDL_COMMON_PROGRAMS));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_STARTMENU",CSIDL_COMMON_STARTMENU));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_STARTUP",CSIDL_COMMON_STARTUP));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_TEMPLATES",CSIDL_COMMON_TEMPLATES));
-               lst.push_back(SPECIALFOLDERPAIR("COOKIES",CSIDL_COOKIES));
-               lst.push_back(SPECIALFOLDERPAIR("DESKTOPDIRECTORY",CSIDL_DESKTOPDIRECTORY));
-               lst.push_back(SPECIALFOLDERPAIR("FAVORITES",CSIDL_FAVORITES));
-               lst.push_back(SPECIALFOLDERPAIR("FONTS",CSIDL_FONTS ));
-               lst.push_back(SPECIALFOLDERPAIR("HISTORY",CSIDL_HISTORY));
-               lst.push_back(SPECIALFOLDERPAIR("INTERNET_CACHE ",CSIDL_INTERNET_CACHE ));
-               lst.push_back(SPECIALFOLDERPAIR("LOCAL_APPDATA ",CSIDL_LOCAL_APPDATA ));
-               lst.push_back(SPECIALFOLDERPAIR("MYPICTURES",CSIDL_MYPICTURES));
-               lst.push_back(SPECIALFOLDERPAIR("NETHOOD",CSIDL_NETHOOD));
-               lst.push_back(SPECIALFOLDERPAIR("PERSONAL",CSIDL_PERSONAL));
-               lst.push_back(SPECIALFOLDERPAIR("PRINTHOOD",CSIDL_PRINTHOOD));
-               lst.push_back(SPECIALFOLDERPAIR("PROFILE ",CSIDL_PROFILE ));
-               lst.push_back(SPECIALFOLDERPAIR("PROGRAM_FILES",CSIDL_PROGRAM_FILES));
-               lst.push_back(SPECIALFOLDERPAIR("PROGRAM_FILES_COMMON",CSIDL_PROGRAM_FILES_COMMON));
-               lst.push_back(SPECIALFOLDERPAIR("PROGRAMS",CSIDL_PROGRAMS));
-               lst.push_back(SPECIALFOLDERPAIR("RECENT",CSIDL_RECENT ));
-               lst.push_back(SPECIALFOLDERPAIR("SENDTO",CSIDL_SENDTO ));
-               lst.push_back(SPECIALFOLDERPAIR("STARTMENU",CSIDL_STARTMENU));
-               lst.push_back(SPECIALFOLDERPAIR("STARTUP",CSIDL_STARTUP));
-               lst.push_back(SPECIALFOLDERPAIR("SYSTEM",CSIDL_SYSTEM));
-               lst.push_back(SPECIALFOLDERPAIR("TEMPLATES",CSIDL_TEMPLATES));
-               lst.push_back(SPECIALFOLDERPAIR("WINDOWS",CSIDL_WINDOWS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("ADMINTOOLS"), CSIDL_ADMINTOOLS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("ALTSTARTUP"), CSIDL_ALTSTARTUP));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("APPDATA"), CSIDL_APPDATA));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_ADMINTOOLS"), CSIDL_COMMON_ADMINTOOLS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_ALTSTARTUP"), CSIDL_COMMON_ALTSTARTUP));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_APPDATA"), CSIDL_COMMON_APPDATA));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_DESKTOPDIRECTORY"), CSIDL_COMMON_DESKTOPDIRECTORY));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_DOCUMENTS"), CSIDL_COMMON_DOCUMENTS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_FAVORITES"), CSIDL_COMMON_FAVORITES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_PROGRAMS"), CSIDL_COMMON_PROGRAMS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_STARTMENU"), CSIDL_COMMON_STARTMENU));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_STARTUP"), CSIDL_COMMON_STARTUP));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_TEMPLATES"), CSIDL_COMMON_TEMPLATES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COOKIES"), CSIDL_COOKIES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("DESKTOPDIRECTORY"), CSIDL_DESKTOPDIRECTORY));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("FAVORITES"), CSIDL_FAVORITES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("FONTS"), CSIDL_FONTS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("HISTORY"), CSIDL_HISTORY));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("INTERNET_CACHE"), CSIDL_INTERNET_CACHE));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("LOCAL_APPDATA"), CSIDL_LOCAL_APPDATA));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("MYPICTURES"), CSIDL_MYPICTURES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("NETHOOD"), CSIDL_NETHOOD));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PERSONAL"), CSIDL_PERSONAL));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PRINTHOOD"), CSIDL_PRINTHOOD));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PROFILE"), CSIDL_PROFILE));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PROGRAM_FILES"), CSIDL_PROGRAM_FILES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PROGRAM_FILES_COMMON"), CSIDL_PROGRAM_FILES_COMMON));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PROGRAMS"), CSIDL_PROGRAMS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("RECENT"), CSIDL_RECENT));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("SENDTO"), CSIDL_SENDTO));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("STARTMENU"), CSIDL_STARTMENU));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("STARTUP"), CSIDL_STARTUP));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("SYSTEM"), CSIDL_SYSTEM));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("TEMPLATES"), CSIDL_TEMPLATES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("WINDOWS"), CSIDL_WINDOWS));
        }
        else{
                // Win9x
-               lst.push_back(SPECIALFOLDERPAIR("ADMINTOOLS",CSIDL_ADMINTOOLS));
-               lst.push_back(SPECIALFOLDERPAIR("ALTSTARTUP",CSIDL_ALTSTARTUP));
-               lst.push_back(SPECIALFOLDERPAIR("APPDATA",CSIDL_APPDATA));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_ADMINTOOLS",CSIDL_ADMINTOOLS));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_ALTSTARTUP",CSIDL_ALTSTARTUP));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_APPDATA",CSIDL_APPDATA));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_DESKTOPDIRECTORY",CSIDL_DESKTOPDIRECTORY));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_DOCUMENTS",CSIDL_COMMON_DOCUMENTS));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_FAVORITES",CSIDL_FAVORITES));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_PROGRAMS",CSIDL_PROGRAMS));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_STARTMENU",CSIDL_STARTMENU));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_STARTUP",CSIDL_STARTUP));
-               lst.push_back(SPECIALFOLDERPAIR("COMMON_TEMPLATES",CSIDL_TEMPLATES));
-               lst.push_back(SPECIALFOLDERPAIR("COOKIES",CSIDL_COOKIES));
-               lst.push_back(SPECIALFOLDERPAIR("DESKTOPDIRECTORY",CSIDL_DESKTOPDIRECTORY));
-               lst.push_back(SPECIALFOLDERPAIR("FAVORITES",CSIDL_FAVORITES));
-               lst.push_back(SPECIALFOLDERPAIR("FONTS",CSIDL_FONTS ));
-               lst.push_back(SPECIALFOLDERPAIR("HISTORY",CSIDL_HISTORY));
-               lst.push_back(SPECIALFOLDERPAIR("INTERNET_CACHE ",CSIDL_INTERNET_CACHE ));
-               lst.push_back(SPECIALFOLDERPAIR("LOCAL_APPDATA ",CSIDL_LOCAL_APPDATA ));
-               lst.push_back(SPECIALFOLDERPAIR("MYPICTURES",CSIDL_MYPICTURES));
-               lst.push_back(SPECIALFOLDERPAIR("NETHOOD",CSIDL_NETHOOD));
-               lst.push_back(SPECIALFOLDERPAIR("PERSONAL",CSIDL_PERSONAL));
-               lst.push_back(SPECIALFOLDERPAIR("PRINTHOOD",CSIDL_PRINTHOOD));
-               lst.push_back(SPECIALFOLDERPAIR("PROFILE ",CSIDL_PROFILE ));
-               lst.push_back(SPECIALFOLDERPAIR("PROGRAM_FILES",CSIDL_PROGRAM_FILES));
-               lst.push_back(SPECIALFOLDERPAIR("PROGRAM_FILES_COMMON",CSIDL_PROGRAM_FILES));
-               lst.push_back(SPECIALFOLDERPAIR("PROGRAMS",CSIDL_PROGRAMS));
-               lst.push_back(SPECIALFOLDERPAIR("RECENT",CSIDL_RECENT ));
-               lst.push_back(SPECIALFOLDERPAIR("SENDTO",CSIDL_SENDTO ));
-               lst.push_back(SPECIALFOLDERPAIR("STARTMENU",CSIDL_STARTMENU));
-               lst.push_back(SPECIALFOLDERPAIR("STARTUP",CSIDL_STARTUP));
-               lst.push_back(SPECIALFOLDERPAIR("SYSTEM",CSIDL_SYSTEM));
-               lst.push_back(SPECIALFOLDERPAIR("TEMPLATES",CSIDL_TEMPLATES));
-               lst.push_back(SPECIALFOLDERPAIR("WINDOWS",CSIDL_WINDOWS));
-       }
-       list<SPECIALFOLDERPAIR>::iterator p = lst.begin();
-       while(p != lst.end()){
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("ADMINTOOLS"), CSIDL_ADMINTOOLS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("ALTSTARTUP"), CSIDL_ALTSTARTUP));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("APPDATA"), CSIDL_APPDATA));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_ADMINTOOLS"), CSIDL_ADMINTOOLS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_ALTSTARTUP"), CSIDL_ALTSTARTUP));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_APPDATA"), CSIDL_APPDATA));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_DESKTOPDIRECTORY"), CSIDL_DESKTOPDIRECTORY));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_DOCUMENTS"), CSIDL_COMMON_DOCUMENTS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_FAVORITES"), CSIDL_FAVORITES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_PROGRAMS"), CSIDL_PROGRAMS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_STARTMENU"), CSIDL_STARTMENU));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_STARTUP"), CSIDL_STARTUP));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COMMON_TEMPLATES"), CSIDL_TEMPLATES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("COOKIES"), CSIDL_COOKIES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("DESKTOPDIRECTORY"), CSIDL_DESKTOPDIRECTORY));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("FAVORITES"), CSIDL_FAVORITES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("FONTS"), CSIDL_FONTS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("HISTORY"), CSIDL_HISTORY));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("INTERNET_CACHE"), CSIDL_INTERNET_CACHE));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("LOCAL_APPDATA"), CSIDL_LOCAL_APPDATA));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("MYPICTURES"), CSIDL_MYPICTURES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("NETHOOD"), CSIDL_NETHOOD));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PERSONAL"), CSIDL_PERSONAL));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PRINTHOOD"), CSIDL_PRINTHOOD));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PROFILE"), CSIDL_PROFILE));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PROGRAM_FILES"), CSIDL_PROGRAM_FILES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PROGRAM_FILES_COMMON"), CSIDL_PROGRAM_FILES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("PROGRAMS"), CSIDL_PROGRAMS));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("RECENT"), CSIDL_RECENT));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("SENDTO"), CSIDL_SENDTO));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("STARTMENU"), CSIDL_STARTMENU));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("STARTUP"), CSIDL_STARTUP));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("SYSTEM"), CSIDL_SYSTEM));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("TEMPLATES"), CSIDL_TEMPLATES));
+               lst.push_back(SPECIALFOLDERPAIR(_TEXT("WINDOWS"), CSIDL_WINDOWS));
+       }
+
+       std::list<SPECIALFOLDERPAIR>::iterator p = lst.begin();
+       while (p != lst.end()) {
                LPITEMIDLIST pid = NULL;
-               if(SHGetSpecialFolderLocation(NULL,(*p).id,&pid) == NOERROR){
-                       CHAR buf[MAX_PATH] = {0};
-                       if(SHGetPathFromIDList(pid,buf)){
-                               CComVariant key((LPCSTR)(*p).name);
-                               CComVariant value((LPCSTR)buf);
-                               pMap->put_Value(key,value);
+               if (SHGetSpecialFolderLocation(NULL, (*p).id, &pid) == NOERROR) {
+                       TCHAR buf[MAX_PATH] = {0};
+                       if (SHGetPathFromIDList(pid, buf)) {
+                               CComVariant key((*p).name);
+                               CComVariant value(buf);
+                               pMap->put_Value(key, value);
                        }
                        m_pMalloc->Free(pid);
                }
@@ -264,7 +276,7 @@ STDMETHODIMP CShell::get_WindowsVersion(long *pVal)
        OSVERSIONINFO vinfo = {0};
        vinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
        GetVersionEx(&vinfo);
-       if(vinfo.dwPlatformId == VER_PLATFORM_WIN32_NT){
+       if (vinfo.dwPlatformId == VER_PLATFORM_WIN32_NT) {
                *pVal = (long)vinfo.dwMajorVersion;
        }
        return S_OK;
@@ -272,41 +284,49 @@ STDMETHODIMP CShell::get_WindowsVersion(long *pVal)
 
 STDMETHODIMP CShell::GetDLLVersion(VARIANT text,VARIANT min, VARIANT *pVal)
 {
-       CComVariant varText,varMin;
-       CHAR lpszDllName[MAX_PATH] = { 0 };
-       if(varText.ChangeType(VT_BSTR,&text) == S_OK){
-               WideCharToMultiByte(GetACP(),0,varText.bstrVal,-1,lpszDllName,MAX_PATH,NULL,NULL);
+       ATL::CString lpszDllName;
+       CComVariant varText;
+       if (varText.ChangeType(VT_BSTR,&text) == S_OK) {
+               lpszDllName = varText.bstrVal;
        }
+
        BOOL bMin = false;
+       CComVariant varMin;
        if(varMin.ChangeType(VT_I2,&min) == S_OK){
                bMin = varMin.iVal;
        }
+
        CComVariant ret;
        DWORD siz = GetFileVersionInfoSize(lpszDllName,0);
-       if(siz){
-               LPBYTE pBuf = new BYTE[siz+1];
-               if(GetFileVersionInfo(lpszDllName,0,siz,pBuf)){
+       if (siz) {
+               std::vector<BYTE> buf(siz + 1);
+               LPBYTE pBuf = &buf[0];
+               if (GetFileVersionInfo(lpszDllName, 0, siz,pBuf)) {
                        // \83o\81[\83W\83\87\83\93\8fî\95ñ\82ð\8eæ\93¾\82·\82é
                        VS_FIXEDFILEINFO* pverInfo;
                        UINT sz = 0;
-                       if(VerQueryValue(pBuf,"\\",(void**)&pverInfo,&sz)){
+                       if (VerQueryValue(pBuf,_TEXT("\\"), (void**) &pverInfo, &sz)) {
                                // \83o\81[\83W\83\87\83\93\82ð\8am\94F\89Â\94\\82Å\82 \82é
-                               CHAR mes[256];
-                               if(bMin){
+                               TCHAR mes[256];
+                               if (bMin) {
                                        // \8fÚ\8d×
-                                       wsprintf(mes,"%d.%d.%d.%d"
-                                               ,HIWORD(pverInfo->dwFileVersionMS),LOWORD(pverInfo->dwFileVersionMS)
-                                               ,HIWORD(pverInfo->dwFileVersionLS),LOWORD(pverInfo->dwFileVersionLS));
+                                       wsprintf(mes, _TEXT("%d.%d.%d.%d"),
+                                               HIWORD(pverInfo->dwFileVersionMS),
+                                               LOWORD(pverInfo->dwFileVersionMS),
+                                               HIWORD(pverInfo->dwFileVersionLS),
+                                               LOWORD(pverInfo->dwFileVersionLS)
+                                               );
                                }
-                               else{
+                               else {
                                        // \92Ê\8fí
-                                       wsprintf(mes,"%d.%d"
-                                               ,HIWORD(pverInfo->dwFileVersionMS),LOWORD(pverInfo->dwFileVersionMS));
+                                       wsprintf(mes, _TEXT("%d.%d"),
+                                               HIWORD(pverInfo->dwFileVersionMS),
+                                               LOWORD(pverInfo->dwFileVersionMS)
+                                               );
                                }
-                               ret = (LPCSTR)mes;
+                               ret = mes;
                        }
                }
-               delete[]pBuf;
        }
        ret.Detach(pVal);
        return S_OK;
@@ -315,13 +335,14 @@ STDMETHODIMP CShell::GetDLLVersion(VARIANT text,VARIANT min, VARIANT *pVal)
 STDMETHODIMP CShell::ParseName(VARIANT text, VARIANT *pVal)
 {
        ::VariantInit(pVal);
+
        CComVariant varText;
-       if(varText.ChangeType(VT_BSTR,&text) == S_OK){
+       if (varText.ChangeType(VT_BSTR,&text) == S_OK) {
                CComObject<CParseName>* pParse = NULL;
-               if(pParse->CreateInstance(&pParse) == S_OK){
+               if (pParse->CreateInstance(&pParse) == S_OK) {
                        pParse->m_bstr_path = (LPCWSTR)varText.bstrVal;
                        IUnknown* pUnk = NULL;
-                       if(pParse->QueryInterface(IID_IUnknown,(void**)&pUnk) == S_OK){
+                       if (pParse->QueryInterface(IID_IUnknown,(void**)&pUnk) == S_OK) {
                                pVal->vt      = VT_UNKNOWN;
                                pVal->punkVal = pUnk;
                        }
@@ -335,22 +356,21 @@ STDMETHODIMP CShell::ParseName(VARIANT text, VARIANT *pVal)
 
 STDMETHODIMP CParseName::InterfaceSupportsErrorInfo(REFIID riid)
 {
-       static const IID* arr[] = 
-       {
+       static const IID* arr[] = {
                &IID_ISeraphyScriptTool_ParseName
        };
-       for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
-       {
-               if (IsEqualGUID(*arr[i],riid))
+
+       for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++) {
+               if (IsEqualGUID(*arr[i], riid)) {
                        return S_OK;
+               }
        }
        return S_FALSE;
 }
 
 STDMETHODIMP CParseName::get_PathName(BSTR *pVal)
 {
-       *pVal = m_bstr_path.copy();
-       return S_OK;
+       return m_bstr_path.CopyTo(pVal);
 }
 
 STDMETHODIMP CParseName::put_PathName(BSTR newVal)
@@ -361,10 +381,11 @@ STDMETHODIMP CParseName::put_PathName(BSTR newVal)
 
 STDMETHODIMP CParseName::get_FileName(BSTR *pVal)
 {
-       LPWSTR p = m_bstr_path;
-       while(*p)p++;
-       while(p > (LPCWSTR)m_bstr_path){
-               if(*p == '\\' || *p == '/'){
+       LPWSTR st = m_bstr_path;
+       LPWSTR p = st;
+       while (*p) p++;
+       while (p > st) {
+               if (*p == '\\' || *p == '/') {
                        // \96\96\94ö\82©\82ç\8dÅ\8f\89\82É\94­\8c©\82³\82ê\82½\83t\83H\83\8b\83_\83v\83\8c\81[\83X\82Å\8e~\82Ü\82é
                        p++;
                        break;
@@ -378,7 +399,7 @@ STDMETHODIMP CParseName::get_FileName(BSTR *pVal)
 STDMETHODIMP CParseName::put_FileName(BSTR newVal)
 {
        WCHAR buf[MAX_PATH];
-       lstrcpyW(buf,m_bstr_path);
+       lstrcpyW(buf, m_bstr_path);
        LPWSTR p = buf;
        while(*p)p++;
        while(p > buf){
@@ -389,7 +410,7 @@ STDMETHODIMP CParseName::put_FileName(BSTR newVal)
                }
                p--;
        }
-       lstrcpyW(p,newVal);
+       lstrcpyW(p, newVal);
        m_bstr_path = buf;
        return S_OK;
 }
@@ -399,20 +420,20 @@ STDMETHODIMP CParseName::get_Extention(BSTR *pVal)
        BOOL bFind = false;
        LPWSTR p = m_bstr_path;
        while(*p)p++;
-       while(p > (LPCWSTR)m_bstr_path){
-               if(*p == '.'){
+       while (p > (LPCWSTR)m_bstr_path) {
+               if (*p == '.') {
                        bFind = true;
                        p++;
                        break;
                }
-               if(*p == '\\' || *p == '/'){
+               if (*p == '\\' || *p == '/') {
                        // \83t\83H\83\8b\83_\83v\83\8c\81[\83X\82Å\92\86\8e~\82·\82é
                        break;
                }
                p--;
        }
-       if(!bFind){
-               while(*p)p++;
+       if (!bFind) {
+               while (*p) p++;
        }
        *pVal = SysAllocString(p);
        return S_OK;
@@ -424,25 +445,25 @@ STDMETHODIMP CParseName::put_Extention(BSTR newVal)
        lstrcpyW(buf,m_bstr_path);
        BOOL bFind = false;
        LPWSTR p = buf;
-       while(*p)p++;
-       while(p > buf){
-               if(*p == '.'){
+       while (*p) p++;
+       while (p > buf) {
+               if (*p == '.') {
                        bFind = true;
                        p++;
                        break;
                }
-               if(*p == '\\' || *p == '/'){
+               if (*p == '\\' || *p == '/') {
                        // \83t\83H\83\8b\83_\83v\83\8c\81[\83X\82Å\92\86\8e~\82·\82é
                        break;
                }
                p--;
        }
-       if(!bFind){
+       if (!bFind) {
                // \89½\82à\82È\82¯\82ê\82Î\96\96\94ö\82É\92Ç\89Á\82·\82é
-               while(*p)p++;
-               lstrcpyW(p,L".");
+               while (*p) p++;
+               lstrcpyW(p, L".");
        }
-       lstrcpyW(p,newVal);
+       lstrcpyW(p, newVal);
        m_bstr_path = buf;
        return S_OK;
 }
@@ -633,52 +654,61 @@ HRESULT CShell::FileOperationCore(UINT wFunc, FILEOP_FLAGS flag, VARIANT *from,
 {
        ::VariantInit(pResult);
        CComVariant result;
-       CHAR szDest[MAX_PATH+2] = { 0 }; // double null
-       if(to){
+
+       ATL::CString szTo;
+       if (to) {
                CComVariant varTo;
                if(to->vt != VT_NULL && to->vt != VT_ERROR || to->vt == VT_EMPTY
-                       || varTo.ChangeType(VT_BSTR,to) != S_OK){
+                       || varTo.ChangeType(VT_BSTR, to) != S_OK) {
                        return DISP_E_TYPEMISMATCH;
                }
-               WideCharToMultiByte(GetACP(),0,varTo.bstrVal,-1,szDest,MAX_PATH,NULL,NULL);
+               szTo = varTo.bstrVal;
        }
-       LPSTR pFrom = CreateDNStringFromVariant(*from);
-       if(!pFrom){
+       int len = szTo.GetLength();
+       LPTSTR pTo = szTo.GetBufferSetLength(len + 2); // \83_\83u\83\8b\83k\83\8b\8fI\92[
+       pTo[len] = 0;
+       pTo[len + 1] = 0;
+
+       std::vector<TCHAR> buf;
+       if (!CreateDNStringFromVariant(*from, buf)) {
                return DISP_E_TYPEMISMATCH;
        }
+
        SHFILEOPSTRUCT info = {0};
        info.fFlags = flag | FOF_ALLOWUNDO | (m_bSilent?FOF_SILENT:0) | (m_bConfirm?0:(FOF_NOCONFIRMMKDIR|FOF_NOCONFIRMATION));
        info.hwnd   = GetMainWindow();
-       info.pFrom  = pFrom;
-       info.pTo    = szDest;
+       info.pFrom  = &buf[0];
+       info.pTo    = pTo;
        info.wFunc  = wFunc;
        int ret = SHFileOperation(&info);
-       delete[]pFrom;
+
        result = (bool)(!ret && !info.fAnyOperationsAborted);
        result.Detach(pResult);
        return S_OK;
 }
 
-LPSTR CShell::CreateDNStringFromVariant(VARIANT &from)
+bool CShell::CreateDNStringFromVariant(VARIANT &from, std::vector<TCHAR> &buf)
 {
-       LPSTR pBuf = NULL;
        CComVariant varFrom;
-       if(varFrom.ChangeType(VT_BSTR,&from) == S_OK){
-               // BSTR\82É\95Ï\8a·\89Â\94\\82©?
-               int needsize = WideCharToMultiByte(GetACP(),0,varFrom.bstrVal,-1,NULL,0,NULL,NULL);
-               pBuf = new CHAR[needsize+2];
-               WideCharToMultiByte(GetACP(),0,varFrom.bstrVal,-1,pBuf,needsize,NULL,NULL);
-               pBuf[needsize  ] = 0;
-               pBuf[needsize+1] = 0; // double null
-               return pBuf;
-       }
-       else if(varFrom.ChangeType(VT_UNKNOWN,&from) == S_OK){
-               // Unknown\82É\95Ï\8a·\89Â\94\\82©?
+
+       // \95\8e\9a\97ñ\82É\95Ï\8a·\89Â\94\\82©\81H
+       if (varFrom.ChangeType(VT_BSTR, &from) == S_OK) {
+               ATL::CString tmp(varFrom.bstrVal);
+               int bufsiz = tmp.GetLength() + 2; // \83_\83u\83\8b\83k\83\8b\8fI\92[\95ª
+               buf.resize(bufsiz, 0);
+               LPTSTR pBuf = &buf[0];
+               StringCbCopy(pBuf, bufsiz, tmp);
+               return true;
+       }
+
+       // Unknown -> IObjectVector \82É\95Ï\8a·\89Â\94\\82©?
+       if (varFrom.ChangeType(VT_UNKNOWN, &from) == S_OK) {
                IObjectVector* pVector = NULL;
-               if(varFrom.punkVal->QueryInterface(IID_IObjectVector,(void**)&pVector) != S_OK){
+               if (varFrom.punkVal->QueryInterface(IID_IObjectVector,(void**)&pVector) != S_OK) {
                        // IObjectVector\82Å\82Í\82È\82¢\82È\82ç\83G\83\89\81[
-                       return NULL;
+                       return false;
                }
+
                // \94z\97ñ\82ð\8eæ\93¾\82·\82é
                long mx = 0;
                pVector->get_Count(&mx);
@@ -691,121 +721,146 @@ LPSTR CShell::CreateDNStringFromVariant(VARIANT &from)
                        pVector->get_Value(idx,&tmp);
                        if(tmp.ChangeType(VT_BSTR) != S_OK){
                                // \95\8e\9a\97ñ\82É\95Ï\8a·\95s\89Â\94\
-                               return NULL;
+                               return false;
                        }
-                       needsize += WideCharToMultiByte(GetACP(),0,tmp.bstrVal,-1,NULL,0,NULL,NULL) + 1;
+                       ATL::CString czTmp(tmp.bstrVal);
+                       needsize += czTmp.GetLength() + 1; // +1\82Í\83k\83\8b\8fI\92[\95ª
                }
-               needsize += 1; // dobulenull
+               needsize += 1; // \83_\83u\83\8b\83k\83\8b\8fI\92[\95ª
+
                // \94z\97ñ\82ð\83_\83u\83\8b\83k\83\8b\82É\93W\8aJ\82·\82é
-               pBuf = new CHAR[needsize];
-               LPSTR p = pBuf;
-               for(cnt = 0 ; cnt < mx ; cnt++){
+               buf.resize(needsize, 0);
+               LPTSTR pBuf = &buf[0];
+               LPTSTR p = pBuf;
+               for (cnt = 0 ; cnt < mx ; cnt++) {
                        CComVariant tmp;
                        CComVariant idx((long)cnt);
-                       pVector->get_Value(idx,&tmp);
-                       if(tmp.ChangeType(VT_BSTR) == S_OK){
-                               int sz = WideCharToMultiByte(GetACP(),0,tmp.bstrVal,-1,p,MAX_PATH,NULL,NULL);
-                               *(p + sz) = 0;
-                               p += sz;
+                       if (SUCCEEDED(pVector->get_Value(idx, &tmp))) {
+                               if (tmp.ChangeType(VT_BSTR) == S_OK) {
+                                       ATL::CString szTmp(tmp.bstrVal);
+                                       StringCbCopy(p, needsize, szTmp);
+                                       int len = szTmp.GetLength() + 1;
+                                       p += len;
+                                       needsize -= len;
+                               }
                        }
                }
                *p = 0; // dobule null
                pVector->Release();
-               return pBuf;
-       }
-       else{
-               // SafeArray\82©?
-               VARTYPE vt = VT_EMPTY;
-               SAFEARRAY* pArray = GetArrayFromVariant(from,&vt);
-               if(!pArray || vt != VT_VARIANT){
-                       // SafeArray\82Å\82È\82¢\82©\81A\8c^\82ª\82¿\82ª\82¤
+               return true;
+       }
+
+       // SafeArray\82©?
+       VARTYPE vt = VT_EMPTY;
+       SAFEARRAY* pArray = GetArrayFromVariant(from, &vt);
+       if (!pArray || vt != VT_VARIANT) {
+               // SafeArray\82Å\82È\82¢\82©\81A\8c^\82ª\82¿\82ª\82¤
+               return false;
+       }
+
+       long lb = 0;
+       long ub = 0;
+       int dm = SafeArrayGetDim(pArray);
+       SafeArrayGetLBound(pArray, 1, &lb); // \8d\91¤\82Ì\93Y\82¦\8e\9a
+       SafeArrayGetUBound(pArray, 1, &ub);
+       if (dm != 1 || lb != 0) {
+               // 1\8e\9f\8c³\94z\97ñ\82Å\82È\82¢\82©\81A0\83x\81[\83X\82Å\82È\82¢
+               return false;
+       }
+
+       DWORD needsize = 0;
+       long dim[1];
+       // \83o\83b\83t\83@\82É\95K\97v\82È\83T\83C\83Y\82ð\8b\81\82ß\82é
+       for (long cnt = 0 ; cnt <= ub ; cnt++) {
+               CComVariant tmp;
+               dim[0] = cnt;
+               SafeArrayGetElement(pArray, dim, &tmp);
+               if (tmp.ChangeType(VT_BSTR) != S_OK) {
+                       // \95\8e\9a\97ñ\82É\95Ï\8a·\95s\89Â\94\
                        return NULL;
                }
-               long lb = 0;
-               long ub = 0;
-               int dm = SafeArrayGetDim(pArray);
-               SafeArrayGetLBound(pArray,1,&lb); // \8d\91¤\82Ì\93Y\82¦\8e\9a
-               SafeArrayGetUBound(pArray,1,&ub);
-               if(dm != 1 || lb != 0){
-                       // 1\8e\9f\8c³\94z\97ñ\82Å\82È\82¢\82©\81A0\83x\81[\83X\82Å\82È\82¢
+               ATL::CString szTmp(tmp.bstrVal);
+               needsize += szTmp.GetLength() + 1;
+       }
+       needsize += 1; // \83_\83u\83\8b\83k\83\8b\8fI\92[\95ª
+
+       // \83o\83b\83t\83@\82ð\8am\95Û\82µ\93W\8aJ\82·\82é
+       buf.resize(needsize);
+       LPTSTR pBuf = &buf[0];
+       LPTSTR p = pBuf;
+       for (long cnt = 0 ; cnt <= ub ; cnt++) {
+               CComVariant tmp;
+               dim[0] = cnt;
+               SafeArrayGetElement(pArray, dim, &tmp);
+               if (tmp.ChangeType(VT_BSTR) != S_OK) {
+                       // \95\8e\9a\97ñ\82É\95Ï\8a·\95s\89Â\94\
                        return NULL;
                }
-               DWORD needsize = 0;
-               long dim[1];
-               long cnt;
-               // \83o\83b\83t\83@\82É\95K\97v\82È\83T\83C\83Y\82ð\8b\81\82ß\82é
-               for(cnt = 0 ; cnt <= ub ; cnt++){
-                       CComVariant tmp;
-                       dim[0] = cnt;
-                       SafeArrayGetElement(pArray,dim,&tmp);
-                       if(tmp.ChangeType(VT_BSTR) != S_OK){
-                               // \95\8e\9a\97ñ\82É\95Ï\8a·\95s\89Â\94\
-                               return NULL;
-                       }
-                       needsize += WideCharToMultiByte(GetACP(),0,tmp.bstrVal,-1,NULL,0,NULL,NULL) + 1;
-               }
-               // \83o\83b\83t\83@\82ð\8am\95Û\82µ\93W\8aJ\82·\82é
-               pBuf = new CHAR[needsize];
-               LPSTR p = pBuf;
-               for(cnt = 0 ; cnt <= ub ; cnt++){
-                       CComVariant tmp;
-                       dim[0] = cnt;
-                       SafeArrayGetElement(pArray,dim,&tmp);
-                       if(tmp.ChangeType(VT_BSTR) != S_OK){
-                               // \95\8e\9a\97ñ\82É\95Ï\8a·\95s\89Â\94\
-                               return NULL;
-                       }
-                       int sz = WideCharToMultiByte(GetACP(),0,tmp.bstrVal,-1,p,MAX_PATH,NULL,NULL);
-                       *(p + sz) = 0;
-                       p += sz;
-               }
-               *p = 0;
-               return pBuf;
+
+               ATL::CString szTmp(tmp.bstrVal);
+               StringCbCopy(p, needsize, szTmp);
+               int len = szTmp.GetLength() + 1;
+               p += len;
+               needsize -= len;
        }
-       return NULL;
+       *p = 0; // \83_\83u\83\8b\83k\83\8b\8fI\92[
+       return true;
 }
 
 STDMETHODIMP CShell::EmptyRecycleBin(VARIANT dir)
 {
-       CComVariant varDir;
-       LPCSTR pTarget = NULL;
-       CHAR szPath[MAX_PATH];
-       if(dir.vt == VT_NULL || dir.vt == VT_ERROR || dir.vt == VT_EMPTY){
+       LPCTSTR pTarget = NULL;
+
+       if (dir.vt == VT_NULL || dir.vt == VT_ERROR || dir.vt == VT_EMPTY) {
                // \82·\82×\82Ä\91Î\8fÛ\82Æ\82·\82é
                pTarget = NULL;
        }
-       if(varDir.ChangeType(VT_BSTR,&dir) == S_OK){
-               // \93Á\92è\82Ì\83h\83\89\83C\83u\82ð\83^\81[\83Q\83b\83g\82·\82é
-               WideCharToMultiByte(GetACP(),0,varDir.bstrVal,-1,szPath,MAX_PATH,NULL,NULL);
-               pTarget = szPath;
-       }
-       else{
-               // \95Ï\8a·\95s\89Â
-               return DISP_E_TYPEMISMATCH;
+       else {
+               ATL::CString szPath;
+               CComVariant varDir;
+               if (varDir.ChangeType(VT_BSTR, &dir) == S_OK) {
+                       // \93Á\92è\82Ì\83h\83\89\83C\83u\82ð\83^\81[\83Q\83b\83g\82·\82é
+                       szPath = varDir.bstrVal;
+                       if (!szPath.IsEmpty()) {
+                               // \8bó\95\8e\9a\82Å\82È\82¯\82ê\82Î
+                               pTarget = szPath;
+                       }
+               }
+               else {
+                       // \95Ï\8a·\95s\89Â
+                       return DISP_E_TYPEMISMATCH;
+               }
        }
-       SHEmptyRecycleBin(NULL,pTarget,(m_bConfirm?0:SHERB_NOCONFIRMATION) | (m_bSilent?(SHERB_NOPROGRESSUI|SHERB_NOSOUND ):0));
+
+       SHEmptyRecycleBin(NULL, pTarget, (m_bConfirm?0:SHERB_NOCONFIRMATION) | (m_bSilent?(SHERB_NOPROGRESSUI|SHERB_NOSOUND) : 0));
        return S_OK;
 }
 
 STDMETHODIMP CShell::RecentDocs(VARIANT text)
 {
-       CComVariant varText;
-       LPCSTR pTarget = NULL;
-       CHAR szPath[MAX_PATH];
+       LPCTSTR pTarget = NULL;
+
        if(text.vt == VT_NULL || text.vt == VT_ERROR || text.vt == VT_EMPTY){
                // \97\9a\97ð\82ð\83N\83\8a\83A\82·\82é
                pTarget = NULL;
        }
-       if(varText.ChangeType(VT_BSTR,&text) == S_OK){
-               // \93Á\92è\82Ì\83t\83@\83C\83\8b\82ð\92Ç\89Á\82·\82é
-               WideCharToMultiByte(GetACP(),0,varText.bstrVal,-1,szPath,MAX_PATH,NULL,NULL);
-               pTarget = szPath;
-       }
-       else{
-               // \95Ï\8a·\95s\89Â
-               return DISP_E_TYPEMISMATCH;
+       else {
+               ATL::CString szPath;
+               CComVariant varText;
+               if (varText.ChangeType(VT_BSTR, &text) == S_OK){
+                       // \93Á\92è\82Ì\83t\83@\83C\83\8b\82ð\92Ç\89Á\82·\82é
+                       szPath = text.bstrVal;
+                       if (!szPath.IsEmpty()) {
+                               // \8bó\95\8e\9a\82Å\82È\82¯\82ê\82Î
+                               pTarget = szPath;
+                       }
+               }
+               else{
+                       // \95Ï\8a·\95s\89Â
+                       return DISP_E_TYPEMISMATCH;
+               }
        }
-       SHAddToRecentDocs(SHARD_PATH,pTarget);
+       SHAddToRecentDocs(SHARD_PATH, pTarget);
        return S_OK;
 }
 
@@ -818,8 +873,8 @@ STDMETHODIMP CShell::SetMainWindow(VARIANT varUnk)
        }
        // \83C\83\93\83^\81[\83t\83F\83C\83X\82Ì\8eæ\93¾
        CComVariant tmp;
-       if(tmp.ChangeType(VT_UNKNOWN,&varUnk) == S_OK){
-               if(tmp.punkVal->QueryInterface(IID_IOverlappedWindow,(void**)&m_pMainWindow) == S_OK){
+       if (tmp.ChangeType(VT_UNKNOWN, &varUnk) == S_OK) {
+               if (tmp.punkVal->QueryInterface(IID_IOverlappedWindow, (void**)&m_pMainWindow) == S_OK) {
                        return S_OK;
                }
        }
@@ -828,18 +883,23 @@ STDMETHODIMP CShell::SetMainWindow(VARIANT varUnk)
 
 STDMETHODIMP CShell::IsExist(VARIANT name, VARIANT *pVal)
 {
-       CComVariant varName,varRet;
-       if(varName.ChangeType(VT_BSTR,&name) != S_OK){
+       CComVariant varRet;
+
+       CComVariant varName;
+       if (varName.ChangeType(VT_BSTR, &name) != S_OK){
                return DISP_E_TYPEMISMATCH;
        }
-       CHAR szPath[MAX_PATH];
-       WideCharToMultiByte(GetACP(),0,varName.bstrVal,-1,szPath,MAX_PATH,NULL,NULL);
+
+       ATL::CString szPath(varName.bstrVal);
+
        DWORD attr = GetFileAttributes(szPath);
-       if(attr != (DWORD)-1){
-               if(attr & FILE_ATTRIBUTE_DIRECTORY)
+       if (attr != (DWORD) -1) {
+               if (attr & FILE_ATTRIBUTE_DIRECTORY) {
                        varRet = 2;
-               else
+               }
+               else {
                        varRet = 1;
+               }
        }
        varRet.Detach(pVal);
        return S_OK;
diff --git a/Shell.h b/Shell.h
index cd42fe0..75c7af8 100644 (file)
--- a/Shell.h
+++ b/Shell.h
@@ -5,6 +5,8 @@
 
 #include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
 
+#include <vector>
+
 /////////////////////////////////////////////////////////////////////////////
 // CShell
 class ATL_NO_VTABLE CShell : 
@@ -62,7 +64,7 @@ public:
        BOOL m_bSilent;
        BOOL m_bConfirm;
        HRESULT FileOperationCore(UINT wFunc,FILEOP_FLAGS flag,VARIANT* from,VARIANT* to,VARIANT* pResult);
-       LPSTR CreateDNStringFromVariant(VARIANT& from);
+       bool CreateDNStringFromVariant(VARIANT& from, std::vector<TCHAR> &buf);
        STDMETHOD(get_Silent)(/*[out, retval]*/ BOOL *pVal);
        STDMETHOD(put_Silent)(/*[in]*/ BOOL newVal);
        STDMETHOD(get_Confirm)(/*[out, retval]*/ BOOL *pVal);
@@ -162,7 +164,7 @@ public:
        STDMETHOD(put_FileName)(/*[in]*/ BSTR newVal);
        STDMETHOD(get_PathName)(/*[out, retval]*/ BSTR *pVal);
        STDMETHOD(put_PathName)(/*[in]*/ BSTR newVal);
-       _bstr_t m_bstr_path;
+       CComBSTR m_bstr_path;
 };
 
 #endif //__SHELL_H_
index 8bf9ebe..f4a5b38 100644 (file)
--- a/StdAfx.h
+++ b/StdAfx.h
 extern CComModule _Module;
 #include <atlcom.h>
 #include <atlctl.h>
+#include <atlstr.h>
 #include <comdef.h>
 
 #include <shlobj.h>
 #include <winspool.h>
 
-#define WM_MOVENEXT_OVERLAPPED (WM_USER+100)
-#define WM_KEYDOWN_EX (WM_USER+101)
+#include <Strsafe.h>
+
+#define WM_MOVENEXT_OVERLAPPED (WM_USER + 100)
+#define WM_KEYDOWN_EX (WM_USER + 101)
 
 //{{AFX_INSERT_LOCATION}}
 // Microsoft Visual C++ \82Í\91O\8ds\82Ì\92¼\91O\82É\92Ç\89Á\82Ì\90é\8c¾\82ð\91}\93ü\82µ\82Ü\82·\81B
index 16e3ba4..7587599 100644 (file)
@@ -62,36 +62,37 @@ BOOL CTreeItem::DeleteTreeItemWithData(HWND hWnd,HTREEITEM hItem)
        return true;
 }
 
-void CTreeItem::CreateTreeItem(HWND hWnd, HTREEITEM hParent, LPCSTR text, IUnknown **punkVal)
+void CTreeItem::CreateTreeItem(HWND hWnd, HTREEITEM hParent, LPCTSTR text, IUnknown **punkVal)
 {
        // \83A\83C\83e\83\80\82ª\95Û\97L\82·\82é\98A\91z\94z\97ñ\82ð\90\90¬\82·\82é
        IUnknown* pUnk = NULL;
        CComObject<CObjectMap>* pMap = NULL;
-       if(pMap->CreateInstance(&pMap) == S_OK){
-               pMap->QueryInterface(IID_IUnknown,(void**)&pUnk);
+       if (pMap->CreateInstance(&pMap) == S_OK) {
+               pMap->QueryInterface(IID_IUnknown, (void**)&pUnk);
        }
        // \91}\93ü\82·\82é\83A\83C\83e\83\80\82Ì\92è\8b`
+       ATL::CString tmp(text);
        TVINSERTSTRUCT is = { 0 };
        is.hParent       = hParent;
        is.hInsertAfter  = TVI_LAST;
        is.item.mask     = TVIF_TEXT | TVIF_PARAM;
-       is.item.pszText  = (LPSTR)text;
-       is.item.cchTextMax = lstrlen(text);
+       is.item.pszText  = tmp.GetBuffer();
+       is.item.cchTextMax = tmp.GetLength();
        is.item.lParam   = (LPARAM)pUnk;
 
-       HTREEITEM hNewItem = TreeView_InsertItem(hWnd,&is);
-       if(hNewItem){
+       HTREEITEM hNewItem = TreeView_InsertItem(hWnd, &is);
+       if (hNewItem) {
                // \83A\83C\83e\83\80\82Ö\82Ì\83I\83u\83W\83F\83N\83g\82ð\8dì\90¬\82·\82é
                CComObject<CTreeItem>* pItem = NULL;
-               if(pItem->CreateInstance(&pItem) == S_OK){
-                       pItem->SetParam(hWnd,hNewItem);
-                       pItem->QueryInterface(IID_IUnknown,(void**)punkVal);
+               if (pItem->CreateInstance(&pItem) == S_OK) {
+                       pItem->SetParam(hWnd, hNewItem);
+                       pItem->QueryInterface(IID_IUnknown, (void**)punkVal);
                }
        }
 }
 
 STDMETHODIMP CTreeItem::IsValid(BOOL *pResult)
 {
-       *pResult = (m_hItem != NULL)?VB_TRUE:VB_FALSE;
+       *pResult = (m_hItem != NULL) ? VB_TRUE : VB_FALSE;
        return S_OK;
 }
index 4bf5423..53e662c 100644 (file)
@@ -37,7 +37,7 @@ END_COM_MAP()
 // ITreeItem
 public:
        STDMETHOD(IsValid)(/*[out,retval]*/BOOL* pResult);
-       static void CreateTreeItem(HWND hWnd,HTREEITEM hParent,LPCSTR text,IUnknown** punkVal);
+       static void CreateTreeItem(HWND hWnd,HTREEITEM hParent, LPCTSTR text, IUnknown** punkVal);
        STDMETHOD(Sort)()
        {
                HRESULT ret = InitialCheck();
@@ -103,22 +103,23 @@ public:
                // \83A\83C\83e\83\80\82Ì\8dì\90¬
                *punkVal = NULL;
                HRESULT ret = InitialCheck();
-               if(ret == S_OK){
-                       if(m_hItem){
-                               CHAR mes[MAX_PATH];
-                               CComVariant str;
-                               if(str.ChangeType(VT_BSTR,&text) == S_OK){
-                                       int cnt = WideCharToMultiByte(GetACP(),0,str.bstrVal,-1,mes,MAX_PATH,NULL,NULL);
-                                       CreateTreeItem(m_hWnd,m_hItem,mes,punkVal);
-                               }
-                       }
-                       else{
-                               // \95s\90³\82È\83A\83C\83e\83\80\82ð\8eQ\8fÆ\82µ\82Ä\82¢\82é
-                               ret = DISP_E_EXCEPTION;
+               if (FAILED(ret)) {
+                       return ret;
+               }
+
+               if (m_hItem) {
+                       CComVariant str;
+                       ATL::CString mes(_TEXT(""));
+                       if (str.ChangeType(VT_BSTR, &text) == S_OK) {
+                               mes = str.bstrVal;
                        }
+                       CreateTreeItem(m_hWnd, m_hItem, mes, punkVal);
+                       return S_OK;
                }
-               return ret;
+               // \95s\90³\82È\83A\83C\83e\83\80\82ð\8eQ\8fÆ\82µ\82Ä\82¢\82é
+               return DISP_E_EXCEPTION;
        }
+
        STDMETHOD(get_Object)(/*[in,optional]*/VARIANT idx, /*[out, retval]*/ VARIANT *pVal)
        {
                // \83A\83C\83e\83\80\82É\8aÖ\98A\95t\82¯\82ç\82ê\82½\98A\91z\94z\97ñ\83I\83u\83W\83F\83N\83g\82ð\8eæ\93¾\82·\82é
@@ -151,49 +152,51 @@ public:
                ErrorInfo(IDS_ERR_TREEERROR);
                return DISP_E_EXCEPTION;
        }
+
        STDMETHOD(get_Text)(/*[out, retval]*/ BSTR *pVal)
        {
                // \83e\83L\83X\83g\82Ì\8eæ\93¾
                HRESULT ret = InitialCheck();
-               if(!m_hItem){
+               if (!m_hItem) {
                        // \95s\90³\82È\83A\83C\83e\83\80\82ð\8eQ\8fÆ\82µ\82Ä\82¢\82é
                        ret = DISP_E_EXCEPTION;
                }
-               if(ret == S_OK){
-                       CHAR text[MAX_PATH];
+
+               if (ret == S_OK) {
+                       TCHAR text[MAX_PATH] = { 0 };
                        TVITEM itm = {0};
                        itm.mask       = TVIF_TEXT;
                        itm.hItem      = m_hItem;
                        itm.pszText    = text;
                        itm.cchTextMax = MAX_PATH;
-                       if(TreeView_GetItem(m_hWnd,&itm)){
-                               WCHAR wMes[MAX_PATH] = {0};
-                               MultiByteToWideChar(GetACP(),0,text,-1,wMes,MAX_PATH);
-                               *pVal = SysAllocString(wMes);
+                       if (TreeView_GetItem(m_hWnd,&itm)) {
+                               CComBSTR ret(text);
+                               *pVal = ret.Detach();
                        }
                }
                return ret;
        }
+
        STDMETHOD(put_Text)(/*[in]*/ BSTR newVal)
        {
                // \83e\83L\83X\83g\82Ì\8f\91\82«\8a·\82¦
                HRESULT ret = InitialCheck();
-               if(!m_hItem){
+               if (!m_hItem) {
                        // \95s\90³\82È\83A\83C\83e\83\80\82ð\8eQ\8fÆ\82µ\82Ä\82¢\82é
                        ret = DISP_E_EXCEPTION;
                }
-               if(ret == S_OK){
-                       CHAR text[MAX_PATH] = {0};
+               if (ret == S_OK) {
+                       ATL::CString tmp(newVal);
                        TVITEM itm = {0};
                        itm.mask       = TVIF_TEXT;
                        itm.hItem      = m_hItem;
-                       itm.pszText    = text;
-                       itm.cchTextMax = MAX_PATH;
-                       WideCharToMultiByte(GetACP(),0,newVal,-1,text,MAX_PATH,NULL,NULL);
-                       TreeView_SetItem(m_hWnd,&itm);
+                       itm.pszText    = tmp.GetBuffer();
+                       itm.cchTextMax = tmp.GetLength(); // Set\82Ì\8fê\8d\87\82Í\96³\8e\8b\82³\82ê\82é
+                       TreeView_SetItem(m_hWnd, &itm);
                }
                return ret;
        }
+
        STDMETHOD(get_PrevItem)(/*[out, retval]*/ IUnknown* *pVal)
        {
                // \91O\82Ì\83A\83C\83e\83\80
index 116ee12..7e7025c 100644 (file)
@@ -6,11 +6,10 @@ void ErrorInfo(int nMessageID)
 {
        ICreateErrorInfo *pCErrInfo;
        if(CreateErrorInfo(&pCErrInfo) == S_OK){
-               WCHAR wmes[MAX_PATH];
-               CHAR mes[MAX_PATH];
-               if(LoadString(_Module.m_hInst,nMessageID,mes,MAX_PATH)){
-                       MultiByteToWideChar(GetACP(),0,mes,-1,wmes,MAX_PATH);
-                       pCErrInfo->SetDescription(wmes);
+               TCHAR mes[MAX_PATH];
+               if (LoadString(_Module.m_hInst, nMessageID, mes, MAX_PATH)) {
+                       CComBSTR tmp(mes);
+                       pCErrInfo->SetDescription((LPOLESTR) tmp);
                        pCErrInfo->SetGUID(IID_IOverlappedWindow);
                        pCErrInfo->SetSource(L"SeraphyScriptTools");
                        IErrorInfo* perrinfo;