◀ANSI版開発トップへ
  • 1408 メモです。
    • 1442 Re:メモです。
  • [1408] メモです。 hor 2002年01月30日 00:53

    ・改行位置より後ろにキャレットがあるときに正規表現で下検索を行うと、その行の改行位置に移動してしまう。
    ・ステータスバーがあればステータスバーに、無い時はウィンドウタイトルにメッセージを送ります。
    ( 置換ダイアログが出てるときはなぜかうまく行かない… )

    void CEditView::SendStatusMassage( const char* msg ){
    CEditWnd* pCEditWnd = ( CEditWnd* )::GetWindowLong( ::GetParent( m_hwndParent ) , GWL_USERDATA );
    if( NULL == pCEditWnd->m_hwndStatusBar ){
    HDC hdc;
    POINT po,poFrame;
    RECT rc,rcFrame;
    HFONT hFontOld;
    HWND hwndFrame;
    int nStrLen;
    char szText[64];
    wsprintf( szText, "%s ", msg );
    hwndFrame = ::GetParent( m_hwndParent );
    hdc = ::GetWindowDC( hwndFrame );
    poFrame.x = 0;
    poFrame.y = 0;
    ::ClientToScreen( hwndFrame, &poFrame );
    ::GetWindowRect( hwndFrame, &rcFrame );
    po.x = rcFrame.right - rcFrame.left;
    po.y = poFrame.y - rcFrame.top;
    hFontOld = (HFONT)::SelectObject( hdc, m_hFontCaretPosInfo );
    nStrLen = 30;
    rc.left = po.x - nStrLen * m_nCaretPosInfoCharWidth - 5;
    rc.right = rc.left + nStrLen * m_nCaretPosInfoCharWidth;
    rc.top = po.y - m_nCaretPosInfoCharHeight - 2;
    rc.bottom = rc.top + m_nCaretPosInfoCharHeight;
    ::SetTextColor( hdc, ::GetSysColor( COLOR_MENUTEXT ) );
    ::SetBkColor( hdc, ::GetSysColor( COLOR_MENU ) );
    ::ExtTextOut( hdc,rc.left,rc.top,ETO_OPAQUE,&rc,szText,nStrLen,m_pnCaretPosInfoDx);
    ::SelectObject( hdc, hFontOld );
    ::ReleaseDC( hwndFrame, hdc );
    }else{
    ::SendMessage( pCEditWnd->m_hwndStatusBar,SB_SETTEXT,0 | SBT_NOBORDERS,(LPARAM) (LPINT)msg );
    }
    }
    • [1442] Re:メモです。 hor 2002年02月01日 19:27

      > ・改行位置より後ろにキャレットがあるときに正規表現で下検索を行うと、その行の改行位置に移動してしまう。

      CDocLineMgr.cpp(1842)
      if( pRegexp->GetMatchInfo( pLine, nLineLen, nIdxPos, &pRegexpData ) ){
      ↓
      if( nIdxPos<=(nLineLen-pDocLine->m_cEol.GetLen() ) &&
      pRegexp->GetMatchInfo( pLine, nLineLen, nIdxPos, &pRegexpData ) ){
      で解決。

      > ・ステータスバーがあればステータスバーに、無い時はウィンドウタイトルにメッセージを送ります。
      > ( 置換ダイアログが出てるときはなぜかうまく行かない… )

      ウィンドウタイトルじゃなくて、メニューバー。