zoukankan      html  css  js  c++  java
  • 吉林大学vc6.0视频记录

    Lesson2

    添加弹出菜单

    1、插入一个新的菜单

    2、给View类添加消息处理RButtonDown

     
    Code
    void CPopUpMenuView::OnRButtonDown(UINT nFlags, CPoint point) 
    {
        
    // TODO: Add your message handler code here and/or call default
        CMenu menu;
        
    if (!menu.LoadMenu(IDR_MENU1))
        {
            MessageBox(
    "no");
            
    return;
        }
        CMenu
    * pPopMenu;
        CPoint Mypoint;
        ClientToScreen(
    &point);
        pPopMenu
    =menu.GetSubMenu(1);
        pPopMenu
    ->TrackPopupMenu(TPM_TOPALIGN ,point.x,point.y,AfxGetMainWnd());
        CView::OnRButtonDown(nFlags, point);
    }
      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,就说明用户从弹出菜单中选择了一个菜单。以返回的ID号为参数wParam的值,程序给自己发送了一个WM_SYSCOMMAND消息)
      用下列标志位之一来确定在快捷菜单跟踪哪一个鼠标键:
      TPM_LEFTBUTTON:若设置此标志,用户只能用鼠标左键选择菜单项。
      TPM_RIGHTBUTTON:若设置此标志,用户能用鼠标左、右键选择菜单项。
      X:在屏幕坐标下,快捷菜单的水平位置。
      Y:在屏幕坐标下,快捷菜单的垂直位置。
      NReserved:保留值,必须为零。
     
    ----------------------------------------------------------------------------------------------------------------------------
    实现:

    1、插入3个bitmap图片
    2、在CMainFrame中定义3个变量.
    CBitmap m_bitmapGreen;
    CBitmap m_bitmapRed;
    CBitmap m_bitmapYellow;
    3、在构造函数中写
    Code
    CMainFrame::CMainFrame()
    {
        
    // TODO: add member initialization code here
        m_bitmapGreen.LoadBitmap(IDB_BITMAP1);
        m_bitmapRed.LoadBitmap(IDB_BITMAP2);
        m_bitmapYellow.LoadBitmap(IDB_BITMAP3);
    }
    4、 添加CMainFrame的消息WM_INITMenu
    Code
    void CMainFrame::OnInitMenu(CMenu* pMenu) 
    {
        CFrameWnd::OnInitMenu(pMenu);
        
    // TODO: Add your message handler code here
        pMenu->ModifyMenu(ID_GRENN,MF_BITMAP,ID_GRENN,&m_bitmapGreen);
        pMenu
    ->ModifyMenu(ID_RED,MF_BITMAP,ID_RED,&m_bitmapRed);
        pMenu
    ->ModifyMenu(ID_Yellow,MF_BITMAP,ID_Yellow,&m_bitmapYellow);

    ----------------------------------------------------------------------------------------------------------------------------

    实现

    EnableDocking 函数

    · CBRS_ALIGN_TOP 允许停靠到用户区的顶部。
    · CBRS_ALIGN_BOTTOM 允许停靠到用户区底部。
    · CBRS_ALIGN_LEFT 允许停靠到用户区左边。
    · CBRS_ALIGN_RIGHT 允许停靠到用户区右边。
    · CBRS_ALIGN ANY 允许停靠到用户区任意一边。

     

  • 相关阅读:
    [ARC117F]Gateau
    [ARC117D]Miracle Tree
    [loj3504]支配
    [gym102511K]Traffic Blights
    [loj3501]图函数
    [loj3503]滚榜
    [loj3500]矩阵游戏
    [loj2135]幻想乡战略游戏
    [cf720D]Slalom
    [cf1349E]Slime and Hats
  • 原文地址:https://www.cnblogs.com/fjchenqian/p/1494139.html
Copyright © 2011-2022 走看看