The problem is this line: SendMessage(gnStartMsg, 0, 0); This sends the message right back to the CDialog that this code is in. You want to do: ::SendMessage ( hwndOtherDlg, gnStartMsg, 0, 0 ); where hwndOtherDlg is the HWND of the receiving dialog. Or, if you have a CWnd* to it, you can do: pOtherDlg->SendMessage ( gnStartMsg, 0, 0 );