zoukankan      html  css  js  c++  java
  • 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;    //声明应用程序控件
    学习笔记转摘于: 丝酷网 http://www.pythonschool.com/
  • 相关阅读:
    第一次冲刺04
    第一次冲刺03
    第一次冲刺02
    团队站立会议3(第二阶段)
    团队站立会议2(第二阶段)
    团队站立会议1(第二阶段)
    Alpha版总结会议
    “来用”alpha版使用说明书
    团队绩效评估计划
    第一阶段其他团队对我们的意见汇总
  • 原文地址:https://www.cnblogs.com/pythonschool/p/2956164.html
Copyright © 2011-2022 走看看