高手!!帮忙!!!!急!!!!!!!

解决方案 »

  1.   

    首先创建一个区域,然后用SetWindowRgn就行了。
      

  2.   

    //set the window region
    CRect rc;
    CRgn rgn1, rgn2;
    GetWindowRect(&rc);

    rc.InflateRect(-SHADOWTHICKNESS, -SHADOWTHICKNESS, 0, 0);
    rgn1.CreateRectRgn(rc.left, rc.top, rc.right, rc.bottom); rc.OffsetRect(CPoint(-SHADOWTHICKNESS,-SHADOWTHICKNESS));
    rgn2.CreateRectRgn(rc.left,rc.top,rc.right,rc.bottom); rgn2.CombineRgn(&rgn1, &rgn2, RGN_OR); SetWindowRgn(rgn2, TRUE);
      

  3.   

    对Dialog而言,可以在OnInitDialog里

    HRGN hRgn = ::CreateEllipticRgn(int nLeftRect,int nTopRect,int nRightRect,int nBottomRect);建立椭圆
    然后::SetWindowRgn(m_hWnd, hRgn, TRUE);
    对BUTTON则
    先HWND hBtnWnd = ::GetDlgItem(m_hWnd, ID_BUTTONID);
    HRGN hBtnRgn = ::CreateEllipticRgn(int nLeftRect,int nTopRect,int nRightRect,int nBottomRect);建立椭圆
    然后::SetWindowRgn(hBtnWnd , hBtnRgn , TRUE);
      

  4.   

    SetWindowText(_T("椭圆窗口")); 
    // 取得屏幕宽、高 
    int cxScreen = ::GetSystemMetrics(SM_CXSCREEN); 
    int cyScreen = ::GetSystemMetrics(SM_CYSCREEN); 
    // 设置椭圆X、Y方向的半径 
    int nEllipseWidth = cxScreen/8; 
    int nEllipseHeight = cyScreen/8; 
    // 将窗口大小设为宽nEllipseWidth,高nEllipseHeight 
    // 并移至左上角 
    MoveWindow(0, 0, nEllipseWidth, nEllipseHeight); 
    // 创建椭圆区域m_rgnWnd 
    m_rgnWnd.CreateEllipticRgn(0, 0, nEllipseWidth, nEllipseHeight); 
    // 将m_rgnWnd设置为窗口区域 
    SetWindowRgn((HRGN)m_rgnWnd, TRUE);