: I need to create a new thread to run program in a subDialog box.
: The subDialog is a drawing function that consists of a self-defined drawing requirement and an on-paint function that initialize the self function. This subDialog calls on variables from the Main dialog to see how many objects it needs to draw.
: Effect: When the Main Prog runs real-time, the sub Prog will show the number of objects simultanously.
:
: So, in creating a thread in the main dialog, how do you create a pointer to point back the subDialog class to the main Dialog?
: What do you write for the source code?
:
There's a few ways you can do that. One way would be to get a CWnd to the main window and use that to access the main dialog..
// in ThreadProc
CWnd *CWndParent = AfxGetMainWnd();
// or
CWnd *CWndParent = GetParent();
((CMyMainDialog*)CWndParent)->DoSomething();
Or the way I would do it is to pass the main dialogs CWnd to the new thread via the CreateThread's lpParameter, then I can use it in the thread.
CWinThread *pThread = AfxBeginThread(ThreadProc, (LPVOID)this, THREAD_PRIORITY_NORMAL);
// or
HANDLE pThread = CreateThread(NULL, 0, ThreadProc, (LPVOID)this, 0, &pThreadID);
// in ThreadProc
CWnd *CWndParent = (CWnd*)lpParam;
((CMyMainDialog*)CWndParent)->DoSomething();
To understand recursive, first you need to understand recursive