哪位高手可以详细的帮我讲一下:怎样把对话框改变成别的形状??还有把按键改成圆形的?? 在线等!! 高手!!帮忙!!!!急!!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先创建一个区域,然后用SetWindowRgn就行了。 //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); 对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); 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); VC 怎样在不设置子窗口的情况下使窗口紧贴桌面? 请教下高手们..(百度了一下没有合适答案) tcp服务端的问题 怎样得到文件得完整路径? 求助,谁有iphlpapi.dll,iphlpapi.lib,iphlpapi.h这三个文件,我网速太慢,无法下载最新的SDK 单文档中如何绑定一个事件处理函数到CButton的变量上? 水晶报表中,怎样对字段进行过滤,怎样设置过滤的变量 如何获得一个指针,HELPME!!!!!! CRecordView的问题 Pro*C程序设计问题,也可能是VC++的问题,高手请进! 如何控制线程执行时间? sdk的问题
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);
先
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);
// 取得屏幕宽、高
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);