青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小默

[zz]MFC中菜單的應(yīng)用(注釋詳細(xì))

  1 取消右鍵系統(tǒng)菜單

PreCreateWindow函數(shù)中改變設(shè)置樣式:

cs.style&=~WS_SYSMENU

CREATESTRUCT的具體結(jié)構(gòu)如下:

 

typedef struct tagCREATESTRUCT {
   LPVOID    lpCreateParams;
   HANDLE    hInstance;
//當(dāng)前實(shí)例句柄
   HMENU     hMenu;//菜單句柄
   HWND      hwndParent;//父窗口
   int       cy;//寬度
   int       cx;//高度
   int       y;//窗口位置坐標(biāo)
   int       x;//窗口位置坐標(biāo)
   LONG      style;//窗口樣式
   LPCSTR    lpszName;//標(biāo)題
   LPCSTR    lpszClass;//窗口類名
   DWORD     dwExStyle;//窗口擴(kuò)展樣式
}
 CREATESTRUCT;

 

 

2.在右鍵系統(tǒng)菜單加入菜單項(xiàng):

在窗口創(chuàng)建的時(shí)候加入

    CMenu *pMenu=GetSystemMenu(FALSE);//取得系統(tǒng)菜單
    CString StrMenuTitle="我的菜單";
    pMenu
->AppendMenu(MF_SEPARATOR);//增加一個(gè)項(xiàng)目到菜單的末尾,增加分割線
    pMenu->AppendMenu(MF_STRING,IDM_MYSYSTEM,StrMenuTitle);

MSDN中的定義;

BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );
BOOL AppendMenu( UINT nFlags, UINT nIDNewItem, 
const CBitmap* pBmp );

NFlags:標(biāo)志位,可以是, MF_OWNERDRAW, MF_STRING, MF_SEPARATOR, MF_POPUP

NIDNewItem:菜單項(xiàng)目的ID,如果Nflags設(shè)置為MF_POPUP,那么就是子菜單的句柄,如果是MF_SEPARATOR,就突列.

LpszNewItem:新菜單項(xiàng)的內(nèi)容

PBmp:菜單項(xiàng)圖像對象,指向一個(gè)Cbitmap對象

在系統(tǒng)菜單中增加了菜單項(xiàng)之后再增加消息處理函數(shù).發(fā)送的是系統(tǒng)消息,OnSysCommand函數(shù)中處理

void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
if(nID==IDM_MYSYSTEM)
{
     MessageBox(
"這是我的自定義系統(tǒng)菜單","信息提示",MB_OK);
}

CFrameWnd::OnSysCommand(nID, lParam);
}

3.動態(tài)的增加菜單項(xiàng):

 

pMenu->GetSubMenu(0)->AppendMenu(MF_SEPARATOR);//增加分割線
pMenu->GetSubMenu(0)->AppendMenu(MF_STRING,ID_APP_ABOUT,"關(guān)于");//增加菜單項(xiàng)

4.動態(tài)的刪除菜單項(xiàng):

    CMenu *pMenu=AfxGetMainWnd()->GetMenu()->GetSubMenu(0);
    
for(int i=0;i<pMenu->GetMenuItemCount();i++)
    
{
        CString StrName;
        pMenu
->GetMenuString(i,StrName,MF_BYPOSITION);
        
if(StrName.Find("保存",0)==0)
        
{
            pMenu
->DeleteMenu(i,MF_BYPOSITION);
            MessageBox(
"刪除“文件/保存”菜單操作成功!請查看","信息提示",MB_OK);
            
break;
        }

    }

函數(shù)說明:

    int GetMenuString( UINT nIDItem, LPTSTR lpString, int nMaxCount, UINT nFlags ) const;

int GetMenuString( UINT nIDItem, CString& rString, UINT nFlags ) const;

nIDItem:由標(biāo)志位確定,可以是菜單項(xiàng)的ID或者偏移量

lpStringrString:存放字符

nMaxCount:最大長度

nFlags;標(biāo)志位,可以是MF_BYCOMMANDMF_BYPOSITION

BOOL DeleteMenu( UINT nPosition, UINT nFlags );//刪除一個(gè)菜單項(xiàng)

BOOL RemoveMenu( UINT nPosition, UINT nFlags );

5.如何觸發(fā)系統(tǒng)菜單命令;

AfxGetMainWnd()->SendMessage(WM_SYSCOMMAND,SC_CLOSE);

6.如何創(chuàng)建一個(gè)彈出式菜單

    以右擊鼠標(biāo)鍵為例:

    CMenu Menu;

    //創(chuàng)建一個(gè)彈出式菜單

    Menu.CreatePopupMenu();

    //添加一個(gè)菜單項(xiàng)

    Menu.AppendMenu(0, ID_POPUP_MENU1, "菜單項(xiàng)&");

    //添加一個(gè)左邊帶復(fù)選標(biāo)志的菜單項(xiàng)

    Menu.AppendMenu(MF_CHECKED, ID_POPUP_MENU2, "菜單項(xiàng)&");

    //添加一個(gè)分隔條

    Menu.AppendMenu(MF_SEPARATOR, 0, "");

    //顯示一個(gè)灰色和無效的菜單項(xiàng)

    Menu.AppendMenu(MF_GRAYED, ID_POPUP_MENU3, "菜單項(xiàng)&");

    //添加一個(gè)左邊帶單選標(biāo)志的菜單項(xiàng)

    Menu.AppendMenu(0, ID_POPUP_MENU4, "菜單項(xiàng)&");

    Menu.CheckMenuRadioItem(ID_POPUP_MENU3,ID_POPUP_MENU4,ID_POPUP_MENU4,MF_BYCOMMAND);

    //使菜單項(xiàng)為缺省菜單項(xiàng),以黑體字顯示,并在用戶按回車時(shí)響應(yīng)

    ::SetMenuDefaultItem(Menu.m_hMenu,ID_POPUP_MENU4,MF_BYCOMMAND);

    //根據(jù)當(dāng)前光標(biāo)位置顯示菜單

    CPoint Pos;

    GetCursorPos(&Pos); //取得光標(biāo)位置

    Menu.TrackPopupMenu(TPM_RIGHTBUTTON, Pos.x, Pos.y, this);//彈出菜單

    Menu.DestroyMenu();

    CView::OnRButtonDown(nFlags, point);

函數(shù)說明:

BOOL CreatePopupMenu( );//創(chuàng)建一個(gè)彈出式菜單

BOOL CheckMenuRadioItem( UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags );

    NIDFirst:單選按鈕組的第一個(gè)項(xiàng)的ID或命令

    NIDLast:單選按鈕組的最或一個(gè)項(xiàng)的ID或命令

NIDItem:單選標(biāo)記的按鈕

NFlags;標(biāo)志位,MF_BYCOMMANDMF_BYPOSITION

BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL );//在指定的位置彈出菜單

NFlagsTPM_CENTERALIGNTPM_LEFTALIGN TPM_RIGHTALIGNTPM_LEFTBUTTON TPM_RIGHTBUTTON

PWnd:從菜單中接收WM_COMMAND消息

LpRect:包含屏幕的矩形位置,如果用戶單擊,就取消彈出菜單的顯示,為NULL時(shí),如果用戶單擊彈出菜單的其他部分,就取消顯示

7.創(chuàng)建快捷菜單:

重載窗口的OnContextMenu函數(shù),當(dāng)鼠標(biāo)右鍵單擊時(shí)觸發(fā)它,

void C。。。。View::OnContextMenu(CWnd* pWnd, CPoint point)

{

    CMenu Menu;

    if(Menu.LoadMenu(IDR_MAINFRAME))

    {

        CMenu *pMenu=Menu.GetSubMenu(0);

        pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,AfxGetMainWnd());

    }

}

8.取消應(yīng)用程序的菜單;

    CMenu *pMenu=GetMenu();

    pMenu->DestroyMenu();

    SetMenu(NULL);

9.如何在菜單中添加位圖

    在應(yīng)用程序的視圖類中添加CBitmap類的對象,取名為bm_open1bm_open2。在視圖類的構(gòu)造函數(shù)中添加以下代碼:

bm_open1.LoadBitmap(IDB_OPEN1)

bm_open2.LoadBitmap(IDB_OPEN2)

添加位圖到菜單

CWnd*parent=GetParent()

CMenu*pmenubar=parent->GetMenu()

CMenu*pmenu=pmenubar->GetSubMenu(2)

pmenu->SetMenuItemBitmaps(1MF_BYPOSITION&bm_open1&bm_open2)

函數(shù)說明:

BOOL SetMenuItemBitmaps( UINT nPosition, UINT nFlags, const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked );

相信看到函數(shù)原形就可以知道函數(shù)是什么意思

posted on 2009-10-23 16:32 小默 閱讀(1869) 評論(0)  編輯 收藏 引用 所屬分類: Language

導(dǎo)航

統(tǒng)計(jì)

留言簿(13)

隨筆分類(287)

隨筆檔案(289)

漏洞

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久久激情视频| 亚洲精品免费一区二区三区| 亚洲永久精品大片| 久久天堂国产精品| 亚洲午夜在线| 欧美日韩中文精品| 亚洲韩日在线| 免费成人你懂的| 久久青青草综合| 一区二区三区在线免费视频| 久久久国产精品亚洲一区 | 欧美性色视频在线| 夜夜夜久久久| 99精品国产在热久久| 欧美金8天国| 日韩一区二区福利| 91久久午夜| 欧美激情国产高清| 日韩西西人体444www| 亚洲国产欧美在线人成| 免费日韩av片| av成人黄色| 亚洲视频在线一区| 国产日韩欧美在线| 久久久久青草大香线综合精品| 欧美在线欧美在线| 红桃视频成人| 亚洲第一精品夜夜躁人人躁 | 亚洲第一精品在线| 亚洲激情社区| 欧美午夜精品久久久久久久 | 欧美日韩精品| 国产精品99久久久久久人| 99国产精品视频免费观看一公开 | 欧美视频在线免费看| 亚洲欧美激情精品一区二区| 亚洲欧美大片| 1024国产精品| 最新亚洲一区| 国产欧美视频一区二区| 欧美91精品| 欧美日韩免费观看一区=区三区| 亚洲综合成人在线| 久久久久久9| 99精品99| 欧美中日韩免费视频| 亚洲黄色尤物视频| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 欧美激情欧美激情在线五月| 欧美日韩一区视频| 久久九九国产精品| 欧美日韩高清在线播放| 欧美专区一区二区三区| 久久亚洲欧洲| 亚洲欧美一区二区精品久久久| 久久精品毛片| 国产精品99久久不卡二区 | 狠狠色狠狠色综合系列| 亚洲精品国产精品乱码不99按摩| 欧美日韩国产在线| 久久免费国产| 欧美日韩午夜| 欧美激情第4页| 国产日韩欧美亚洲一区| 亚洲日本黄色| 在线观看91久久久久久| 亚洲社区在线观看| 亚洲另类一区二区| 久久久人成影片一区二区三区| 亚洲淫性视频| 欧美福利网址| 欧美大尺度在线| 国产一区二区三区在线观看免费视频| 亚洲精品麻豆| 亚洲精品国产系列| 久久精品国产99精品国产亚洲性色| 一区二区三区国产盗摄| 久久综合中文色婷婷| 久久精品视频在线| 国产精品久久久久久影视 | 欧美激情片在线观看| 久久夜色精品国产| 国产视频久久| 亚洲一区二区网站| 国产精品99久久久久久久久| 欧美激情国产高清| 亚洲第一主播视频| 91久久精品一区二区别| 久久只精品国产| 欧美xart系列高清| 亚洲高清免费视频| 久久久久久黄| 老色鬼久久亚洲一区二区 | 亚洲一区二区三区在线看| 欧美激情一二区| 亚洲激情视频| 亚洲每日在线| 欧美日韩免费一区二区三区视频 | 男人的天堂亚洲| 亚洲国产精品第一区二区| 亚洲国产精品悠悠久久琪琪| 免费成人你懂的| 亚洲国产精品久久久久秋霞不卡| 91久久国产自产拍夜夜嗨| 蜜臀av性久久久久蜜臀aⅴ| 久久亚洲视频| 亚洲国产免费| 欧美久久在线| 中国日韩欧美久久久久久久久| 亚洲免费在线电影| 国产日韩精品一区观看| 欧美在线观看网站| 欧美成人蜜桃| 99香蕉国产精品偷在线观看| 欧美视频日韩视频在线观看| 亚洲天堂av在线免费观看| 欧美一区二区成人6969| 国语自产精品视频在线看8查询8| 久久一区二区三区四区五区| 91久久午夜| 欧美亚洲午夜视频在线观看| 伊人久久大香线蕉综合热线| 欧美激情综合色| 一区二区三区国产在线| 欧美在线91| 最近中文字幕日韩精品 | 久久亚洲欧美国产精品乐播| 亚洲精品美女免费| 欧美中文在线观看| 亚洲高清网站| 欧美系列电影免费观看| 欧美在线视频日韩| 亚洲日本成人在线观看| 欧美综合激情网| 亚洲精品一区中文| 国产欧美一区在线| 欧美好吊妞视频| 欧美一级免费视频| 亚洲精品日日夜夜| 久久亚洲国产精品日日av夜夜| 一本大道久久a久久综合婷婷 | 欧美一区二区精美| 亚洲区第一页| 国产亚洲欧美另类中文| 欧美激情亚洲综合一区| 欧美一区二区国产| 99国产精品自拍| 欧美风情在线| 久久久精品五月天| 亚洲素人一区二区| 亚洲二区在线视频| 国产亚洲综合精品| 国产精品久久久久久久7电影| 久久在线视频| 欧美一区二区视频观看视频| 亚洲美女淫视频| 亚洲第一综合天堂另类专| 久久―日本道色综合久久| 亚洲永久在线| 在线亚洲美日韩| 亚洲精品中文字幕在线观看| 激情av一区二区| 国产午夜精品一区二区三区欧美 | 在线观看日韩欧美| 国产一级久久| 国产乱码精品一区二区三区av| 欧美日韩精品一区二区三区| 欧美顶级少妇做爰| 欧美成人官网二区| 麻豆精品91| 免费试看一区| 欧美成人影音| 欧美国产日本韩| 欧美成人午夜77777| 美国十次成人| 欧美1区视频| 欧美成人自拍| 欧美国产视频在线观看| 美女黄色成人网| 麻豆精品在线播放| 欧美xxxx在线观看| 欧美成人免费全部| 欧美激情中文不卡| 欧美日韩免费观看一区二区三区 | 久久久久青草大香线综合精品| 久久国产精品久久精品国产| 欧美在线视屏| 久久永久免费| 你懂的视频欧美| 欧美国产视频日韩| 亚洲国产婷婷香蕉久久久久久99| 亚洲人妖在线| 亚洲婷婷综合色高清在线| 亚洲专区一区二区三区| 欧美在线视频网站| 免费成人av在线| 欧美日韩精品综合在线| 国产精品久久久久久影院8一贰佰| 国产精品中文字幕在线观看| 激情欧美一区二区三区在线观看|