图纸问题与启动,这是我想要实现但与白色区域的圆角,而不是在这样 子窗口在Win32
为了实现这一目标完全成功所需的外观,我已经确定要被制成白色矩形的屏幕坐标和创建的静态文本窗口和使用该设定圆形区域:
case WM_CREATE:
SetRect(&Rect,...);
hSubWnd = CreateWindow("STATIC",NULL,SS_LEFT|WS_CHILD|WS_VISIBLE,Rect.left,Rect.top,(Rect.right-Rect.left),(Rect.bottom-Rect.top),hFrame,(HMENU)NULL,NULL,NULL);
hrgn = CreateRoundRectRgn(Rect.left, Rect.top, Rect.right, Rect.bottom,15,15);
SetWindowRgn(hSubWnd,hrgn,TRUE);
然后到着色区域SETT上述我使用了以下内容:
case WM_CTLCOLORSTATIC:
//SetBkColor((HDC)wParam, RGB(0,0,0));
if((HWND)lParam == hSubWnd)
{
SetBkMode((HDC)wParam,TRANSPARENT);
return (INT_PTR)CreateSolidBrush(RGB(255,255,255));
}
break;
这使得该区域变成白色,但白色区域未按我的预期舍入。 这里是我的问题:
1-如何使SetWindowRgn()工作的子控件?我的方法是否正确或我需要采取其他方式来实现我的目标(四舍五入小孩的角落)?
2-父窗口启用了WS_CLIPCHILDREN样式,这意味着无论我在主窗口的WM_PAINT中做什么都不会绘制子窗口区域。我还需要将一些文本放入子窗口的白色区域。我在哪里做? TextOut()在WM_CTLCOLORSTATIC处理程序中似乎不起作用。
我应该将孩子的窗口类从“STATIC”更改为一些自定义类,并为孩子编写WindowProc(),其中我处理WM_PAINT以在其上绘制文本?
请提供您的建议。
是变量'hrgn'全球?对'SetWindowRgn()'的调用返回一个非零值吗? –