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

小默

[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>
            夜夜嗨一区二区| 欧美日韩精品欧美日韩精品一| 日韩亚洲精品视频| 欧美日韩亚洲激情| 欧美激情第二页| 国产欧美一区视频| 午夜久久99| 欧美日韩视频在线观看一区二区三区 | 国产欧美一区二区三区久久| 午夜精品久久久久| 亚洲香蕉网站| 亚洲国产第一| 亚洲视频狠狠| 国产亚洲欧美激情| aa级大片欧美| 91久久精品网| 久久偷窥视频| 91久久久久久久久| 欧美午夜精品一区| 欧美大色视频| 欧美激情一区二区三区蜜桃视频 | 91久久综合亚洲鲁鲁五月天| 欧美激情综合| 欧美1级日本1级| 亚洲高清视频一区二区| 国产精品va在线播放我和闺蜜| 久久青草久久| 在线观看日韩国产| 久久综合网络一区二区| 亚洲午夜久久久久久久久电影院| 国产欧美综合在线| 午夜精品久久久久久久久久久久 | 亚洲激情二区| 亚洲国产精品一区二区三区 | 亚洲第一主播视频| 亚洲精选一区| 欧美一区二区视频在线观看2020| 女人天堂亚洲aⅴ在线观看| 欧美激情1区2区3区| 午夜精品久久久久久久99热浪潮| 欧美日韩大片| 91久久午夜| 久久久免费精品视频| 一区二区欧美日韩视频| 欧美成人小视频| 激情欧美日韩| 久久精品国产免费观看| 夜夜嗨av一区二区三区四季av| 久久久不卡网国产精品一区| 伊人成人网在线看| 好看的av在线不卡观看| 亚洲一区成人| 日韩午夜黄色| 欧美日韩精品在线视频| 亚洲国产一区二区三区青草影视| 久久久久久夜| 欧美在线高清| 国产日韩精品一区二区三区在线| 亚洲男人的天堂在线| 亚洲精品久久久久久下一站| 久久性色av| 好吊日精品视频| 久久综合图片| 久久综合久久综合久久| 亚洲大片一区二区三区| 乱中年女人伦av一区二区| 久久国产主播精品| 伊人成人开心激情综合网| 欧美成人精品1314www| 久久精品视频播放| 在线高清一区| 亚洲成人中文| 欧美日韩在线高清| 亚洲综合首页| 性8sex亚洲区入口| 黄色亚洲网站| 亚洲电影在线播放| 欧美图区在线视频| 午夜精品福利电影| 久久国产精品99精品国产| 亚洲国产成人tv| 日韩一级在线观看| 国产人成精品一区二区三| 嫩模写真一区二区三区三州| 模特精品在线| 亚洲在线免费视频| 久久国产黑丝| 中文国产亚洲喷潮| 亚洲欧美偷拍卡通变态| 国产一区亚洲| 亚洲二区在线观看| 国产精品久久久久久久久久尿| 久久xxxx精品视频| 欧美肥婆bbw| 久久国产精彩视频| 欧美粗暴jizz性欧美20| 亚洲午夜精品网| 欧美一区二区三区在线播放| 影音先锋一区| 亚洲影院在线观看| 久久人人爽人人爽| 午夜精品偷拍| 免费欧美在线视频| 欧美亚洲在线观看| 欧美精品导航| 久久国产日韩| 国产精品成人一区二区三区吃奶| 蜜桃精品久久久久久久免费影院| 欧美涩涩网站| 亚洲电影在线看| 国产日韩精品一区二区三区在线| 日韩午夜中文字幕| 久久人人97超碰人人澡爱香蕉| 亚洲视频一二区| 久久久噜噜噜久噜久久| 99视频精品在线| 欧美在线视频一区二区| 亚洲无吗在线| 欧美精品三级| 欧美激情亚洲自拍| 狠狠色狠狠色综合日日五| 亚洲色图在线视频| 亚洲乱码国产乱码精品精可以看| 欧美在线播放| 午夜精品一区二区在线观看| 美女视频一区免费观看| 久久综合久久久久88| 国产伦精品免费视频| 99精品久久久| 一区二区不卡在线视频 午夜欧美不卡在| 欧美伊人久久久久久午夜久久久久| aa亚洲婷婷| 欧美二区在线播放| 美国十次成人| 国模精品一区二区三区| 亚洲欧美美女| 久久精品国产久精国产一老狼 | 99综合电影在线视频| 久久精品国产成人| 久久久国产精彩视频美女艺术照福利| 国产精品普通话对白| 亚洲专区一区二区三区| 亚洲欧美日韩中文在线制服| 国产精品福利av| 亚洲影院色在线观看免费| 亚洲午夜小视频| 国产精品捆绑调教| 亚洲一区区二区| 亚洲欧美变态国产另类| 国产精品一香蕉国产线看观看| 亚洲男人第一av网站| 久久成人久久爱| 国内外成人免费激情在线视频网站 | 国产欧美亚洲精品| 久久精品国产99国产精品| 久久一综合视频| 亚洲国产婷婷| 欧美日韩国产电影| 亚洲午夜精品在线| 久久精品一本| 亚洲激情专区| 国产精品久久久一区麻豆最新章节| 午夜精品久久久99热福利| 老司机免费视频一区二区| 亚洲久色影视| 国产精品亚洲美女av网站| 欧美在线播放视频| 亚洲国产欧美日韩| 亚洲一品av免费观看| 国产综合在线看| 欧美激情四色| 欧美综合77777色婷婷| 亚洲国产欧美一区二区三区久久 | 国产综合婷婷| 奶水喷射视频一区| 99精品欧美一区二区三区综合在线| 欧美日韩国产片| 亚洲欧美综合精品久久成人 | 午夜久久tv| 免费视频一区二区三区在线观看| 国产在线欧美日韩| 久久久久久久综合| 欧美日本高清视频| 蜜桃伊人久久| 欧美激情在线狂野欧美精品| 一区二区三区四区五区精品视频| 亚洲婷婷在线| 欧美国产日韩一区二区| 久久精品国产清高在天天线| 国产精品免费看久久久香蕉| 亚洲电影免费观看高清| 在线观看欧美日韩| 国产亚洲福利一区| 国产欧美日韩精品在线| 性欧美精品高清| 欧美高清在线视频观看不卡| 亚洲免费一在线| 亚洲九九精品| 激情久久五月| 亚洲欧美日韩在线不卡|