荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: VC FAQ(7)
发信站: BBS 荔园晨风站 (Tue Jan 26 22:50:54 1999), 转信


------------------------------------------------------------
  How do I 'attach' a menu to a window's creation/destruction?
-----------------------------------------------------------
{Note the original question talked about dialogs, but you can interpolate
this
code to any kind of window that you want to have change the menu.}

One of the ways to do this is as follows**

1.  Declare a variable CMenu pNewMenu in one of the dialog class.

2.  Handle the WM_INITDIALOG and WM_CLOSE messages in the
dialog class as follows.

BOOL CMydlg::OnInitDialog()

{

        CDialog::OnInitDialog();

        // Load the IDR_MYFRAME menu

        pNewMenu = new CMenu;

        pNewMenu->LoadMenu(IDR_MYFRAME);

        // Set the mainframe menu to mainframe.

        ((CMainFrame *)AfxGetMainWnd())->SetMenu(pNewMenu);

        return TRUE;

}

And

void CMydlg::OnClose()

{

        // Detach the previous HMenu handle from the object.

        pNewMenu->Detach();

        pNewMenu->LoadMenu(IDR_MAINFRAME);

        // Restore the mainframe menu.

        ((CMainFrame *)AfxGetMainWnd())->SetMenu(pNewMenu);

        CDialog::OnClose();

}

4.   If there are other methods of closing the dialog (example- By clicking
a
button in the Dialog), then The code given above in OnClose handler, must
be
put in the button click handler.


--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店