1
我有兩個類,都從相同的基類繼承。這是一個遊戲循環,取決於你所在的「狀態」,它應該在CALLBACK方法中發送一個指向活動對象的指針 - 但它不會。它只發送第二個對象的指針。具有多個對象回調的遊戲循環 - 第二個對象沒有任何反應對象
如果我首先通過PostMessage()和ObjectB設置ObjectA,然後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
}
}
例如,它響應objectA上的WM_KEYDOWN,但如果將狀態更改爲B,則它不響應WM_KEYDOWN,因爲ObjectB永遠不會獲取指針。 – Deukalion 2012-08-13 19:25:37
當您嘗試獲取第二條消息時究竟發生了什麼? – 2012-08-13 19:33:07
使用此示例訪問violotion。剛剛嘗試了另一種方法,使用基類作爲存儲指針的對象 - 所以只有一個對象指針。獲取時也會出錯。爲什麼我不能有兩個對象將事件發送到回調?如果這是正確的話。 – Deukalion 2012-08-13 19:53:54