C++实例 菜单操作2 ON_UPDATE_COMMAND_UI

来源:互联网 发布:刺客信条起源优化补丁 编辑:程序博客网 时间:2024/06/07 02:03
#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;//声明应用程序控件

原创粉丝点击