吉林大学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 允许停靠到用户区任意一边。

 

posted @ 2009-06-02 00:20  学海拾贝  阅读(340)  评论(0编辑  收藏  举报