C++实例 菜单操作2 ON_UPDATE_COMMAND_UI

#include <afxwin.h> 
#include "COMMAND_UI.h"    //载入资源文件所使用之标头文件

class MyFrame : public CFrameWnd
{
private:
    COLORREF color;
public:
    MyFrame()    //建构符
    {
        Create(NULL,    //产生标准视窗
                    "COMMAND_UI",    //视窗标题
                    WS_OVERLAPPEDWINDOW|WS_VISIBLE,    //视窗样式
                    rectDefault,    //视窗大小
                    NULL,    //指向父视窗的指针
                    MAKEINTRESOURCE(IDR_MENU), //菜单栏
                    WS_EX_ACCEPTFILES //接受拖放(容器的扩展属性)
                    );    //使用选单的识别符

        color = RGB(255,0,0);    //将点的颜色预设为红色
    }

    afx_msg void OnRed()    //当Color Menu中Red选项被选取时
    { color = RGB(255,0,0); }    //设定画在画布上的颜色

    afx_msg void OnGreen()    //当Color Menu中Green选项被选取时
    { color = RGB(0,255,0);    }

    afx_msg void OnBlue()    //当Color Menu中Blue选项被选取时
    { color = RGB(0,0,255);    }
    
    //处理ON_UPDATE_COMMAND_UI讯息的函数
    afx_msg void OnUpdateRed(CCmdUI * aCmdUI)
    {                //aCmdUI为指向Red选项的控件指针
        aCmdUI->SetCheck(color == RGB(255,0,0));    //将aCmdUI控件打勾
    }    

    afx_msg void OnUpdateGreen(CCmdUI * aCmdUI)
    { aCmdUI->SetCheck(color == RGB(0,255,0)); } //用color作为开关语句 控制勾选的状态

    afx_msg void OnUpdateBlue(CCmdUI * aCmdUI)
    { aCmdUI->SetCheck(color == RGB(0,0,255)); }

    afx_msg void OnLButtonUp(UINT nFlags, CPoint point)
    { ReleaseCapture(); }//当鼠标左键放开后的回应函数,释放鼠标讯息接收权

    afx_msg void OnLButtonDown(UINT nFlags, CPoint point)
    { SetCapture(); }    //当鼠标左键按下后的回应函数,取得鼠标讯息接收权

    afx_msg void OnMouseMove(UINT nFlags, CPoint point)
    {                //当鼠标移动时的回应函数
        if (this == GetCapture())    //判断鼠标光标是否在视窗之上
        {
            CClientDC aDC(this);    //建立一个画布
            aDC.SetPixel(point, color);    //在画布上画出颜色为color的点
        }
    }

    DECLARE_MESSAGE_MAP()    //声明讯息映射表
};

//建立MyFrame类别的讯息映射表
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)
    //回应UPDATE_COMMAND_UI讯息
    ON_UPDATE_COMMAND_UI(IDM_Red, OnUpdateRed) //ON_UPDATE_COMMAND_UI消息先于ON_COMMAND执行
    ON_UPDATE_COMMAND_UI(IDM_Green, OnUpdateGreen)
    ON_UPDATE_COMMAND_UI(IDM_Blue, OnUpdateBlue)
    ON_COMMAND(IDM_Red, OnRed)
    ON_COMMAND(IDM_Green, OnGreen)
    ON_COMMAND(IDM_Blue, OnBlue)
            //回应鼠标讯息
    ON_WM_LBUTTONDOWN()
    ON_WM_MOUSEMOVE()
    ON_WM_LBUTTONUP()
END_MESSAGE_MAP()

class MyApp : public CWinApp    //应用程序类别
{
public:
    BOOL InitInstance()    //程序进入点
    {
        CFrameWnd *Frame = new MyFrame;
        m_pMainWnd = Frame;
        Frame->ShowWindow(SW_SHOW);    //显示视窗
        
        return true;
    }
} a_app;    //声明应用程序控件

 

转载于:https://www.cnblogs.com/pythonschool/archive/2013/03/12/2956164.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值