科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用VC制作带弹出式菜单的按钮

用VC制作带弹出式菜单的按钮

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

带有弹出式菜单的按钮可以使一个按钮具有多项选择功能,扩展了按钮的功能。

作者:风林 来源:vchelp 2007年10月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
四、自定义接口函数

  提供用户使用按钮的接口。

//设置关联菜单ID
void CMenuButton::SetMenuID(int nID)
{
 m_MenuID = nID;
}

//设置按钮文本
void CMenuButton::SetText(CString str)
{
 m_strText = str;
}

//设置文本颜色
void CMenuButton::SetForeColor(COLORREF color)
{
 m_ForeColor = color;
 Invalidate();
}

//设置背景颜色
void CMenuButton::SetBkColor(COLORREF color)
{
 m_BackColor = color;
 Invalidate();
}

//是否单击主按钮区
BOOL CMenuButton::isClick()
{
 return b_ClickBut;
}

  由于这种按钮分为两个区域,使用时要根据单击区域决定要做的工作,所以设置了isClick()接口函数。

  五、变量的初始化

  在CMenuButton类的头文件中,定义有以下变量和函数:

MenuButton.h

private:
 int m_State; //按钮状态
 BOOL b_InFlag; //鼠标进入标志
 BOOL b_ClickFlag; //单击选择区
 BOOL b_ClickBut; //单击主体区
 CString m_strText; //按钮文字
 COLORREF m_ForeColor; //文本颜色
 COLORREF m_BackColor; //背景色
 CRect m_ButRect; //按钮尺寸
 CRect m_LRect; //按钮左部尺寸
 CRect m_RRect; //按钮右部尺寸
 CMenu m_Menu; //弹出菜单
 int m_MenuID; //菜单ID

void DrawButton(CDC *pDC); //绘制按钮

public:
 CMenuButton(); //构造函数
 void SetMenuID(int nID); //设置关联菜单ID
 void SetForeColor(COLORREF color); //设置文本颜色
 void SetBkColor(COLORREF color); //设置背景颜色
 void SetText(CString str); //设置按钮文本
 BOOL isClick(); //是否单击主按钮区

  各变量的初始化在构造函数中进行:

CMenuButton::CMenuButton()
{
 m_MenuID = 0; //菜单ID
 b_InFlag = false; //进入标志
 m_State = 0; //初始状态
 b_ClickFlag = false; //单击选择区标志
 b_ClickBut = false; //单击主体区标志
 m_strText = _T(""); //按钮文本
 m_ForeColor = RGB(0,0,0); //文字颜色
 m_BackColor = GetSysColor( COLOR_3DFACE ); //背景色
}

  这样,带菜单的按钮类就做好了,用它定义的按钮实例可以连接一个弹出式按钮,下面我们就看看怎样定义按钮实例。

  六、生成按钮实例

  1、在对话框中放置按钮,把它的大小调整合适;

  2、用ClassWizard为按钮添加变量,把变量的类型设置为CMenuButton;

  3、定义按钮的关联菜单

  关联菜单就是普通的弹出式菜单,用VC的菜单编辑器生成即可。

  进入资源的“Menu”项,插入一个新的菜单,根据需要添加菜单项。

  4、设置按钮

  在对话框的OnInitial()函数中初始化按钮:

  按钮变量.SetMenuID( 菜单ID );
  按钮变量.SetText( 按钮文本 );
  按钮变量.SetBkColor( 按钮背景色 );

  七、按钮的响应

  对按钮的响应包括单击按钮主体区的响应和单击菜单项的响应两部分。

  用ClassWizard添加按钮的响应函数和各菜单项的响应函数。

  在按钮的响应函数中要做如下工作:

void CMBTestView::OnMenubutton1()
{
 if( m_MenuButton1.isClick() )
 {
  //响应按钮操作
 }
}

  这里要求只有单击按钮的主体区时才进行响应。

  至于单击菜单项的响应与普通菜单一样,这里不再详述。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章