15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Mainframe menu problem in splitter window application

arie -- bis1b@chava.netmedia.net.il
Sunday, November 10, 1996

Environment:Win 3.11/Win95;VC 1.52
I have SDI app where I use two panes (CView1 and CView2)in splitter
window.
 
 When I select my (non-default) item in MainFrame
menu(f.e.ID_CREATEMYDLG) my dialog is  created and everything works OK.
 The problem is when I click in CView2 window and then select
ID_CREATEMYDLG item any  action doesn't perform - it just ignores my
selection.
 If I click now in CView1 and then select the same item it again works
properly.(There   are not any problem ,however ,with such default MFC
items like ID_FILEOPEN )
   Has anybody any suggestions how to solve the problem?
   Thank you in advance.
    Arie Goberman
    Jerusalem
    BIS Sofware Systems.

 e-mail address: goberman@bis.co.il



Doug Brubacher -- Doug_Brubacher@compuware.com
Monday, November 11, 1996

[Mini-digest: 3 responses]

     Arie,
     
     Sounds like you implemented the message handler for ID_CREATEMYDLG in 
     CView1 when you really want to handle it in the Document or Mainframe.
     
     Regards,
     
     Doug Brubacher
     DouglasB@msn.com
     
     PS. This is an advanced MFC question?

[Moderator's note: I take it we have a volunteer to take over as
moderator in a few months... ;-)]

-----From: Roger Onslow/Newcastle/Computer Systems Australia/AU

>I have SDI app where I use two panes (CView1 and CView2)
>in splitter window.

So far so good, nothing unusual there...

>When I select my (non-default) item in MainFrame
>menu(f.e.ID_CREATEMYDLG) my dialog is
>created and everything works OK.

Also seems fine, just what you'd expect

>The problem is when I click in CView2 window and then select
>ID_CREATEMYDLG item any action doesn't perform
>- it just ignores my selection.

What exactly do you mean -- "doesn't perform"?

Does the OnCreateMyDlg (or whatever) handler get called, but the dialog is not 
created?
Or is the message never received/handled?

I assume the handler for ID_CREATEMYDLG is in your mainframe class, and that it 
is not handled by the view class.  If not, then the active view will handle the 
message, and if you are only handling it in one of you view classes, then if 
the other view class is the active one, the message won't get handled.  This 
should be obvious, but then, one doesn't always see the obvious :-)

> If I click now in CView1 and then select the same item it again works
>properly.(There  are not any problem ,however ,with such default MFC
>items like ID_FILEOPEN )

>Has anybody any suggestions how to solve the problem?

Try adding dummy handlers for this message in each of the view classes (as well 
as the mainframe) and see which ones (if any) get called.  If you remove the 
handlers from the view classes, you should find that the mainframe class will 
handle your command no matter which view is active.

Roger
-----From: Konstantin Kovalenko 

I might be wrong but I think the problem is that the implementation of
that "ID_CREATEMYDIALOG" is in the implementation file for CView1.
Move it to the Document implementation file (.cpp). You may set the
flag for CframeWnd m_bAutoMenuEnable and that menu item will be
disabled when you are in Cview2 and enabled when you are in Cview1.




SachinX Keskar -- SachinX_Keskar@ccm.jf.intel.com
Monday, November 11, 1996


Text item: 

Check whether you are handling the message in View2. Also make sure you are 
enabling the item in Command API. 
In cases like these I would probably put the handler in the document class and 
depending on the active view take proper action. 

Sachin


Environment:Win 3.11/Win95;VC 1.52
I have SDI app where I use two panes (CView1 and CView2)in splitter
window.

 When I select my (non-default) item in MainFrame
menu(f.e.ID_CREATEMYDLG) my dialog is  created and everything works OK.
 The problem is when I click in CView2 window and then select
ID_CREATEMYDLG item any  action doesn't perform - it just ignores my
selection.
 If I click now in CView1 and then select the same item it again works
properly.(There   are not any problem ,however ,with such default MFC
items like ID_FILEOPEN )
   Has anybody any suggestions how to solve the problem?
   Thank you in advance.
    Arie Goberman
    Jerusalem
    BIS Sofware Systems.

 e-mail address: goberman@bis.co.il

Text item: External Message Header

The following mail header is for administrative use
and may be ignored unless there are problems.

***IF THERE ARE PROBLEMS SAVE THESE HEADERS***.

Reply-To: mfc-l@netcom.com
Precedence: bulk
Errors-To: owner-mfc-l@majordomo.netcom.com
Sender: owner-mfc-l@majordomo.netcom.com




| Вернуться в корень Архива |