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"
CDlg *Dlg;
(3)在程式碼中加入
Dlg=new CDlg(this);
Dlg->ShowWindow(SW_RESTORE);
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);