Thanks to GeMe_Hendrix about 10 posts below this one I have the answer (I should look before I post): Try creating your own custom message ad handler for it first therefore at the top of your dialog CPP file... #define WM_MYOWNMESSAGE WM_USER + 1001; ... Then in the header file put... afx_msg LRESULT OnMyOwnMessage(WPARAM wParam, LPARAM lParam); ...Then the appropriate body for it... LRESULT CMyDialog::OnMyOwnMessage(WPARAM wParam, LPARAM lParam) { ... Show the file dialog box (I know it has to be modal) return 0; }; ... And finally in the body put... ON_MESSAGE(WM_MYOWNMESSAGE, OnMyOwnMessage) ... in the BEGIN_MESSAGE_MAP section... ... To call the message handler put this in the OnInitDialog function just before it returns... PostMessage(WM_MYOWNMESSAGE, 0, 0); And as a bonus I got an explanation of the message queue. Chris.