Last Updated 2004/07/20
Programming Tips Visual C++ MFC ウィンドウ  索 引 
ウィンドウの3D枠消去
2004/07/20

ウィンドウの3D枠を消去する.完全ではないがそれなりの見栄えとなる.

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    if( cs.style & WS_THICKFRAME ) {
        cs.style &= ~WS_THICKFRAME;
    }
    return CFrameWnd::PreCreateWindow(cs);
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
    if( CFrameWnd::OnCreate( lpCreateStruct ) == -1 )
        return -1;

    // エッジを無くす
    DWORD dwExStyle = GetWindowLong( m_hWnd, GWL_EXSTYLE );
    dwExStyle &= ~WS_EX_WINDOWEDGE;
    dwExStyle &= ~WS_EX_CLIENTEDGE;
    SetWindowLong( m_hWnd, GWL_EXSTYLE, dwExStyle );

    SetWindowPos(NULL, 0, 0, 0, 0,
                 SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE |
                                 SWP_NOZORDER | SWP_FRAMECHANGED);

    return 0;
}


int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
    if( CView::OnCreate( lpCreateStruct ) == -1 )
        return -1;

    // ここでもエッジを消すようにする
    DWORD dwExStyle = GetWindowLong( m_hWnd, GWL_EXSTYLE );
    dwExStyle &= ~WS_EX_WINDOWEDGE;
    dwExStyle &= ~WS_EX_CLIENTEDGE;
    SetWindowLong( m_hWnd, GWL_EXSTYLE, dwExStyle );

    return 0;
}


参照
VB のようなフォーム
前後のTips
ウィンドウの3D枠消去

DSS ProgrammingTipsCGI Ver2.02