代码如下
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
//***********************
MoveToEx(hdc,pt[0].x,pt[0].y,NULL);
LineTo(hdc,pt[1].x,pt[1].y);
//***********************
EndPaint(hWnd, &ps);
break;
//**************************************//
case WM_LBUTTONDOWN:
pt[0].x=LOWORD(lParam);
pt[0].y=HIWORD(lParam);
break;
case WM_LBUTTONUP:
pt[1].x=LOWORD(lParam);
pt[1].y=HIWORD(lParam);
InvalidateRect(hWnd,NULL,false);
break;
case WM_MOUSEMOVE:
pt[1].x=LOWORD(lParam);
pt[1].y=HIWORD(lParam);
InvalidateRect(hWnd,NULL,true);//问题就是这里应该用什么语句来保存画的东西呢,但也不能有连续的很多线条指向第二个点的线条
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
//***********************
MoveToEx(hdc,pt[0].x,pt[0].y,NULL);
LineTo(hdc,pt[1].x,pt[1].y);
//***********************
EndPaint(hWnd, &ps);
break;
//**************************************//
case WM_LBUTTONDOWN:
pt[0].x=LOWORD(lParam);
pt[0].y=HIWORD(lParam);
break;
case WM_LBUTTONUP:
pt[1].x=LOWORD(lParam);
pt[1].y=HIWORD(lParam);
InvalidateRect(hWnd,NULL,false);
break;
case WM_MOUSEMOVE:
pt[1].x=LOWORD(lParam);
pt[1].y=HIWORD(lParam);
InvalidateRect(hWnd,NULL,true);//问题就是这里应该用什么语句来保存画的东西呢,但也不能有连续的很多线条指向第二个点的线条
break;
解决方案 »
- CDHtmlDialog有CommandStateChange事件吗?
- MFC程序调试时出现debug assertion failed line 146
- 求救,CStatic继承类问题
- SetWindowsHookEx(WH_KEYBOARD)
- MFC中如何打开一个文件对话框,既可以选择文件又可以选择目录,然后打开这个文件(或多个文件)或目录
- htmlview/htmdialog怎么屏蔽那个该死的查看原代码的菜单?
- char name[256]的初值该怎么设置?
- Fig fatal error LNK1120: 1 个无法解析的外部命令???
- 新手求助:怎样监视键盘的输入?
- 本人在做smtp协议还原,高手请进!!thank!!
- !!被编程搞的晕头转向^..^
- 请问有关Release和Debug的问题
InvalidateRect(hWnd,NULL,true);
究竟有什么问题?客户区没有直线?当鼠标左键松开后画了直线吗?至于参数为false时,应该不是很多线指向第二个点,是很多线指向第一个点吧?因为第一个点是不变的,而第二个点是一直在变的,而false是没有擦除以前的线条,所以记录了你鼠标移动过程中的所有线条,也就是很多个第二个点和第一个点的连线从你的代码中,我只能分析出这么多信息,要不你就再把现象说详细些,要不就等内行来,呵呵
保存上一次鼠标点,每次WM_PAINT的时候画两次 第一次用SetROP2(hdc,R2_NOT);清除上一次画的线,第2次在来画线
pt[iCount++].x=LOWORD(lParam);
pt[iCount++].y=HIWORD(lParam);
break;然后在case WM_PAINT中
for (int i=0;i<iCount;i++)
...
MoveToEx
LineTo
...
循环打印出来
不就可以了