From: Jack on
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
>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
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
>>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
Thanks Victor,
It is working.
And David, thanks for your input....
See you next question.
Jack