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

小默

[zz]MFC中菜單的應用(注釋詳細)

  1 取消右鍵系統菜單

PreCreateWindow函數中改變設置樣式:

cs.style&=~WS_SYSMENU

CREATESTRUCT的具體結構如下:

 

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

 

 

2.在右鍵系統菜單加入菜單項:

在窗口創建的時候加入

    CMenu *pMenu=GetSystemMenu(FALSE);//取得系統菜單
    CString StrMenuTitle="我的菜單";
    pMenu
->AppendMenu(MF_SEPARATOR);//增加一個項目到菜單的末尾,增加分割線
    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:標志位,可以是, MF_OWNERDRAW, MF_STRING, MF_SEPARATOR, MF_POPUP

NIDNewItem:菜單項目的ID,如果Nflags設置為MF_POPUP,那么就是子菜單的句柄,如果是MF_SEPARATOR,就突列.

LpszNewItem:新菜單項的內容

PBmp:菜單項圖像對象,指向一個Cbitmap對象

在系統菜單中增加了菜單項之后再增加消息處理函數.發送的是系統消息,OnSysCommand函數中處理

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

CFrameWnd::OnSysCommand(nID, lParam);
}

3.動態的增加菜單項:

 

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

4.動態的刪除菜單項:

    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;
        }

    }

函數說明:

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

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

nIDItem:由標志位確定,可以是菜單項的ID或者偏移量

lpStringrString:存放字符

nMaxCount:最大長度

nFlags;標志位,可以是MF_BYCOMMANDMF_BYPOSITION

BOOL DeleteMenu( UINT nPosition, UINT nFlags );//刪除一個菜單項

BOOL RemoveMenu( UINT nPosition, UINT nFlags );

5.如何觸發系統菜單命令;

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

6.如何創建一個彈出式菜單

    以右擊鼠標鍵為例:

    CMenu Menu;

    //創建一個彈出式菜單

    Menu.CreatePopupMenu();

    //添加一個菜單項

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

    //添加一個左邊帶復選標志的菜單項

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

    //添加一個分隔條

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

    //顯示一個灰色和無效的菜單項

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

    //添加一個左邊帶單選標志的菜單項

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

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

    //使菜單項為缺省菜單項,以黑體字顯示,并在用戶按回車時響應

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

    //根據當前光標位置顯示菜單

    CPoint Pos;

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

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

    Menu.DestroyMenu();

    CView::OnRButtonDown(nFlags, point);

函數說明:

BOOL CreatePopupMenu( );//創建一個彈出式菜單

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

    NIDFirst:單選按鈕組的第一個項的ID或命令

    NIDLast:單選按鈕組的最或一個項的ID或命令

NIDItem:單選標記的按鈕

NFlags;標志位,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時,如果用戶單擊彈出菜單的其他部分,就取消顯示

7.創建快捷菜單:

重載窗口的OnContextMenu函數,當鼠標右鍵單擊時觸發它,

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.取消應用程序的菜單;

    CMenu *pMenu=GetMenu();

    pMenu->DestroyMenu();

    SetMenu(NULL);

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

    在應用程序的視圖類中添加CBitmap類的對象,取名為bm_open1bm_open2。在視圖類的構造函數中添加以下代碼:

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)

函數說明:

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

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

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

導航

統計

留言簿(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>
            欧美精品18| 亚洲女人小视频在线观看| 亚洲免费一在线| 99视频超级精品| 亚洲午夜免费视频| 亚洲欧美激情视频| 欧美伊久线香蕉线新在线| 久久国内精品视频| 免费一级欧美片在线播放| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美电影在线| 最新成人av网站| 亚洲精品乱码久久久久久蜜桃91| 日韩天天综合| 亚洲视频狠狠| 亚洲国产婷婷| 国产精品入口66mio| 国产午夜精品美女视频明星a级| 国产一区二区视频在线观看| 亚洲激情偷拍| 欧美一级片在线播放| 欧美成人一区二区在线| 国产精品99久久久久久久久久久久| 新片速递亚洲合集欧美合集| 欧美成人精品h版在线观看| 国产精品亚洲片夜色在线| 亚洲激情电影在线| 久久精品中文| 99精品久久久| 久久青青草原一区二区| 国产精品成人一区二区三区吃奶| 悠悠资源网久久精品| 亚洲欧美视频在线观看| 欧美激情影音先锋| 性做久久久久久| 欧美另类久久久品| 伊人色综合久久天天五月婷| 亚洲亚洲精品在线观看| 亚洲国产高潮在线观看| 午夜激情综合网| 欧美日韩国产免费| 亚洲欧洲一区二区在线观看| 久久经典综合| 亚洲欧美日韩精品久久奇米色影视| 欧美激情亚洲精品| 亚洲国产日韩综合一区| 久久网站免费| 欧美一区视频在线| 国产精品久久久久久久7电影| 亚洲激情社区| 亚洲高清在线观看| 麻豆国产va免费精品高清在线| 国产日韩在线一区| 欧美一区二区黄| 亚洲图片欧洲图片av| 欧美日产一区二区三区在线观看| 亚洲精品网址在线观看| 欧美成人一品| 欧美成人精品福利| 亚洲欧洲一区| 亚洲乱码国产乱码精品精天堂 | 欧美在线观看你懂的| 一区二区三区欧美激情| 欧美成人伊人久久综合网| 欧美一区二区三区视频在线| 欧美激情a∨在线视频播放| 一色屋精品视频免费看| 久久综合99re88久久爱| 久久九九国产| 亚洲电影第1页| 亚洲美女精品久久| 一区三区视频| 欧美大片在线影院| 欧美va亚洲va日韩∨a综合色| 怡红院av一区二区三区| 鲁大师成人一区二区三区| 老**午夜毛片一区二区三区| 精品999日本| 亚洲国产精品尤物yw在线观看| 欧美成人中文字幕| 亚洲视频在线免费观看| 亚洲一级二级在线| 国产综合色在线| 免费成人网www| 欧美福利影院| 亚洲欧美精品在线| 久久精品1区| 日韩一区二区久久| 午夜精品久久久久久久久 | 亚洲国产va精品久久久不卡综合| 欧美黄免费看| 国产精品久久久久秋霞鲁丝| 久久久久免费视频| 欧美激情免费观看| 午夜精品视频在线| 午夜精品久久久久久久| 亚洲欧美另类在线| 久久久久久夜| 制服丝袜亚洲播放| 亚洲女爱视频在线| 亚洲欧洲日本专区| 亚洲女女女同性video| 亚洲国产精品成人综合色在线婷婷| 日韩视频免费在线| 一区在线影院| 亚洲欧美日韩直播| 中国女人久久久| 免费成人在线观看视频| 欧美一区二区三区在线观看| 欧美精品一区三区| 免费成人在线视频网站| 国产精品视频| 日韩视频在线观看国产| 亚洲国产精品成人精品| 午夜电影亚洲| 亚洲欧美一区二区在线观看| 欧美美女视频| 欧美国产一区二区在线观看 | 亚洲特级片在线| 久久综合给合久久狠狠色| 欧美在线短视频| 国产精品久久久久久久久久妞妞| 欧美二区在线观看| 国内伊人久久久久久网站视频 | 亚洲成人资源| 亚洲欧美日韩在线高清直播| 国产精品久久久久毛片大屁完整版| 黄网站免费久久| 亚洲精品一区中文| 亚洲人成在线观看一区二区| 久久精品噜噜噜成人av农村| 欧美亚洲免费电影| 国产精品久久久久久影视| 夜夜嗨av一区二区三区| 一区二区免费在线播放| 欧美精品日韩一本| 亚洲国产一区二区三区a毛片| 在线精品在线| 久久深夜福利免费观看| 欧美成人免费全部| 亚洲国产日韩欧美在线图片| 免费观看欧美在线视频的网站| 欧美3dxxxxhd| 亚洲日韩中文字幕在线播放| 欧美精品一区二区三区蜜桃| 亚洲经典三级| 一本色道久久综合狠狠躁篇的优点| 欧美激情女人20p| 一级日韩一区在线观看| 亚洲永久精品国产| 国产精品美女午夜av| 欧美一区=区| 免费高清在线视频一区·| 亚洲精品1234| 欧美日韩系列| 午夜精品国产更新| 欧美成人a视频| 夜夜嗨av色一区二区不卡| 欧美午夜激情视频| 欧美一区二区在线免费播放| 能在线观看的日韩av| 99精品免费| 国产精品亚洲视频| 久久理论片午夜琪琪电影网| 亚洲精品一区二区三区不| 欧美在线一二三区| 91久久国产综合久久| 国产精品99免费看 | 亚洲一区二区三区精品动漫| 国产精品一卡二卡| 久久国产精品第一页| 亚洲国内精品在线| 欧美一级成年大片在线观看| 亚洲第一精品在线| 国产精品高清网站| 久久一区二区精品| 一本到高清视频免费精品| 久久久久久久97| 亚洲精品欧美一区二区三区| 国产精品久久91| 免费观看一区| 亚洲在线观看免费| 欧美大色视频| 久久精品国产77777蜜臀| 亚洲精品一区二区三区99| 国产一区二区三区在线播放免费观看 | 国产在线麻豆精品观看| 免费看黄裸体一级大秀欧美| 亚洲美女在线视频| 美女精品视频一区| 亚洲欧美国产日韩中文字幕| **欧美日韩vr在线| 国产乱码精品1区2区3区| 欧美顶级艳妇交换群宴| 欧美一区三区三区高中清蜜桃 | 亚洲一区影院| 亚洲精品视频二区| 免费欧美在线| 久久精品免费电影| 欧美一区二区三区日韩|