为了账号安全,请及时绑定邮箱和手机立即绑定

为什么删除的变量又出现了,这是为什么?而且不会出错 -0 - 不明白!跪求高手解疑惑。

为什么删除的变量又出现了,这是为什么?而且不会出错 -0 - 不明白!跪求高手解疑惑。

烙印99 2022-08-04 18:14:29
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 管理

查看完整回答
反对 回复 2022-08-08
?
holdtom

TA贡献1805条经验 获得超10个赞

当窗口第一次创建时就会发出 WM_SIZE消息  if (hRgnClip) //  这时候 hRgnClip还未存在                

DeleteObject (hRgnClip) ;   hRgnClip    = CreateRectRgn (0, 0, 1, 1) ; // 当运行到这时, 

hRgnClip就被第一次初始化了   所以第一次创建时候  hRgnClip     就存在了

查看完整回答
反对 回复 2022-08-08
  • 2 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号