鼠标基础

#include  < windows.h >
        
#define  MAXPOINTS 1000
        
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
        

int  WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
        
                                          PSTR szCmdLine, 
int  iCmdShow)
        
{
        
    
static  TCHAR  szAppName[]  =  TEXT ( " Connect " ) ;
        
    HWND                          hwnd ;
        
    MSG                           msg ;
        
    WNDCLASS                      wndclass ;
        
   
        
    wndclass.style                               
=  CS_HREDRAW  |  CS_VREDRAW ;
        
    wndclass.lpfnWndProc                 
=  WndProc ;
        
    wndclass.cbClsExtra                          
=   0  ;
        
    wndclass.cbWndExtra                          
=   0  ;
        
    wndclass.hInstance                           
=  hInstance ;
        
    wndclass.hIcon                               
=  LoadIcon (NULL, IDI_APPLICATION) ;
        
    wndclass.hCursor                             
=  LoadCursor (NULL, IDC_ARROW) ;
        
    wndclass.hbrBackground                      
=  (HBRUSH) GetStockObject (WHITE_BRUSH) ;
        
    wndclass.lpszMenuName                        
=  NULL ;
        
    wndclass.lpszClassName 
=  szAppName ;
        
    
if  ( ! RegisterClass ( & wndclass))
        
    {
        
            MessageBox (NULL, TEXT (
" Program requires Windows NT! " ),
        
                                                  szAppName, MB_ICONERROR) ;
        
            
return   0  ;
        
    }
        
   
        
    hwnd 
=  CreateWindow (szAppName, TEXT ( " Connect-the-Points Mouse Demo " ),
        
                                                          WS_OVERLAPPEDWINDOW,
        
                                                          CW_USEDEFAULT, CW_USEDEFAULT,
        
                                                          CW_USEDEFAULT, CW_USEDEFAULT,
        
                                                          NULL, NULL, hInstance, NULL) ;
        
   
        
    ShowWindow (hwnd, iCmdShow) ;
        
    UpdateWindow (hwnd) ;
        
  
        
    
while  (GetMessage ( & msg, NULL,  0 0 ))
        
    {
        
            TranslateMessage (
& msg) ;
        
            DispatchMessage (
& msg) ;
        
    }
        

return  msg.wParam ;
        
}
        

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)
        
{
        
    
static  POINT pt[MAXPOINTS] ;
        
    
static   int             iCount ;
        
    HDC                           hdc ;
        
    
int                          i, j ;
        
    PAINTSTRUCT  ps ;
        
    
switch  (message)
        
    {
        
    
case    WM_LBUTTONDOWN:
        
            iCount 
=   0  ;
        
            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) ;
        
             
        
                           hdc 
=  GetDC (hwnd) ;
        
                           SetPixel (hdc, LOWORD (lParam), HIWORD (lParam), 
0 ) ;
        
                           ReleaseDC (hwnd, hdc) ;
        
            }
        
                                  
return   0  ;
        
        
        
           
case    WM_LBUTTONUP:
        
                  InvalidateRect (hwnd, NULL, FALSE) ;
        
                  
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[j].x, pt[j].y) ;
        
             }
        

                  ShowCursor (FALSE) ;
        
                  SetCursor (LoadCursor (NULL, IDC_ARROW)) ;
        
                  EndPaint (hwnd, 
& ps) ;
        
                  
return   0  ;
        
             
        
           
case    WM_DESTROY:
        
                  PostQuitMessage (
0 ) ;
        
                  
return   0  ;
        
           }
        
           
return  DefWindowProc (hwnd, message, wParam, lParam) ;
        
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值