我有两个类,都继承自同一个基类。这是一个游戏循环,根据你所处的“状态”,它应该在 CALLBACK 方法中发送一个指向活动对象的指针——但它没有。它只发送第二个对象的指针。
如果我首先通过 PostMessage() 设置 ObjectA,然后设置 ObjectB,然后 ObjectB 不起作用,则它不会获得指向该对象的指针。
如果我设置相反,ObjectB 有效,而 ObjectA 无效。
这是循环的一般布局:(我错过了什么?)
游戏循环:
PostMessage( hwnd, WM_USER, 0, (LPARAM)&ObjectA );
PostMessage( hwnd, WM_USER, 0, (LPARAM)&ObjectB );
while(running)
{
while( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) )
{
/* ... */
}
if (STATE == StateA)
Update(&ObjectA);
if (STATE == StateB)
Update(&ObjectB);
}
在回调方法中:
static ObjectA* objA;
static ObjectB* objB;
if (objA || objB)
{
// Do stuff to objA or objB
}
else
switch(msg)
{
case WM_USER:
if (STATE == StateA)
objA = (ObjectA*) lparam;
if (STATE == StateB)
objB = (ObjectB*) lparam;
break;
// default and WM_CLOSE
}
}