vc中建了一个窗口用鼠标左键画线,可是最小化窗口之后线就消失了,怎样解决?

最好能用向量先把这些点的坐标存起来,在重绘的方法,求正解?做了半天还是不会。部分代码LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage... 最好能用向量先把这些点的坐标存起来,在重绘的方法,求正解?做了半天还是不会。部分代码

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect ;

POINTS ptNew;

hdc = GetDC(hwnd);

if(hdc != NULL)
{
char str[12];
sprintf(str, "%d", uCounter++);

//输出文字
TextOut(hdc, 0, 0, str, strlen(str));
ReleaseDC(hwnd, hdc);

}

switch (message)

{

case WM_CREATE:

PlaySound (TEXT ("HelloWin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;

return 0 ;

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;

FrameRect(hdc, &rect, (HBRUSH) GetStockObject (GRAY_BRUSH));
DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,

DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_LBUTTONDOWN:
ptOld = MAKEPOINTS(lParam);
bIsLBD = TRUE;
return 0;
case WM_LBUTTONUP:
bIsLBD = FALSE;
return 0;

case WM_MOUSEMOVE:
if(bIsLBD)
{
//画内容
hdc = GetDC(hwnd);

//新点的坐标
ptNew = MAKEPOINTS(lParam);

//画线
::MoveToEx(hdc, ptOld.x, ptOld.y, NULL);
::LineTo(hdc, ptNew.x, ptNew.y);

//保存坐标点
ptOld = ptNew;
ReleaseDC(hwnd, hdc);

}
return DefWindowProc(hwnd, message, wParam, lParam);

case WM_DESTROY:

PostQuitMessage (0) ;
return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}
展开
 我来答
starfar1983
2011-04-09 · TA获得超过2258个赞
知道小有建树答主
回答量:692
采纳率:0%
帮助的人:1039万
展开全部
画线的代码放错了地方。所有绘制代码都应该放到WM_PAINT消息里去。
处理鼠标消息的时候不要画线,只要把坐标记录下来,并且调用InvalidateRect()。
在WM_PAINT里用保存的坐标点去画线。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
L_o_o_n_i_e
2011-04-09 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5222万
展开全部
没有细看你的程序。粗看问题在开关语句中的 return,(相当于平时用的 break;)
switch (message)
{
case xxx : ....; return 0;
.....
case WM_PAINT:
做画图工作
存点大于2,补画线条
return 0;
case WM_MOUSEMOVE:
做画图工作。
存点(到全局量),计数器记数。
画完 return 0; // 用0,不用DefW....
最后一个 case xx : ...return 0; 下来 是
default:
return DefWindowProc(hwnd,message,wParam,lParam);
} // 开关语句结束
追问
就是这个点怎么存放我不太会!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hlm123yy
2011-04-09 · TA获得超过116个赞
知道答主
回答量:94
采纳率:0%
帮助的人:78.9万
展开全部
当你挪动窗口或者改变窗口大小是 窗口进行了重绘,在ONDRAW里绘图或这利用双缓冲技术绘图就不会消失了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式