这个程序单击鼠标右键记录鼠标进过的所有点 弹起鼠标右键 见经过的店连起来 但是会出现一些不明白的线条 望前辈指点一二 谢谢
代码:::::::::::::::#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;
}
代码:::::::::::::::#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;
}
我的QQ1006817093
{
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;
看看这个是不是你要的效果,
#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;
}
//po1.x = LOWORD(lparam);这两句不需要,可以注释
//po1.y = HIWORD(lparam);
bo1=FALSE;
break;
高手如果我放在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;
}