AfxBeginThread и InitInstance()
От: meier13  
Дата: 08.02.12 09:49
Оценка:
Хотелось бы получить пояснения про то, как работает макрос AfxBeginThread, и что на самом деле происходит, допустим есть класс


class CPrintThread : public CWinThread
{
public:
    afx_msg void OnWriteLog(WPARAM, LPARAM);
    int Temp();
    virtual BOOL InitInstance();
    virtual int ExitInstance();
protected:
    DECLARE_MESSAGE_MAP()
    DECLARE_DYNCREATE(CPrintThread)
private:
    int temp;
};

IMPLEMENT_DYNCREATE(CPrintThread, CWinThread)

BEGIN_MESSAGE_MAP(CPrintThread, CWinThread)
    ON_THREAD_MESSAGE(WM_USER + 1, OnWriteLog)
END_MESSAGE_MAP()

void CPrintThread::OnWriteLog(WPARAM wParam, LPARAM lParam)
{
}

int CPrintThread::Temp()
{
    return temp;
}

BOOL CPrintThread::InitInstance()
{
    temp = 10;
    return true;
}

int CPrintThread::ExitInstance()
{
    return CWinThread::ExitInstance();
}


и где в программе:


CPrintThread* m_tPrint;
m_tPrint = (CPrintThread*)(AfxBeginThread(RUNTIME_CLASS(CPrintThread), THREAD_PRIORITY_BELOW_NORMAL, 0, 0));
int mytemp = m_tPrint->Temp();


поясните пожалуйста в каких потоках будут выполнятся функции InitInstance() и Temp(), и может ли получится так что mytemp окажется не равно 10 ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.