回覆列表
  • 1 # 使用者9364575890814

     MFC基於對話方塊——右鍵彈出選單,並響應函式。

      1、新建一個選單資源,比如把選單的ID號為IDR_MENU1。

      2、在ClassWizard中

      void CArcSoft_EffectDlg::OnRButtonDown(UINT nFlags, CPoint point)

      {// TODO: Add your message handler code here and/or call default

      CMenu menu; //定義下面要用到的cmenu物件

      menu.LoadMenu(IDR_MENU1); //裝載自定義的右鍵選單;

      CMenu *pContextMenu=menu.GetSubMenu(0); //獲取第一個彈出選單,所以第一個選單必須有子選單;

      CPoint point1;//定義一個用於確定游標位置的位置;

      GetCursorPos(&point1);//獲取當前游標的位置,以便使得選單可以跟隨游標

      pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point1.x,point1.y,AfxGetMainWnd()); //在指定位置顯示彈出選單;

      CDialog::OnRButtonDown(nFlags, point1)};

      4、在資源檢視中為選單中的每一項建立類嚮導,並新增Command響應函式,然後在這個函式中加入語句就可以啦。

      ON_COMMAND(ID_COPY, OnCopy)//加Command響應函式,自動出現的灰色語句

      void CArcSoft_EffectDlg::OnCopy()

      {// TODO: Add your command handler code here

      MessageBox("複製成功!");

      MFC文件的選單欄中新增一個command響應函式

      具體實現方式如下

      1.新建一個對話方塊資源,同時新建一個對話方塊類和該資源對應,舍對話方塊類名為CTestDialog;

      2.在資源檢視中找到Menu 這個資料夾,雙擊裡面的檔案IDR_MAINFRAME,在這裡可以新增自己想要的選單,也可把原來的【檔案】、【編輯】等選單給刪掉~~

      新增選單的方法:右擊右側空白區域,選擇properties,彈出的對話方塊中,把pop_up勾選掉,新增一個ID和CAPTION,設ID為ID_MYTEST,caption|為【測試】

      (要注意的是,最好選擇View類,而不是Frame類或其他類)

      3.Ctrl+W彈出類嚮導,message maps中的class name 選擇為View類,

      從Object IDs中找到我們上一步設定的ID_MYTEST,右側的message選擇Command命令,新增一個命令響應函式;

      4.在該函式中新增

      CTestDialog dlg;

      dlg.DoModal();

      5.對應的選單項新增WM_COMMAND訊息,在命令響應函式中DoModal/Create/ShowWindow()你的對話方塊即可。

      6.訊息對映:

      ON_COMMAND(選單編號,處理函式)

      .h

      public:

      處理函式

      .cpp

      處理函式

      {

      CDialog dc;

      dc.domodal();

      }

      彈出非模態對話方塊的方法:

      (1)用類嚮導給選單欄中選單新增一個響應函式

      (2) 在標頭檔案中加入

      #include "Dlg.h"

      public:

      CDlg *Dlg;

      (3)在程式碼中加入

      Dlg=new CDlg(this);

      Dlg->ShowWindow(SW_RESTORE);

  • 中秋節和大豐收的關聯?
  • 花骨魚用什麼打窩?