这个程序单击鼠标右键记录鼠标进过的所有点   弹起鼠标右键 见经过的店连起来  但是会出现一些不明白的线条  望前辈指点一二  谢谢  
代码:::::::::::::::#include<windows.h>
#include<stdlib.h>
#include<stdio.h>
LRESULT CALLBACK WinProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInt,LPSTR lpsznCmdLine,int nCmdShow)
{
    WNDCLASS wndclass;
MSG msg;
HWND hwnd;
LPCTSTR lpszClassName="Lesson6";
LPCTSTR lpszTitle="习题6__8"; wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WinProc;
wndclass.lpszClassName=lpszClassName;
wndclass.lpszMenuName=NULL;
wndclass.style=CS_VREDRAW|CS_HREDRAW;

if(!RegisterClass(&wndclass))
{
   MessageBeep(0);
   return FALSE;
} hwnd=CreateWindow(
               lpszClassName,
   lpszTitle,
   WS_OVERLAPPEDWINDOW,
   CW_USEDEFAULT,
   CW_USEDEFAULT,
   CW_USEDEFAULT,
   CW_USEDEFAULT,
   NULL,
   NULL,
   hInstance,
   NULL
                  ); ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0))
{
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{
  HDC hdc;
 static POINT po1,po2,po3[1000];
 static BOOL  bo1=FALSE;
 static int i=0;
  switch(message)
  {
  case WM_LBUTTONDOWN:
        po1.x=LOWORD(lparam);
po1.y=HIWORD(lparam);
bo1=TRUE;
  break;
  case WM_MOUSEMOVE:
    if(bo1)
{
        po2.x=LOWORD(lparam);
po2.y=HIWORD(lparam);
po3[i]=po2;
i++;
}
break;
  case WM_LBUTTONUP:
     hdc=GetDC(hwnd);
         Polyline(hdc,po3,1000);
 bo1=FALSE;
break;
  case WM_DESTROY:
        PostQuitMessage(0);
 default :
 return DefWindowProc(hwnd,message,wparam,lparam);
  }
  return 0;
}

解决方案 »

  1.   

    在此也找学习VC/MFC的朋友么   希望指点小弟   望前辈能留下QQ加个好友   小弟感激不进
    我的QQ1006817093
      

  2.   

    switch(message)
     {
     case WM_LBUTTONDOWN:
     po1.x=LOWORD(lparam);
     po1.y=HIWORD(lparam);
     bo1=TRUE;
     po3[i]=po1;
     i=1;
     break;
     case WM_MOUSEMOVE:
     if(bo1)
     {
     po2.x=LOWORD(lparam);
     po2.y=HIWORD(lparam);
     po3[i]=po2;
     i++;
     }
     break;
     case WM_LBUTTONUP:
     hdc=GetDC(hwnd);
     Polyline(hdc,po3,i);
     bo1=FALSE;
     i=1;
     break;
    看看这个是不是你要的效果,
      

  3.   

    你是要这个效果???#include<windows.h>
    #include<stdlib.h>
    #include<stdio.h>LRESULT CALLBACK WinProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInt,LPSTR lpsznCmdLine,int nCmdShow)
    {
    WNDCLASS wndclass;
    MSG msg;
    HWND hwnd;
    LPCTSTR lpszClassName=_T("Lesson6");
    LPCTSTR lpszTitle=_T("Ï°Ìâ6__8");

    wndclass.cbClsExtra=0;
    wndclass.cbWndExtra=0;
    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hInstance=hInstance;
    wndclass.lpfnWndProc=WinProc;
    wndclass.lpszClassName=lpszClassName;
    wndclass.lpszMenuName=NULL;
    wndclass.style=CS_VREDRAW|CS_HREDRAW;

    if(!RegisterClass(&wndclass))
    {
    MessageBeep(0);
    return FALSE;
    }

    hwnd=CreateWindow(
    lpszClassName,
    lpszTitle,
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL
    );

    ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd);

    while(GetMessage(&msg,NULL,0,0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    return msg.wParam;
    }
    LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
    {
    HDC hdc;
    static POINT po1,po2/*,po3[1000]*/;
    static BOOL bo1=FALSE;
    // static int i=0;
    switch(message)
    {
    case WM_LBUTTONDOWN:
    po1.x=LOWORD(lparam);
    po1.y=HIWORD(lparam);
    bo1=TRUE;
    break;
    case WM_MOUSEMOVE:
    if(bo1)
    {
    po2.x=LOWORD(lparam);
    po2.y=HIWORD(lparam);
    hdc=GetDC(hwnd);
    MoveToEx(hdc, po1.x, po1.y, &po1);
    LineTo(hdc, po2.x, po2.y);
    po1 = po2;
    }
    break;
    case WM_LBUTTONUP:
    po1.x = LOWORD(lparam);
    po1.y = HIWORD(lparam);
    bo1=FALSE;
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    default :
    return DefWindowProc(hwnd,message,wparam,lparam);
    }
    return 0;
    }
      

  4.   

     case WM_LBUTTONUP:
            //po1.x = LOWORD(lparam);这两句不需要,可以注释
            //po1.y = HIWORD(lparam);
            bo1=FALSE;
            break;
      

  5.   


    高手如果我放在WM_PAINT  中处理 又会出现一条莫名的 线  
    这到底是为什么呀代码  :::::::::::
    #include<windows.h>
    #include<stdlib.h>
    #include<stdio.h>
    LRESULT CALLBACK WinProc(HWND,UINT,WPARAM,LPARAM);
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInt,LPSTR lpsznCmdLine,int nCmdShow)
    {
        WNDCLASS wndclass;
    MSG msg;
    HWND hwnd;
    LPCTSTR lpszClassName="Lesson6";
    LPCTSTR lpszTitle="习题6__8"; wndclass.cbClsExtra=0;
    wndclass.cbWndExtra=0;
    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hInstance=hInstance;
    wndclass.lpfnWndProc=WinProc;
    wndclass.lpszClassName=lpszClassName;
    wndclass.lpszMenuName=NULL;
    wndclass.style=CS_VREDRAW|CS_HREDRAW;

    if(!RegisterClass(&wndclass))
    {
       MessageBeep(0);
       return FALSE;
    } hwnd=CreateWindow(
                   lpszClassName,
       lpszTitle,
       WS_OVERLAPPEDWINDOW,
       CW_USEDEFAULT,
       CW_USEDEFAULT,
       CW_USEDEFAULT,
       CW_USEDEFAULT,
       NULL,
       NULL,
       hInstance,
       NULL
                      ); ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd); while(GetMessage(&msg,NULL,0,0))
    {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
    return msg.wParam;
    }
    LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
    {
      HDC hdc;
      PAINTSTRUCT ps;
      HBRUSH hb=(HBRUSH)GetStockObject(BLACK_BRUSH);
     static POINT po1,po2,po3[1000];
     static BOOL  bo1=FALSE;
     static int i=0;
      switch(message)
      {
      case WM_LBUTTONDOWN:
        po1.x=LOWORD(lparam);
    po1.y=HIWORD(lparam);
    bo1=TRUE;
    po3[i]=po1;
    i=1;
      break;
      case WM_MOUSEMOVE:
        if(bo1)
    {
            po2.x=LOWORD(lparam);
    po2.y=HIWORD(lparam);
    po3[i]=po2;
    i++;
    }
    break;
      case WM_LBUTTONUP:
        InvalidateRect(hwnd,NULL,FALSE);
    break;
      case WM_PAINT:
         hdc=BeginPaint(hwnd,&ps);
         hdc=GetDC(hwnd);
             Polyline(hdc,po3,i);
             i=1;
     bo1=FALSE;
     EndPaint(hwnd,&ps);
     break;
      case WM_DESTROY:
            PostQuitMessage(0);
     default :
     return DefWindowProc(hwnd,message,wparam,lparam);
      }
      return 0;
    }