◀ANSI版開発トップへ
  • 1680 画面最大化時の右下のリサイズ表示
    • 1681 RE: 画面最大化時の右下のリサイズ表示
      • 1682 Re2: 画面最大化時の右下のリサイズ表示
        • 1683 Re3: 画面最大化時の右下のリサイズ表示
      • 1688 RE: 画面最大化時の右下のリサイズ表示
        • 1689 RE: 画面最大化時の右下のリサイズ表示
          • 1692 Re2: 画面最大化時の右下のリサイズ表示
  • [1680] 画面最大化時の右下のリサイズ表示 みく 2002年03月03日 20:51


    解析ダイアログと印刷プレビュー画面を最大化したとき、
    右下のリサイズバー(?)がおかしな動きをするバグを修正してみました。
    (単に表示・非表示切り替えするだけですけど)

    CDialog.cpp:216行目付近のInvalidateRectの前
    + if( wParam == SIZE_MAXIMIZED ){
    + ::ShowWindow( m_hwndSizeBox, SW_HIDE );
    + }else{
    + ::ShowWindow( m_hwndSizeBox, SW_SHOW );
    + }
    ::InvalidateRect( m_hwndSizeBox, NULL, TRUE );
    }
    return FALSE;
    }

    CPrintPreview.cpp:286行目付近のInvalidateRectの前
    + if( NULL != m_hwndSizeBox ){
    + if( wParam == SIZE_MAXIMIZED ){
    + ::ShowWindow( m_hwndSizeBox, SW_HIDE );
    + }else{
    + ::ShowWindow( m_hwndSizeBox, SW_SHOW );
    + }
    + }
    ::InvalidateRect( m_pParentWnd->m_hWnd, NULL, TRUE );
    return 0L;
    }
    • [1681] RE: 画面最大化時の右下のリサイズ表示 みく 2002年03月03日 22:03


      最大化の状態で開くと残ったままです。
      #そんな簡単じゃなかったようで。。。

      あと、解析ダイアログを最大化して閉じた後再び開くと
      デスクトップいっぱいの、でっかい画面になってしまいます。
      • [1682] Re2: 画面最大化時の右下のリサイズ表示 やざき 2002年03月03日 22:48

        ▼ みくさん
        >
        > 最大化の状態で開くと残ったままです。
        > #そんな簡単じゃなかったようで。。。
        >
        > あと、解析ダイアログを最大化して閉じた後再び開くと
        > デスクトップいっぱいの、でっかい画面になってしまいます。

        おお。これをヒントにさらに修正しました。

        CDialog.cppのOnDestroy()で、

        /* ウィンドウ位置・サイズを記憶 */
        WINDOWPLACEMENT cWindowPlacement;
        cWindowPlacement.length = sizeof( WINDOWPLACEMENT );
        ::GetWindowPlacement( m_hWnd, &cWindowPlacement );
        m_nShowCmd = cWindowPlacement.showCmd; // 最大化・最小化
        m_xPos = cWindowPlacement.rcNormalPosition.left;
        m_yPos = cWindowPlacement.rcNormalPosition.top;
        m_nWidth = cWindowPlacement.rcNormalPosition.right - cWindowPlacement.rcNormalPosition.left;
        m_nHeight = cWindowPlacement.rcNormalPosition.bottom - cWindowPlacement.rcNormalPosition.top;

        OnInitDialog()で、

        /* ウィンドウ位置・サイズを再現 */
        WINDOWPLACEMENT cWindowPlacement;
        cWindowPlacement.length = sizeof( WINDOWPLACEMENT );
        cWindowPlacement.showCmd = m_nShowCmd; // 最大化・最小化
        cWindowPlacement.rcNormalPosition.left = m_xPos;
        cWindowPlacement.rcNormalPosition.top = m_yPos;
        cWindowPlacement.rcNormalPosition.right = m_nWidth - m_xPos;
        cWindowPlacement.rcNormalPosition.bottom = m_nHeight - m_yPos;
        ::SetWindowPlacement( m_hWnd, &cWindowPlacement );

        これでうまくいくみたい。混ぜときますね。

        #でも印刷プレビューでは、右下のボックスが見えなくなって、下地(というのか?)が透けてしまうんですね。これはまたそのうちってことで :-)
        • [1683] Re3: 画面最大化時の右下のリサイズ表示 やざき 2002年03月03日 22:56

          まちがい

          > cWindowPlacement.rcNormalPosition.right = m_nWidth - m_xPos;
          > cWindowPlacement.rcNormalPosition.bottom = m_nHeight - m_yPos;

          cWindowPlacement.rcNormalPosition.right = m_nWidth + m_xPos;
          cWindowPlacement.rcNormalPosition.bottom = m_nHeight + m_yPos;

          でした。
      • [1688] RE: 画面最大化時の右下のリサイズ表示 みく 2002年03月04日 19:16

        >タイトル: RE: 画面最大化時の右下のリサイズ表示
        >発言者: みく
        >最大化の状態で開くと残ったままです。

        最大化状態でプレビューを開いたときの対応です。

        CPrintPreview.cpp
        if( NULL != m_hwndSizeBox ){
        if( wParam == SIZE_MAXIMIZED ){
        ::ShowWindow( m_hwndSizeBox, SW_HIDE );
        + }else if( wParam == SIZE_RESTORED ){
        + if( ::IsZoom( m_pParentWnd->m_hWnd ) ){
        + ::ShowWindow( m_hwndSizeBox, SW_HIDE );
        + }else{
        + ::ShowWindow( m_hwndSizeBox, SW_SHOW );
        + }
        }else{
        ::ShowWindow( m_hwndSizeBox, SW_SHOW );
        }
        }
        ::InvalidateRect( m_pParentWnd->m_hWnd, NULL, TRUE );
        return 0L;
        }
        • [1689] RE: 画面最大化時の右下のリサイズ表示 みく 2002年03月04日 19:18


          すいません。

          >+ if( ::IsZoomed( m_pParentWnd->m_hWnd ) ){

          でした。
          • [1692] Re2: 画面最大化時の右下のリサイズ表示 やざき 2002年03月05日 00:46

            ▼ みくさん
            取り込みました。さんくす。