Prev: Managed/unmanaged code exceptions handling tool (C# / ?++)
Next: Missing debug info with precompiled header
From: Jack on 23 Mar 2010 04:16 Hi, First, Thank you guys for the previous replies on my previous questions. int CAStar::Step(int &sx, int& sy) { // ... // [snip] D3DXVECTOR2 vec2(m_pBest->x, m_pBest->y); g_finalArray.push_back(vec2); RECT rect; GetClientRect(g_hWndMain, &rect); InvalidateRect(g_hWndMain, &rect, FALSE); // ... // [snip] } ///////////////////////////////// The display "code" never gets executed, or executed just a few times, there was no time slot for me to check the output. long CALLBACK WndProc(...) { //...// case WM_PAINT: if (g_finalArray.size() >= 0) { DrawRoute(hDC); } // ... // } void DrawRoute() { std::vector<D3DXVECTOR2>::iterator it; for (it = g_finalArray.begin(); .... SetPixel(hDC, it->x, it->y, RGB(255,0,255)); } Does this mean I have to use multi-threading so that the path (in pixels) can be displayed in the window which shows the results as soon as it is generated in other part of my program? Thanks Jack
From: David Lowndes on 23 Mar 2010 05:52 >int CAStar::Step(int &sx, int& sy) >{ > // ... // > [snip] > D3DXVECTOR2 vec2(m_pBest->x, m_pBest->y); > g_finalArray.push_back(vec2); > RECT rect; > GetClientRect(g_hWndMain, &rect); > InvalidateRect(g_hWndMain, &rect, FALSE); You'd normally just call InvalidateRect with a NULL rect pointer to invalidate the whole area. >///////////////////////////////// >The display "code" never gets executed, or executed just a few times, there >was no time slot for me to check the output. How frequently is your Step method called? i.e. is it swamping the message queue so that there's no free time for WM_PAINT to get handled? Dave
From: Victor Bazarov on 23 Mar 2010 08:04 David Lowndes wrote: >> int CAStar::Step(int &sx, int& sy) >> { >> // ... // >> [snip] >> D3DXVECTOR2 vec2(m_pBest->x, m_pBest->y); >> g_finalArray.push_back(vec2); >> RECT rect; >> GetClientRect(g_hWndMain, &rect); >> InvalidateRect(g_hWndMain, &rect, FALSE); > > You'd normally just call InvalidateRect with a NULL rect pointer to > invalidate the whole area. > >> ///////////////////////////////// >> The display "code" never gets executed, or executed just a few times, there >> was no time slot for me to check the output. > > How frequently is your Step method called? i.e. is it swamping the > message queue so that there's no free time for WM_PAINT to get > handled? I believe a call to 'UpdateWindow' will force processing of any pending repaints. V -- Please remove capital 'A's when replying by e-mail I do not respond to top-posted replies, please don't ask
From: Jack on 23 Mar 2010 08:08 >>The display "code" never gets executed, or executed just a few times, >>there >>was no time slot for me to check the output. > > How frequently is your Step method called? i.e. is it swamping the > message queue so that there's no free time for WM_PAINT to get > handled? It all starts out with the WM_COMMAND button, After pushing it, the program will be looping like while (ret == false) { ret = Step(sx, sy); } Usually, the results would be displayed after the loop has finished. But there are currently some bugs with my code so that the loop never exits. But I do want to look at where its up to on the map, it is a pathfinding project.... Thanks Jack
From: Jack on 23 Mar 2010 08:37 Thanks Victor, It is working. And David, thanks for your input.... See you next question. Jack
|
Next
|
Last
Pages: 1 2 Prev: Managed/unmanaged code exceptions handling tool (C# / ?++) Next: Missing debug info with precompiled header |