2013 duilib入门简明教程 -- 响应按钮事件(4)
来源:互联网 发布:电脑卡片制作软件 编辑:程序博客网 时间:2024/06/06 12:47
上一个Hello World的教程里有一句代码是这样的:CControlUI *pWnd = new CButtonUI;
也就是说,其实那整块绿色背景区域都是按钮的区域。(这里简要介绍下,CControlUI 是duilib中所有控件的基类,而CButtonUI则是按钮类,更多的控件会在后面的教程一一介绍。)
那么怎样响应按钮的点击消息呢?
我们需要几个步骤:
1、调用AddNotifier函数将消息加入duilib的消息循环
2、给按钮设置一个唯一的控件ID(SetName函数)
3、在Notify函数里处理按钮点击消息。
代码如下:
class CDuiFrameWnd : public CWindowWnd, public INotifyUI{public: virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFrame"); } virtual void Notify(TNotifyUI& msg) { if(msg.sType == _T("click")) { if(msg.pSender->GetName() == _T("btnHello")) { ::MessageBox(NULL, _T("我是按钮"), _T("点击了按钮"), NULL); } } } virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; if( uMsg == WM_CREATE ) { CControlUI *pWnd = new CButtonUI; pWnd->SetName(_T("btnHello")); // 设置控件的名称,这个名称用于标识每一个控件,必须唯一,相当于MFC里面的控件ID pWnd->SetText(_T("Hello World")); // 设置文字 pWnd->SetBkColor(0xFF00FF00); // 设置背景色 m_PaintManager.Init(m_hWnd); m_PaintManager.AttachDialog(pWnd); m_PaintManager.AddNotifier(this); // 添加控件等消息响应,这样消息就会传达到duilib的消息循环,我们可以在Notify函数里做消息处理 return lRes; } if( m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes) ) { return lRes; } return __super::HandleMessage(uMsg, wParam, lParam); }protected: CPaintManagerUI m_PaintManager;};
运行结果如图:
0 0
- 2013 duilib入门简明教程 -- 响应按钮事件(4)
- 2013 duilib入门简明教程 -- 事件处理和消息响应 (17)
- DuiLib响应按钮事件
- DuiLib 响应按钮事件
- duilib入门简明教程
- DuiLib入门简明教程
- DUILIB入门简明教程
- duilib入门简明教程
- DUILIB入门简明教程
- DuiLib入门简明教程
- 2013 duilib入门简明教程 -- 总结 (20)
- 2013 duilib入门简明教程 -- 前言(1)
- 2013 duilib入门简明教程 -- 其他 (18)
- 2013 duilib入门简明教程 -- FAQ (19)
- 2013 duilib入门简明教程 -- 总结 (20)
- 2013 duilib入门简明教程 -- 前言(1)
- 2013 duilib入门简明教程 -- 总结 (20)
- duilib教程之duilib入门简明教程
- Alberl 2013 duilib入门简明教程 -- VS环境配置(2)
- python 使用sqlite3
- 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)
- java实现一个简单的HTTP服务器,带打开网页和计算功能
- Linux下动态挂载硬盘,其实就这么简单
- 2013 duilib入门简明教程 -- 响应按钮事件(4)
- 看书小记4(《C专家编程》)
- 由于目标机器积极拒绝,无法连接(一种变态问题)
- Android---利用SharedPreferences来保存应用程序的配置信息
- 2013 duilib入门简明教程 -- 自绘标题栏(5)
- 2013 duilib入门简明教程 -- XML配置界面(6)
- 类的加载机制
- 高速信号采集卡—全球顶级超宽带射频信号高速采集存储记录回放系统5GSPS!6000MB/S!
- local host ip get