程序如下:
。。
WORD x,y;
...消息循环如下:(一部分)
switch(message)case WM_LBUTTONDOWN:
InvalidateRect(hWnd,NULL,1); <====“SendMessage(hWnd,WM_PAINT,0,0);”
break;
case WM_PAINT:
x=LOWORD(lParam);
y=HIWORD(lParam);
RoundRect(hdc,x,y,x+5,y+5,10,10);
EndPaint(hWnd,&ps);
break;
...
我的目标是当鼠标左键按下,在鼠标当前位置画一个圆点
但x,y的值并不应鼠标的移动而变化,都是0
请问哪里错了
难道 x=LOWORD(lParam);
y=HIWORD(lParam);分别取高位与低位错了?
还是这两个消息响应本身就写错了?
另: "<==="我改为“SendMessage(hWnd,WM_PAINT,0,0);”与"InvalidateRect(hWnd,NULL,1);"有何区别?
初学SDK,有些困惑.先谢谢大家了!!!
。。
WORD x,y;
...消息循环如下:(一部分)
switch(message)case WM_LBUTTONDOWN:
InvalidateRect(hWnd,NULL,1); <====“SendMessage(hWnd,WM_PAINT,0,0);”
break;
case WM_PAINT:
x=LOWORD(lParam);
y=HIWORD(lParam);
RoundRect(hdc,x,y,x+5,y+5,10,10);
EndPaint(hWnd,&ps);
break;
...
我的目标是当鼠标左键按下,在鼠标当前位置画一个圆点
但x,y的值并不应鼠标的移动而变化,都是0
请问哪里错了
难道 x=LOWORD(lParam);
y=HIWORD(lParam);分别取高位与低位错了?
还是这两个消息响应本身就写错了?
另: "<==="我改为“SendMessage(hWnd,WM_PAINT,0,0);”与"InvalidateRect(hWnd,NULL,1);"有何区别?
初学SDK,有些困惑.先谢谢大家了!!!
解决方案 »
- 我用VS2008做的MFC为什么保存时提示没有权限,要让与管理员联系
- 出现Windows Explorer has encountered a problem and needs to close.的错误
- 求好用的曲线控件!
- 请问msdn上有没有微软提供的比较全面的ADO使用详解和示例
- 请教:如何运行侯捷《深入浅出MFC》中的范例
- 怎样才能在拖动窗口的滚动条时不刷新窗口内容?
- 关于MFC窗口背景图片加载不完全
- 如何更新vc的sdk,是用patch吗?
- mfc中ADO访问mysql内存上涨是什么原因
- MFC实现对话框的旋转弹出
- 连接问题求救!请高手帮忙!
- 请问我编好了个VC程序,怎么样才能让它能在windows下执行呢?谢谢了.
Invalidate( );
break;
case WM_PAINT:
{
POINT pt;
GetCursorPos( &pt );
ScreenToClient( hWnd, &pt ); PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd,&ps);
RoundRect(hdc,x,y,x+5,y+5,10,10);
EndPaint(hWnd,&ps);
}
break;
应该是:
RoundRect(hdc,pt.x,pt.y,pt.x+5,pt.y+5,10,10);