我的一个程序有8个htmlview,html中程序会在不同的时间弹出提示对话框,
我现在想检测出到底是那个窗口弹出的消息框,请问如何解决

解决方案 »

  1.   

    可以给每类弹出框设相同的标题.如:MessageBox("内容","标题1",MB_OK)
      

  2.   

    因为是htmlview,他弹出的都是相关网站弹出的信息,内容不是由我们来控制的,
      

  3.   

    CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
    bool bFindWindows=false;
    while (pMainWnd)//先列举所有的窗口
    {
    CString strClassName;
    CString text;
    GetClassName(pMainWnd->m_hWnd,strClassName.GetBufferSetLength(100),100);
    ::GetWindowText(pMainWnd->m_hWnd,text.GetBufferSetLength(256),256);
     WINDOWINFO  pwi;
    ::GetWindowInfo(pMainWnd->m_hWnd,&pwi);

    text.MakeLower(); 

    if(::IsWindowVisible(pMainWnd->m_hWnd))
    if((strClassName=="#32770"&&(text.Find("microsoft internet")!=-1||text.Find("安全警报")!=-1)||
      (strClassName=="Internet Explorer_TridentDlgFrame"&&text.Find("脚本错误")!=-1)))//在window98下的ie广告类名为CabinetWClass)
    {
    if(::IsWindow(pMainWnd->m_hWnd))
    pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT);
    }
    我是用这样的方法检测弹出窗口的
    但是这样却无法判断是那个view弹出的
      

  4.   

    两位大哥说的对啊,好像除了这样别的方法不太好判断了,这个消息框好像是没有父窗口之类的东西,不太好办。在htmlview里边要弹出消息框的时候你总得写代码进行判断吧?那时候你久写上标题1标题2呗
    】=====================
     syy64(太平洋) ( ) 信誉:145    Blog  2006-11-21 14:39:02  得分: 0  
     
     
       每个窗口弹出的消息内容,然后再加上窗口标示的字符串,作为提示字符串。
      
     
    Top  
     zhucde(【風間苍月】★MVP★【虚拟闲人】) ( ) 信誉:272    Blog  2006-11-21 14:39:26  得分: 0  
     
     
       可以给每类弹出框设相同的标题.如:MessageBox("内容","标题1",MB_OK)
     
     
      

  5.   

    在每个htmlview的NewWindow时,控制弹出窗口,即可以在此修改弹出窗口标题
      

  6.   

    我试了一下截获OnNewWindow2是取不到消息的,因为弹出窗口的信息不是我们程序加上的,而上htmlview中的网页根据情况弹出的,所以很难判断出
      

  7.   

    在IE下载网页的内容的时候截获IE的OnNewWindow事件,对他进行重载.
      

  8.   

    OnNewWindow()是不会 截取下面弹出的内容的
    alert("Please enter user name & password");
      

  9.   

    http://community.csdn.net/Expert/topic/4830/4830933.xml?temp=.1040155
      

  10.   

    LZ的是多视图下,每个VIEW都打开网页,然后判断alert这种msgbox来自哪个网页(view)里弹出的?想不到办法,关注ing
      

  11.   

    确实,我观查了一下弹出的msgbox的父窗口不是其对应的view类,所以比较难判断
      

  12.   

    类似  重载 OnNewWindow 之类的方法,
      

  13.   

    void CMultiBrowserView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)
    我重载了,可是发现不了弹出的alert窗口
      

  14.   

    可以用工具看吧?比如VC6自带的SPY++
      

  15.   

    用了spy++看到弹出窗口类的父类是MainFrame,所以检测不到是哪个子类弹出的
      

  16.   

    OnNewWindow2是指弹出新的IE窗口,而楼主所说的alert弹出的窗口是对话框
    如果要想知道是哪个窗口弹出的,就要控制(拦截)每个htmlview中加载页面中JS的运行。
      

  17.   

    alert弹出之前或调用IDocHostShowUI::ShowMessage
      

  18.   

    http://junkple.spaces.live.com/blog/cns!be473e642bbaf80a!125.entry