建立彈出式選單

2021-07-04 11:16:33 字數 2409 閱讀 1863

建立彈出式選單時,先建立乙個選單資源,然後呼叫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。此選單有一項兩層,即有乙個可彈出的選單項,而此選單項的彈出內容即為將要建立的彈 出式選單的內容。如右圖,可彈出項 下的選單即為將要建立的彈出...