说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

一个鼠标画图的小问题(关于刷新整个客户区)!!!

编辑:说三道四文库 发布时间:2018-01-22 08:33
HTML文档下载 WORD文档下载 PDF文档下载
一个鼠标画图的小问题(关于刷新整个客户区)!!!

 switch (message)
     {
//鼠标左键画图
 case WM_LBUTTONDOWN:
 iCount = 0;
 InvalidateRect(hwnd,NULL,FALSE);
  return 0;

//鼠标右键刷新整个客户区,变白。

//画几条线,但按下右键总有最后画的一条还在!
 case WM_RBUTTONDOWN:
 hdc = GetDC (hwnd);
 rect.left = 0;
      rect.top = 0;
         rect.right = LOWORD(lParam);
     rect.bottom = HIWORD(lParam);
 //单独用InvalidateRect(hwnd,NULL,TRUE);也不行。
 InvalidateRect(hwnd,NULL,TRUE);
         ReleaseDC (hwnd,hdc);
  return 0;
//
case WM_MOUSEMOVE:
 if( wParam & MK_LBUTTON && iCount < 1000 )
 {
 pt[iCount  ].x = LOWORD(lParam);
 pt[iCount  ].y = HIWORD(lParam);
 iCount++;

 hdc = GetDC (hwnd);
 InvalidateRect(hwnd,NULL,FALSE);
 ReleaseDC (hwnd,hdc);
 }  
 return 0;

     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;

  for ( i=0; i < iCount - 1 ;i++)
    // for( j = i + 1; j < iCount; j++)
 {
 MoveToEx(hdc,pt[i].x,pt[i].y,NULL);
 LineTo (hdc,pt[i+1].x,pt[i+1].y);
 }
 EndPaint (hwnd, &ps) ;
          return 0 ;

我不知道你在:WM_RBUTTONDOWN和WM_MOUSEMOVE中使用GetDC()干什么用?
WM_MOUSEMOVE中使用GetDC()是为了鼠标在客户区中拖动时留下痕迹。

《Windows 程序设计》中用了GetDC()。



WM_RBUTTONDOWN我想让鼠标右键刷新客户区,使之变白。
没有实现,就乱试一下。的确不该用。
    switch (message)
     {

 case WM_LBUTTONDOWN:
 iCount = 0;
 InvalidateRect(hwnd,NULL,FALSE);
  return 0;

 case WM_RBUTTONDOWN:
 InvalidateRect(hwnd,NULL,TRUE);
  return 0;
             
 case WM_MOUSEMOVE:
 if( wParam & MK_LBUTTON && iCount < 1000 )
 {
 pt[iCount  ].x = LOWORD(lParam);
 pt[iCount  ].y = HIWORD(lParam);
 iCount++;
 
 hdc = GetDC (hwnd);
 InvalidateRect(hwnd,NULL,FALSE);
 ReleaseDC (hwnd,hdc);
 
 }
 
 return 0;

     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;

  SetCursor(LoadCursor(NULL,IDC_WAIT));
  ShowCursor(TRUE);

  for ( i=0; i < iCount - 1 ;i++)
    // for( j = i + 1; j < iCount; j++)
 {
 MoveToEx(hdc,pt[i].x,pt[i].y,NULL);
 LineTo (hdc,pt[i+1].x,pt[i+1].y);
 }

 ShowCursor(FALSE);
 SetCursor ( LoadCursor(NULL,IDC_ARROW));
          
          EndPaint (hwnd, &ps) ;
          return 0 ;
鼠标右建点下后应该先把记录点的数组pt清空再InvalidateRect.因为InvalidateRect会导致
WM_PAINT消息啊。
这样好了!
 case WM_RBUTTONDOWN:
       iCount = 0;
       InvalidateRect(hwnd,NULL,TRUE);
       return 0;
          
谢谢!
编程从娃娃抓起:13岁儿童的移动游戏之梦 新浪管理层调整 许良杰任CTO兼联席总裁 Java,你还会让多少人继续“受伤”? 中国或超美国 成全球智能设备市场霸主 告别手写 API文档生成工具推荐 自定义控件的事件,定义之后在使用时总是回传数据,不管有没有响应代码... 什么是字节码?什么是机械码? 我作为一个网站项目的中介人,我找到一个技术员,打算带她见客户 请教高手:关于两个网页交互的问题 调用存储过程insert记录时出错,帮我看一看。 WEB服务器控件怎么只实现客户端的事件响应啊? ... 【散】兄弟们 有啥好办法吗? 通信中的错误检验 十六进制和10进制的转化 Hearing the news that he I could hardly believe my 应该如何教育孩子助人为乐 英语语法,句子结构remember that th 英语语法中的句子结构是? 分解因式3m(m+n)-6(m²-n&# 一处风景优美的地方的作文 社会学的学科特点?社会学这门学科有哪些特点? 社会学的学科特点是什么? 墨西哥警察路边与女子发生性关系视频网解放军三大舰队在西太平洋完成三轮实兵孕妇就医多次碰壁 医生:医患关系紧张美国拒绝回应“在北京、上海等地设监听乡镇卫生院腐败高发 卫生院长称不收回家里常出现成片死虫子市民求支招小长假首日最高38℃娱乐类节目昨起停播5日 抗战题材剧成各种让人爆笑的原因西安又一家“一站式托管学习中心”开业武道霸主至尊兵王东方之双子星逆天的马贼重生之完美人生上海游龙石文化科普馆旅游八音盒珍品陈列馆旅游宝山国际民间艺术博览馆旅游建德灵栖洞旅游中峰寺旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘