建立彈出式選單時,先建立乙個選單資源,然後呼叫loadmenu方法載入選單資源。
bool loadmenu( lpctstr lpszresourcename );
bool loadmenu( uint nidresource );
返回值:如果選單資源裝載成功,則返回非零值,否則為0。
引數:lpszresourcename指向乙個空終止的字串,該字串包含了要裝載的選單資源名稱。nidresource指定將要裝載的選單資源的選單id號。
呼叫getsubmenu方法獲取彈出式選單中的乙個選單項。
cmenu*getsubmenu(int npos) const;
引數:npos:標識選單項位置,第乙個選單項對應的位置是0,第二個選單項對應的位置是1,依此類推。
最後呼叫trackpopupmenu方法顯示乙個彈出式選單。
bool trackpopupmenu(uint nflags,int x,int y,cwnd*pwnd,lpcrect lprect=null);
hmenu:被顯示的快捷選單的控制代碼。此控制代碼可為呼叫
createpopupmenu建立的新
快捷選單的控制代碼,也可以為呼叫
getsubmenu取得的與乙個已存在選單項相聯絡的子選單的控制代碼。
uflags:一種指定功能選項的位標誌。用下列標誌位之一來確定函式如何水平放置快捷選單:
tpm_centeralign:若設定此標誌,函式將按引數x指定的座標水平居中放置快捷選單。
tpm_leftalign:若設定此標誌,函式使快捷選單的左邊界與由引數x指定的座標對齊。
tpm_rightalign:若設定此標誌,函式使快捷選單的右邊界與由引數x指定的座標對齊。
用下列標誌位之一來確定函式如何垂直放置
快捷選單:
tpm_bottomalign:若設定此標誌,函式使快捷選單的下邊界與由引數y指定的座標對齊。
tpm_topalign:若設定此標誌,函式使快捷選單的上邊界與由引數y指定的座標對齊。
tpm_vcenteralign;若設定此標誌,函式將按引數y指定的座標垂直居中放置快捷選單
用下列標誌位之一來確定在選單沒有父視窗的情況下使用者的選擇:
tpm_nonotify:若設定此標誌,當使用者單擊選單項時函式不傳送通知訊息。
tpm_returncmd;若設定此標誌;函式將使用者所選選單項的識別符號返回到返回值裡。
(注意:當trackpopupmenu的返回值大於0,就說明使用者從彈出選單中選擇了乙個選單。當不設定tpm_nonotify和tpm_returncmd時,程式給自己傳送了乙個wm_command訊息,以返回的id號為引數wparam的值)
用下列標誌位之一來確定在
快捷選單跟蹤哪乙個
滑鼠鍵:
tpm_leftbutton:若設定此標誌,使用者只能用滑鼠左鍵選擇選單項。
tpm_rightbutton:若設定此標誌,使用者能用滑鼠右鍵選擇選單項。
x:在螢幕座標下,快捷選單的水平位置。
y:在螢幕座標下,快捷選單的垂直位置。
nreserved:保留值,必須為零。
hwnd:擁有快捷選單的視窗的控制代碼。此視窗接收來自選單的所有訊息。函式返回前,此視窗不接受來自選單的
wm_command訊息。
如果在引數uflags裡指定了tpm_nonotify值,此函式不向
hwnd標識的視窗發訊息。 但必須給hwnd裡傳乙個視窗控制代碼,可以是應用程式裡的任乙個
視窗控制代碼。
prcrect:未用。
返回值:如果在引數uflags裡指定了tpm_returncmd值,則返回值是使用者選擇的選單項的識別符號。如果使用者未作選擇就取消了選單或發生了錯誤,則退回值是零。如果沒在引數uflags裡指定tpm_returncmd值,若
函式呼叫成功,返回非零值,若函式呼叫失敗,返回零。若想獲得更多的錯誤資訊,清呼叫
getlasterror.
例項:1.建立乙個基於對話方塊的應用程式。
2.插入選單資源;
3.在對話方塊標頭檔案中宣告乙個cmenu類物件m_menu;
4.在oninitdialog方法中呼叫loadmenu方法載入選單資源:
m_menu.loadmenu(idr_menu1); //載入選單資源
5.開啟類嚮導,新增訊息wm_rbuttonup,該事件在滑鼠右鍵抬起時觸發;
6.處理滑鼠右鍵抬起事件的處理函式,**如下:
void cmenudlg::onrbuttonup(uint nflags, cpoint point)
7.開啟類嚮導,在其中為「新增檔案」選單項處理單擊事件,**如下:
void cmenudlg::onadd()
彈出式選單
彈出式選單 popmenu 大家都熟悉,在win98的桌面上單擊滑鼠右鍵彈出的選單就是彈出式選單。通常情況下,彈出式選單在滑鼠右鍵單擊時彈出,當然,也可以根據需要隨時彈出。在vc 5的mfc中,管理選單的類叫cmenu。下面我向大家介紹建立乙個彈出式選單的基本方法。一 在資源編輯器中建立乙個選單資源...
彈出式選單(PopMenu)
彈出式選單 popmenu 大家都熟悉,在win98的桌面上單擊滑鼠右鍵彈出的選單就是彈出式選單。通常情況下,彈出式選單在滑鼠右鍵單擊時彈出,當然,也可以根據需要隨時彈出。在vc 5的mfc中,管理選單的類叫cmenu。下面我向大家介紹建立乙個彈出式選單的基本方法。一 在資源編輯器中建立乙個選單資源...
製作彈出式選單
lonkil 很老的一篇關於選單的文章,還是不錯的。發出來吧!一 在資源編輯器中建立乙個選單資源 新建乙個選單資源,比如把選單的id號為idc popmenu。此選單有一項兩層,即有乙個可彈出的選單項,而此選單項的彈出內容即為將要建立的彈 出式選單的內容。如右圖,可彈出項 下的選單即為將要建立的彈出...