我正在尝试在调整窗口大小时调整图形设备缓冲区的大小,但我没有检测到事件的运气。
这是C ++ Windows编程。我试过了:
while(WM_QUIT != msg.message){
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){
switch(msg.message){
case WM_SIZE:
return; //<-- If the program closes because of this return, then I know I found the right statements.
}
//TranslateMessage(&msg);
//DispatchMessage(&msg);
}else{
poly.setConstantBuffer(space.getCamera());
poly.draw(iSize);
graphics.render();
}
}
它没有返回,所以这意味着不正确。什么是捕获调整大小事件的正确方法?
答案 0 :(得分:4)
您应该在窗口过程中处理消息,而不是在消息循环中处理消息。 <{1}}不会返回已发送的消息,PeekMessage
是已发送的消息。
答案 1 :(得分:3)
WM_SIZE
不是在调整大小期间发送到窗口的唯一消息。您需要取消对TranslateMessage()
和DispatchMessage()
的调用,以便处理其他消息。并且您的窗口的mssage调度过程需要将未处理的消息传递给DefWindowProc()
以进行默认处理。你在做所有这些吗?