ON_UPDATE_COMMAND_UI in dialog
John.Bell@xcellenet.com Friday, September 27, 1996 Environment: VC++ 4.1, Win95 I have a class that is based on CFrameWnd and implements an editor. When I create this editor class from a modal dialog, I don't get the ON_UPDATE_ COMMAND_UI messages to update the menus etc. because the dialog doesn't handle the OnIdle(). I could implement a timer to update my interface, but I would prefer getting an idle message somehow. If a timer is unavoidable how could I trigger the ON_UPDATE_COMMANDs? Could I send a WM_IDLEUPDATECMDUI to do this? Thank you in advance. John
Eric Kenslow -- kenslowe@cdsnet.net Sunday, September 29, 1996 [Mini-digest: 2 responses] First off, no, sending the WM_IDLEUPDATECMDUI doesn't work (at least, not in the simplistic way in which I tried it). The way I got this to work from a dialog was by implementing my own message loop, making my dialog-based application's dialog modeless, rather than modal. Here is how I modified MyApp::InitInstance() (this is taken pretty much directly from books online, BTW): CMyAppDlg dlg; m_pMainWnd = &dlg; dlg.Create( IDD_MY_DIALOG ); while( ::IsWindow( dlg.GetSafeHwnd() ) ) { MSG msg; while( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ) { PumpMessage(); } // let MFC do its idle processing LONG lIdle = 0; while ( ::AfxGetApp()->OnIdle(lIdle++ ) ) ; } /* Eric Kenslow - Digital Lighthouse Inc. * webmaster@digilight.com * http://www.digilight.com */ ---------- > From: John.Bell@xcellenet.com > To: mfc-l@netcom.com > Subject: ON_UPDATE_COMMAND_UI in dialog > Date: Friday, September 27, 1996 5:00 AM > > Environment: VC++ 4.1, Win95 > > I have a class that is based on CFrameWnd and implements an editor. When I > create this editor class from a modal dialog, I don't get the ON_UPDATE_ > COMMAND_UI messages to update the menus etc. because the dialog doesn't > handle the OnIdle(). > I could implement a timer to update my interface, but I would prefer getting > an idle message somehow. > If a timer is unavoidable how could I trigger the ON_UPDATE_COMMANDs? Could > I send a WM_IDLEUPDATECMDUI to do this? > > Thank you in advance. > > John -----From: ganeshs@nationwide.com Check out KB article Q123158... The article's main emphasis is on adding control bars to dialogs, but handling menu updates is also explained. Since you're using VC++ 4.1/Win 95, the approach is the same for modal as well as modeless dialogs. / ___| / ___| __ _ _ __ ___ ___| | I do not speak for \___ \ | | _ / _` | '_ \ / _ \/ __| '_ \ Tata Unisys or ___) | | |_| | (_| | | | | __/\__ \ | | |Nationwide Ins. |____(_) \____|\__,_|_| |_|\___||___/_| |_|------------------
Lance Lovette -- lovette@iftech.com Friday, October 04, 1996 >>> I have a class that is based on CFrameWnd and implements an >>> editor. When I create this editor class from a modal dialog, >>> I don't get the ON_UPDATE_COMMAND_UI messages to update the >> menus etc. because the dialog doesn't handle the OnIdle(). >> I could implement a timer to update my interface, but I would >>> prefer getting an idle message somehow. If a timer is unavoidable >>> how could I trigger the ON_UPDATE_COMMANDs? Could I send a >>> WM_IDLEUPDATECMDUI to do this? If memory serves, there is a Microsoft Systems Journal article that describes this. There is also a chapter in the 2nd edition of the book "Developing Professional Applications in Windows 95 and NT Using MFC" (due out by the end of the month) that gives you a CIdleUpdateDialog you can derive your dialogs from to get this exact behavior. Lance lovette@iftech.com +-------------------------------------------------------------------+ Interface Technologies, Inc. For a collection of free tutorials covering a variety of programming and computer-related topics such as Visual C++, MFC, and Windows NT check out the ITI On-line Training Center at http://www.iftech.com.
| Вернуться в корень Архива |