Click here to Skip to main content
15,905,508 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: How to Convert from console application with .C files to MFC based application Pin
CPallini2-May-10 21:15
mveCPallini2-May-10 21:15 
AnswerRe: How to Convert from console application with .C files to MFC based application Pin
Cedric Moonen2-May-10 21:22
Cedric Moonen2-May-10 21:22 
AnswerRe: How to Convert from console application with .C files to MFC based application Pin
Rajesh R Subramanian2-May-10 22:57
professionalRajesh R Subramanian2-May-10 22:57 
GeneralRe: How to Convert from console application with .C files to MFC based application Pin
CPallini3-May-10 21:19
mveCPallini3-May-10 21:19 
GeneralRe: How to Convert from console application with .C files to MFC based application Pin
Rajesh R Subramanian3-May-10 22:31
professionalRajesh R Subramanian3-May-10 22:31 
QuestionWin32 / C++ Pin
Fareed Rizkalla2-May-10 10:33
Fareed Rizkalla2-May-10 10:33 
AnswerRe: Win32 / C++ Pin
Code-o-mat2-May-10 10:48
Code-o-mat2-May-10 10:48 
AnswerRe: Win32 / C++ Pin
Michel Godfroid2-May-10 10:51
Michel Godfroid2-May-10 10:51 
AnswerRe: Win32 / C++ Pin
ThatsAlok2-May-10 20:04
ThatsAlok2-May-10 20:04 
QuestionMultithreading in general Pin
csrss2-May-10 9:22
csrss2-May-10 9:22 
AnswerRe: Multithreading in general Pin
CPallini2-May-10 9:39
mveCPallini2-May-10 9:39 
AnswerRe: Multithreading in general Pin
csrss2-May-10 9:56
csrss2-May-10 9:56 
GeneralRe: Multithreading in general Pin
Software_Developer3-May-10 2:46
Software_Developer3-May-10 2:46 
AnswerRe: Multithreading in general Pin
ThatsAlok2-May-10 20:01
ThatsAlok2-May-10 20:01 
AnswerRe: Multithreading in general Pin
Rajesh R Subramanian2-May-10 23:02
professionalRajesh R Subramanian2-May-10 23:02 
AnswerRe: Multithreading in general Pin
Emilio Garavaglia3-May-10 1:23
Emilio Garavaglia3-May-10 1:23 
GeneralRe: And he would be violating the rules of threading. Pin
Software_Developer3-May-10 2:59
Software_Developer3-May-10 2:59 
GeneralRe: And he would be violating the rules of threading. Pin
Emilio Garavaglia25-Jun-10 3:04
Emilio Garavaglia25-Jun-10 3:04 
QuestionHow could I route all the windows messages of a dialog to a thread with their parameters? Pin
m_code2-May-10 8:43
m_code2-May-10 8:43 
AnswerRe: How could I route all the windows messages of a dialog to a thread with their parameters? Pin
Richard Andrew x642-May-10 8:53
professionalRichard Andrew x642-May-10 8:53 
AnswerRe: How could I route all the windows messages of a dialog to a thread with their parameters? Pin
Michel Godfroid2-May-10 8:58
Michel Godfroid2-May-10 8:58 
GeneralRe: How could I route all the windows messages of a dialog to a thread with their parameters? Pin
m_code2-May-10 9:07
m_code2-May-10 9:07 
GeneralRe: How could I route all the windows messages of a dialog to a thread with their parameters? Pin
Michel Godfroid2-May-10 9:22
Michel Godfroid2-May-10 9:22 
GeneralRe: How could I route all the windows messages of a dialog to a thread with their parameters? Pin
m_code2-May-10 9:57
m_code2-May-10 9:57 
GeneralRe: Sample code, the good way Pin
Software_Developer2-May-10 19:08
Software_Developer2-May-10 19:08 
The API functions ::PostMessage and ::SendMessage are thread safe!
That means you can use the windows handle (ie the CWnd::m_hWnd) to interact with your MFC classes.

// Defining a 'user defined' message for the call I wish to make
#define MYMESS_CALL_SOME_METHOD (WM_APP + 1)

struct ThreadParam
{
    HWND mDlg;    // Note: A handle.
};

UINT MyThreadProc( LPVOID pParam )
{
    ThreadParam* p = static_cast<ThreadParam*> (pParam);
    // Using message to call the method. Note: I could of course use the
    // WPARAM, LPARAM and returned value for something meaningful if I wished.
    ::SendMessage(p->mDlg, MYMESS_CALL_SOME_METHOD, 0, 0);
    delete p;
}

void CMyDialog::OnSomeButton()
{
     
    ThreadParam* param = new ThreadParam;
    param->mDlg = m_hWnd;  // A handle, not a dangerous 'this'
    AfxBeginThread(MyThreadProc, param);
    param = 0; // The other thread shall delete it    ...
}


Declare a method in the dialog message map (in the .h file)

//{{AFX_MSG(CMyDialog)
    ...
    afx_msg LRESULT OnCallSomeMethod(WPARAM, LPARAM);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()

Map the message to the method and implement the method (in the .cpp file):

BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
    //{{AFX_MSG_MAP(CMyDialog)
    ...
    ON_MESSAGE(MYMESS_CALL_SOME_METHOD, OnCallSomeMethod)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

LRESULT CMyDialog::OnCallSomeMethod(WPARAM wp, LPARAM lp)
{
    callSomeMethod();
    return 0;
}

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.