gpt4 book ai didi

windows - 向 WM_PAINT 发送消息

转载 作者:可可西里 更新时间:2023-11-01 11:12:54 24 4
gpt4 key购买 nike

我正在尝试编写一个程序来控制带有箭头键的框的移动。我的代码有问题。是否可以通过 SendMessage 向 WM_PAINT 发送消息以在按下 LEFT 键时绘制一个新矩形?以下是我的代码

case WM_KEYDOWN:
switch(wParam)
{
case VK_LEFT: //LEFT MOVEMENT


SendMessage(hwnd,WM_PAINT,VK_LEFT,0);
break;



case VK_ESCAPE:
//FOR ENDING THE GAME WITH ESCAPE KEY
SendMessage(hwnd,WM_DESTROY,VK_ESCAPE,0);
break;
}


case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);


Rectangle(hdc,x,600,x1,700);
if(wParam==VK_LEFT)
{ Rectangle(hdc,x-50,600,x1-50,700);

}
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:

PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
where

x1=550;
x=500

当按下左键时,控件是否转到 WM_PAINT

因为当我写的时候

if(wParam==VK_LEFT)
{ Rectangle(hdc,x-50,600,x1-50,700);

}

当我写的时候什么都没有发生

if(wParam==VK_ESCAPE)
PostQuitMessage(0);
return 0;

窗口用退出键退出这不是最终代码。我只是想了解为什么 VK_LEFT 不执行?

最佳答案

您永远不会发送WM_PAINT。系统负责这样做。相反,您调用 InvalidateRect 指定您希望重新绘制的矩形。系统会将该矩形标记为无效,并在下一个绘制周期发生时重新绘制该矩形。

如果您想使更复杂的区域无效,可以使用 InvalidateRgn

如果您只想让整个窗口无效,请将NULL 传递给InvalidateRectlpRect 参数。

关于windows - 向 WM_PAINT 发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21365802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com