我用接口IMarkupPointer 的方法FindText,无法查找到网页里相应的结果。网页里采用了display:none的样式

解决方案 »

  1.   

    你怎么使用FindText这个方法的?可以具体说下,是不是参数使用的有问题哦,是都不能查找到呢?还有某些呢?这和你说的样式有关系么?
      

  2.   

    HRESULT hr = S_FALSE;
    if( *pMarkupcontainer == NULL )
    {
    hr = pDoc2->QueryInterface( IID_IMarkupContainer, (void **) pMarkupcontainer );
    if( hr != S_OK )
    return;
    }
    if( *pMarkSer == NULL )
    {
    hr = pDoc2->QueryInterface( IID_IMarkupServices, (void **) pMarkSer );
    if( hr != S_OK )
    return;
    } if( *pMarkPtrStart == NULL )
    {
    // need two pointers for ing
    hr = (*pMarkSer)->CreateMarkupPointer(  pMarkPtrStart );
    if( hr != S_OK )
    return;
    }
    if( *pMarkPtrEnd == NULL )
    {
    // beginning and ending position of text.
    hr = (*pMarkSer)->CreateMarkupPointer(  pMarkPtrEnd ); 
    if( hr != S_OK )
    return;
    } // Set gravity of this pointer so that when the replacement text
    // is inserted it will float to be after it.
    hr = (*pMarkPtrStart)->SetGravity( POINTER_GRAVITY_Right );
    if( hr != S_OK )
    return;
    hr = (*pMarkPtrEnd)->SetGravity( POINTER_GRAVITY_Left );
    if( hr != S_OK )
    return; // Start the search at the beginning of the primary container
    hr = (*pMarkPtrStart)->MoveToContainer( *pMarkupcontainer, TRUE );
    if( hr != S_OK )
    return;
    hr = (*pMarkPtrEnd)->MoveToContainer( *pMarkupcontainer, FALSE );
    if( hr != S_OK )
    return; DWORD dwFlags = 0;
    if( m_bMatchCase )
    dwFlags |= FINDTEXT_MATCHCASE; for( ; ;)
    {
    hr = (*pMarkPtrStart)->FindText( m_bszSearchText, dwFlags, *pMarkPtrEnd, NULL );
    }
      

  3.   

    就是上面那样用的啊。但是如果页面里面存在两个字符,一个字符隐藏,一个不隐藏。结果findtext只找到隐藏的。
      

  4.   

    pMarkPtrStart MoveToPointer 到 pMarkPtrEnd 了吗?