LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam){static HRGN hRgnClip ; //创建hRgnClip 我想问的问题。static int cxClient, cyClient ;double fAngle, fRadius ; //角度,半径HCURSOR hCursor ; //光标句柄HDC hdc ;HRGN hRgnTemp[6] ; //范围int i ;PAINTSTRUCT ps ; //绘图结构。switch (iMsg){case WM_SIZE:cxClient = LOWORD (lParam) ; //客户区长cyClient = HIWORD (lParam) ; //客户区高hCursor = SetCursor (LoadCursor (NULL, IDC_WAIT)) ; //// 函数功能:该函数确定光标的形状。ShowCursor (TRUE) ;//该函数显示或隐藏光标。if (hRgnClip) //为什么这么做呢?DeleteObject (hRgnClip) ; //hRgnClip 到这怎么就把他给删除了?连初始化都没做,也没用到这个变量,就把他删除,为什么要创建。hRgnTemp[0] = CreateEllipticRgn (0, cyClient / 3, cxClient / 2, 2 * cyClient / 3) ;//创建一个椭圆hRgnTemp[1] = CreateEllipticRgn (cxClient / 2, cyClient / 3, cxClient, 2 * cyClient / 3) ;hRgnTemp[2] = CreateEllipticRgn (cxClient / 3, 0, 2 * cxClient / 3, cyClient / 2) ;hRgnTemp[3] = CreateEllipticRgn (cxClient / 3, cyClient / 2, 2 * cxClient / 3, cyClient) ;hRgnTemp[4] = CreateRectRgn (0, 0, 1, 1) ;hRgnTemp[5] = CreateRectRgn (0, 0, 1, 1) ;hRgnClip = CreateRectRgn (0, 0, 1, 1) ; //
2 回答

慕神8447489
TA贡献1780条经验 获得超1个赞
if (hRgnClip) // 检查是否已存在矩形句柄, 是的话将它删除
DeleteObject (hRgnClip) ;
hRgnClip = CreateRectRgn (0, 0, 1, 1) ; // 这里只是创建了矩形并返回了矩形句柄 交给了hRgnClip 管理

holdtom
TA贡献1805条经验 获得超10个赞
当窗口第一次创建时就会发出 WM_SIZE消息 if (hRgnClip) // 这时候 hRgnClip还未存在
DeleteObject (hRgnClip) ; hRgnClip = CreateRectRgn (0, 0, 1, 1) ; // 当运行到这时,
hRgnClip就被第一次初始化了 所以第一次创建时候 hRgnClip 就存在了
- 2 回答
- 0 关注
- 180 浏览
添加回答
举报
0/150
提交
取消