OSDN Git Service

IEコンポーネントでマイリスト登録機能は無理な感じ?
authorqwerty2501 <riot313@gmail.com>
Tue, 7 Feb 2012 13:52:39 +0000 (22:52 +0900)
committerqwerty2501 <riot313@gmail.com>
Tue, 7 Feb 2012 13:52:39 +0000 (22:52 +0900)
nlite.suo
nlite/nlite_addTomylistWindow.cpp
nlite/nlite_addTomylistWindow.h
nlite/nlite_commentview.cpp
nlite/nlite_nlib.cpp

index 2731503..5c1d3ea 100644 (file)
Binary files a/nlite.suo and b/nlite.suo differ
index d1479a3..781e9cb 100644 (file)
@@ -5,8 +5,8 @@
 namespace nlite{
 
        static const LPCTSTR ADDMYLIST_URL = TEXT("MSHTML:<HTML><BODY><SCRIPT TYPE=\"text/javascript\">window.open('http://www.nicovideo.jp/mylist_add/video/{1}', 'nicomylistadd', 'width=500,height=360');</SCRIPT></BODY></HTML>");
-       
-       
+       static const LPCTSTR ADDMYLISTAPI_URL = TEXT("http://www.nicovideo.jp/mylist_add/video/{1}");
+       /*
        VOID WINAPI CAddToMyListWindow::OnDocumentComplete(IDispatch* pDisp, VARIANT* URL){
 
                CComPtr<IDispatch> idp;
@@ -29,6 +29,13 @@ namespace nlite{
                return (BOOL)SendMessage(WM_FORWARDMSG, 0, (LPARAM)pMsg);
        }
 
+       VOID WINAPI CAddToMyListWindow::OnBeforeNavigate2(IDispatch** dispatch, VARIANT* url, VARIANT* flags,VARIANT* frameName, VARIANT* postData, VARIANT* headers, VARIANT_BOOL* cancel){
+
+               dumpln(TEXT("veforeNavigate"));
+
+               return;
+       }
+
 
        VOID CAddToMyListWindow::ShowAddWindow(CNicoVideoAuth &refAuth,LPCTSTR lvNo){
                liveNo = ADDMYLIST_URL;
@@ -90,6 +97,109 @@ cleanup:;
 
                SetMsgHandled(false);
        }
+       */
+
+       VOID WINAPI CAddToMyListWindow::OnDocumentComplete(IDispatch* pDisp, VARIANT* URL){
+               /*
+               CComPtr<IDispatch> idp;
+               this->m_pWB2->get_Document(&idp);
+//             this->m_pDoc2 = idp;
+*/
+               return;
+       }
+
+       VOID WINAPI CAddToMyListWindow::OnNewWindow2(LPDISPATCH* ppDisp,BOOL* Cancel ){
+
+               dumpln(TEXT("newwindow"));
+               return;
+       }
+
+       BOOL CAddToMyListWindow::PreTranslateMessage(MSG* pMsg){
+               if((pMsg->message < WM_KEYFIRST || pMsg->message > WM_KEYLAST) &&
+                       (pMsg->message < WM_MOUSEFIRST || pMsg->message > WM_MOUSELAST))
+                       return FALSE;
+
+               return (BOOL)SendMessage(WM_FORWARDMSG, 0, (LPARAM)pMsg);
+       }
+
+       VOID WINAPI CAddToMyListWindow::OnBeforeNavigate2(IDispatch** dispatch, VARIANT* url, VARIANT* flags,VARIANT* frameName, VARIANT* postData, VARIANT* headers, VARIANT_BOOL* cancel){
+
+               
+               dumpln(TEXT("veforeNavigate"));
+
+               return;
+       }
+
+
+       VOID CAddToMyListWindow::ShowAddWindow(CNicoVideoAuth &refAuth,LPCTSTR lvNo){
+               
+               this->CenterWindow();
+               this->ShowWindow(SW_SHOW);
+               liveNo = ADDMYLISTAPI_URL;
+               liveNo.Replace(TEXT("{1}"), lvNo);
+
+               if(m_pWB2){
+                       VARIANT v;
+                       
+                       m_pWB2->Navigate(CComBSTR(liveNo),&v,&v,&v,&v);
+                       
+                       /*
+                       // Creates a new one-dimensional array
+                       SAFEARRAY *psaStrings = SafeArrayCreateVector(VT_VARIANT, 0, 1);
+                       if (psaStrings == NULL) {
+                               goto cleanup;
+                       }
 
+                       VARIANT *param;
+                       HRESULT hr = SafeArrayAccessData(psaStrings, (LPVOID*)&param);
+                       param->vt = VT_BSTR;
+                       param->bstrVal = CComBSTR(liveNo);
+                       hr = SafeArrayUnaccessData(psaStrings);
+                       m_pDoc2->write(psaStrings);
+                       */
+cleanup:;
+                       
+                       //CComPtr<IUnknown> iup;
+                       //HRESULT rslt = this->CreateControlEx(liveNo,(IStream*)NULL,(IUnknown**)NULL,&iup,GUID_NULL,(IUnknown*)NULL);
+                       //CComPtr<IDispatch> idp = (IDispatch*)&iup;
+                       //iup->QueryInterface(DIID_DWebBrowserEvents2,(LPVOID*)&idp);
+                       
+                       
+               }
+       }
+
+
+       INT_PTR CAddToMyListWindow::OnCreate(LPCREATESTRUCT lpCreateStruct){
+               LRESULT lRet = DefWindowProc();
+
+               HRESULT hRet = QueryControl(&m_pWB2);
+               if(SUCCEEDED(hRet)){
+                       DispEventAdvise(m_pWB2, &DIID_DWebBrowserEvents2);
+               }
+               /*
+               VARIANT v;
+               //m_pWB2->Navigate(TEXT("url"),&v,&v,&v,&v);
+               m_pWB2->Navigate(TEXT("about:brank"),&v,&v,&v,&v);
+               */
+               return lRet;
+       }
+
+
+       VOID CAddToMyListWindow::OnDestroy(){
+               
+               
+               
+               if(m_pWB2){
+                       if(DispEventUnadvise(m_pWB2, &DIID_DWebBrowserEvents2) == S_OK){
+                               m_pWB2 = NULL;
+                       }
+               }
+
+               SetMsgHandled(false);
+       }
        
+       VOID CAddToMyListWindow::OnClose(){
+
+               this->ShowWindow(SW_HIDE);
+       }
 }
index 1154c74..68d73a1 100644 (file)
@@ -6,7 +6,7 @@ namespace nlite{
 
        //class CAddToMyListDialog;
 
-       
+       /*
        class CAddToMyListWindow : public CWindowImpl<CAddToMyListWindow, CAxWindow>,
                public IDispEventImpl<IDC_NLITE_ADDMYLIST, CAddToMyListWindow, &DIID_DWebBrowserEvents2, &LIBID_SHDocVw, 1, 1>
        {
@@ -30,8 +30,8 @@ namespace nlite{
                BEGIN_SINK_MAP(CAddToMyListWindow)
                        SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete)
                        SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, DIID_DWebBrowserEvents2, DISPID_NEWWINDOW2, OnNewWindow2)
-                       //SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, 
-                       //DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2)
+                       SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, 
+                       DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2)
                END_SINK_MAP()
 
 
@@ -46,7 +46,11 @@ namespace nlite{
                ///\90V\82µ\82¢\83E\83B\83\93\83h\83E\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
                ///
                VOID WINAPI OnNewWindow2(LPDISPATCH* ppDisp,BOOL* Cancel );
-       
+               
+               ///
+               ///\83i\83r\83Q\81[\83V\83\87\83\93\91O
+               ///
+               VOID WINAPI OnBeforeNavigate2(IDispatch** dispatch, VARIANT* url, VARIANT* flags,VARIANT* frameName, VARIANT* postData, VARIANT* headers, VARIANT_BOOL* cancel);
 
                ///
                ///\83}\83C\83\8a\83X\83g\93o\98^\89æ\96Ê\95\\8e¦
@@ -70,6 +74,79 @@ namespace nlite{
                
 
        };
+       */
+
+
+       class CAddToMyListWindow : public CWindowImpl<CAddToMyListWindow, CAxWindow>,
+               public IDispEventImpl<IDC_NLITE_ADDMYLIST, CAddToMyListWindow, &DIID_DWebBrowserEvents2, &LIBID_SHDocVw, 1, 1>
+       {
+               //friend CAddToMyListDialog;
+       public:
+               DECLARE_WND_SUPERCLASS(NULL, CAxWindow::GetWndClassName())
+
+               CComPtr<IWebBrowser2> m_pWB2;
+//             CComPtr<IHTMLDocument2>  m_pDoc2;
+               
+               CString liveNo;
+
+               BOOL PreTranslateMessage(MSG* pMsg);
 
 
+               BEGIN_MSG_MAP(CAddToMyListWindow)
+                       MSG_WM_CREATE(OnCreate)
+                       MSG_WM_CLOSE(OnClose)
+                       MSG_WM_DESTROY(OnDestroy)
+               END_MSG_MAP()
+               
+               BEGIN_SINK_MAP(CAddToMyListWindow)
+                       SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete)
+                       SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, DIID_DWebBrowserEvents2, DISPID_NEWWINDOW2, OnNewWindow2)
+                       SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, 
+                       DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2)
+               END_SINK_MAP()
+
+
+       public:
+
+               ///
+               ///\83h\83L\83\85\83\81\83\93\83g\93Ç\82Ý\8d\9e\82Ý\89Â\94\\82É\82È\82Á\82½\82Æ\82«
+               ///
+               VOID WINAPI OnDocumentComplete(IDispatch* pDisp, VARIANT* URL);
+
+               ///
+               ///\90V\82µ\82¢\83E\83B\83\93\83h\83E\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
+               ///
+               VOID WINAPI OnNewWindow2(LPDISPATCH* ppDisp,BOOL* Cancel );
+               
+               ///
+               ///\83i\83r\83Q\81[\83V\83\87\83\93\91O
+               ///
+               VOID WINAPI OnBeforeNavigate2(IDispatch** dispatch, VARIANT* url, VARIANT* flags,VARIANT* frameName, VARIANT* postData, VARIANT* headers, VARIANT_BOOL* cancel);
+
+               ///
+               ///\83}\83C\83\8a\83X\83g\93o\98^\89æ\96Ê\95\\8e¦
+               ///
+               VOID ShowAddWindow(CNicoVideoAuth &refAuth,LPCTSTR lvNo);
+       private:
+
+               ///
+               ///\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
+               ///
+               INT_PTR OnCreate(LPCREATESTRUCT lpCreateStruct);
+
+               ///
+               ///\94j\8aü\8e\9e\82Ì\8f\88\97\9d
+               ///
+               VOID OnDestroy();
+
+               ///
+               ///\95Â\82\82ç\82ê\82é\82Æ\82«\82Ì\8f\88\97\9d
+               ///
+               VOID OnClose();
+               
+
+               
+
+       };
+
 }
\ No newline at end of file
index 7c90f9f..5bd0c11 100644 (file)
@@ -1305,7 +1305,8 @@ end:
                //::AtlAxCreateControlEx(TEXT("MSHTML:<HTML><BODY></BODY></HTML>"),*this,(IStream*)NULL,(IUnknown**)NULL,&iu,GUID_NULL);
 
                //iu->QueryInterface(DIID_DWebBrowserEvents2,&addToMyListWindow);
-               addToMyListWindow.Create(m_hWnd, 0,_T("Shell.Explorer.2"),WS_CHILD | WS_VISIBLE, 0, IDC_NLITE_ADDMYLIST);
+               RECT rc = {0,0,300,200};
+               addToMyListWindow.Create(m_hWnd, &rc,_T("Shell.Explorer.2"),WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN , 0);
 
                return 0;
        }
index b6c0ec3..e295e1d 100644 (file)
@@ -32,6 +32,7 @@ VOID CNicoVideoAuth::SetBrowserType(BROWSERTYPE bt){
                throw NLIBException(TEXT("\83j\83R\83j\83R\93®\89æ\94F\8fØ\8fî\95ñ\8eæ\93¾\82É\8e¸\94s\82µ\82Ü\82µ\82½"),rslt,__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
        }
        
+       InternetSetOption(0, INTERNET_OPTION_END_BROWSER_SESSION, NULL, 0); 
 }