OSDN Git Service

UNICODEビルド、X64ビルドでコンパイルエラーが発生しないように修正した。
[seraphyscrtools/SeraphyScriptTools.git] / TreeItem.h
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