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/
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步