MFC Ribbon风格编辑框的使用和WebBrowser执行JavaScript代码

来源:互联网 发布:编译一个矩形java 程序 编辑:程序博客网 时间:2024/05/17 17:15

      最近在项目中需要使用MFC,我选择了Ribbon风格界面,Ribbon风格有它特殊的编辑控件,例如在Ribbon上放一个编辑控件和一个按钮,当我们双击按钮的时候就会读取编辑框中的数据并且通过WebBrowser控件执行JavaScript代码。

      首先我们在HTML页面中写好要调用的JS函数,例如:function search(str),那么我们首先要得到编辑框中的值,由于CMFCRibbonBar是CMainFrame类的保护成员,我们的按钮相应函数应该放在CMainFrame类中。

       获得内容的具体代码如下:       

    在此之前要相应此编辑框的OnUpdateEditXXX(CCmdUI *pCmdUI)事件    加入此句: pCmdUI->Enable(TRUE);    这样编辑框才可以编辑    CMFCRibbonCategory* pRibbonUICategory = m_wndRibbonBar.GetCategory(1);  //获得主页,主页的id是1    CMFCRibbonPanel* pPanel = pRibbonUICategory->GetPanel(2) ; //获得第3个面板,从左到右是0,1,2,..    CMFCRibbonEdit* pElem = (CMFCRibbonEdit*)pPanel->GetElement(1); //获得第2个元素,即编辑框的值(也从0开始)    //(pElem->GetText());         //获得控件的名字,而不是编辑框的值    location = pElem->GetEditText();        //获得编辑框的值

     获得数据后,我们把它放在 CString data中,然后通过函数来执行它。

     CFrameWnd* pFrame = (CFrameWnd*)AfxGetMainWnd();       首先获取View类中的WebBrowser控件变量     CExplorer1* m_WebBrowser = (CExplorer1*)(pFrame->GetActiveView()->GetDlgItem(IDC_EXPLORER1));     IHTMLDocument2* pHTMLDoc = (IHTMLDocument2*)m_WebBrowser->get_Document();  if ( pHTMLDoc != NULL )  {  IHTMLWindow2* pHTMLWnd;  pHTMLDoc->get_parentWindow( &pHTMLWnd );  if ( pHTMLWnd != NULL )  {CString js_code;js_code.Format(L"goToLocation('%s');",JScode);   //JS函数名+参数VARIANT  ret;  ret.vt = VT_EMPTY;pHTMLWnd->execScript(js_code.AllocSysString(), L"Javascript", &ret);}}

        到这,我们的目的就都达到了。。