MFC与duilib之间控件相互调用
来源:互联网 发布:伏安特性曲线实验数据 编辑:程序博客网 时间:2024/06/06 11:42
一、在MFC中使用duilib控件
将duilib的控件窗口的父窗口指定为MFC的窗口,同时在MFC中显示duilib的控件窗口。
duilib的控件窗口需要继承CWindowWnd, INotifyUI,实现GetWindowClassName、GetClassStyle、OnFinalMessage、Notify、HandleMessage等方法。
在MFC中以子窗口样式显示duilib的控件窗口。比如:
m_duiFrameWnd.Create(*this, NULL, UI_WNDSTYLE_CHILD, 0, 0, 0, 400, 300);
m_duiFrameWnd.ShowWindow(TRUE);
如何响应duilib控件事件,需要处理Notify函数。比如:
//m_pDlgMain是MFC主窗口的指针。void CDuiFrameWnd::Notify( TNotifyUI& msg ){ if (m_pDlgMain) { if( msg.sType == _T("click") ) { if( msg.pSender->GetName() == _T("btnStart") ) { m_pDlgMain->OnBnClickedButtonStart(); } else if( msg.pSender->GetName() == _T("btnStop") ) { m_pDlgMain->OnBnClickedButtonStop(); } } } __super::Notify(msg);}
二、在duilib中使用MFC控件
自定义一个duilib控件来容纳MFC控件,xml布局界面文件中使用该控件,使用非duilib控件来标记,比如:MyMfcWnd,非duilib控件需要自己在响应CreateControl创建,创建该控件时之后将MFC控件句柄绑定在一起(通过Attach)。
duilib中MFC控件的响应
win32是通过WM_COMMAND进行消息传递的,我们只需截获WM_COMMAND,而duilib的WM_COMMAND等windows消息可以在HandleMessage函数里截获,比如:
LRESULT CDuiFrameWnd::HandleMessage( UINT uMsg, WPARAM wParam, LPARAM lParam ){ switch (uMsg) { case WM_COMMAND: if (IDC_BUTTON_DUI_NEXT == wParam) { if (m_pDlgMain) { m_pDlgMain->OnBnClickedButtonSendMsg(); } } break; default: break; } return __super::HandleMessage(uMsg, wParam, lParam);}
完整实例代码:http://download.csdn.net/detail/byxdaz/9860571
阅读全文
0 0
- MFC与duilib之间控件相互调用
- duilib JS与C++的相互调用
- mfc中web插件与c++之间相互调用方案
- activity与fragment之间相互调用彼此控件
- mfc可执行程序之间的相互调用
- mfc对话框之间的相互调用
- duilib中使用MFC控件
- C#与js之间的相互调用
- C与C++库之间相互调用
- php与shell之间相互调用
- C与C++之间相互调用
- Python与C之间的相互调用
- android 与javascipt 之间相互调用
- C++ 与 c# 模块 之间相互调用
- Android与JavaScript之间的相互调用
- C与C++之间相互调用
- C与C++之间相互调用
- OC与JS之间的相互调用
- 2017年6月4日22:08:33 238. Product of Array Except Self 【medium】
- 21条css高级技巧
- Java swing setEnable()”方法的使用
- 【NGUI基础知识】——UIGrid(网格排列)
- caffe训练与微调时的区别
- MFC与duilib之间控件相互调用
- 欢迎使用CSDN-markdown编辑器
- 搬山
- BM25对于结构化摘要的优化
- bzoj 3560 DZY Loves Math V
- java io
- myBatis 一对一 和一对多映射
- Java中 equals() 和 ==的区别
- js个人笔记