直接用VS的向导建一个默认的MDI程序,我只想实现一个东西,就是在不同视图见切换时,可以进行响应(比如弹出一个Messagebox);
我在查到相关的API
1.OnMDIActivate(..);
2.OnActivate(..);
3.OnActivateView(...);我三个试过了,OnActivateView() 但是这个会不停的响应,不符合我的要求,而且对与MDI来说,视图直接切换时第二个和第三个参数是一样的。第一个,第二个没法起作用,求指导!
要求和简单,从一个视图切换到另个视图时,弹出一个messagebox来。
如果能用OnMDIActivate的话那更好。

解决方案 »

  1.   

    OnMDIActivate不是API,是CChildFrame的WM_MDIACTIVATE消息处理过程。代码如下:void CChildFrame::OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd* pDeactivateWnd) 
    {
    CMDIChildWnd::OnMDIActivate(bActivate, pActivateWnd, pDeactivateWnd);

    // TODO: Add your message handler code here if(bActivate)
    {
    CString szTitle, szText;
    pActivateWnd->GetWindowText(szTitle);
    szText = "现在激活的窗口是 " + szTitle;
    MessageBox(szText, szTitle, MB_OK);
    }}
      

  2.   

    同楼上,MDI每个视图有是在子框架中
      

  3.   

    谢谢啊,不过要加个ON_WM_MDIACTIVATE宏才行,虽然对你而言是简单的不用说的事情,但是对我这个初学者而言是非常头疼的,所以才这么久弄好,不然早就结贴给分了。