OSDN Git Service

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