鼠标基础

#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, 00))
        
    {
        
            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) ;
        
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值