duilib对MFC的支持
来源:互联网 发布:淘宝上的轮毂不能买 编辑:程序博客网 时间:2024/04/29 16:59
关注duilib很久了,前段时间刚好有个MFC项目,对UI要求比较高,苦于duilib是基于win32开发的,而我对win32只有皮毛的了解,只好试着看源代码,发现里面有MFC的一个Demo,但是编译通不过,无奈只好试着看作者的思路,经过几天的摸索,终于成功运用到MFC项目中。先上效果图,再解释:
上代码:
1.编写duilib的CWindowWnd类
class CJCSipFrameWnd : public CWindowWnd, public INotifyUI, public ISipCallback
{
public:
CJCSipFrameWnd() { };
LPCTSTR GetWindowClassName() const { return _T("JCSipFrameWnd"); };
UINT GetClassStyle() const { return CS_DBLCLKS; };
void Init();
bool CheckXml();
void OnPrepare();
void Notify(TNotifyUI& msg);
void LoadSkin();
void InputNumber(CControlUI* pSender);
void SetBalance();
LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnNcActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnNcPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
public:
CPaintManagerUI m_pm;
private:
CLabelUI* m_titleLabel;
CLabelUI* m_callStatusLabel;
CLabelUI* m_accountLabel;
CLabelUI* m_balanceLabel;
CButtonUI* m_pCloseBtn;
CButtonUI* m_pMinBtn;
CButtonUI* m_pUpdateBtn;
//...
CButtonUI* m_pBtn1;
CButtonUI* m_pBtn2;
CButtonUI* m_pBtn3;
CButtonUI* m_pBtn4;
CButtonUI* m_pBtn5;
CButtonUI* m_pBtn6;
CButtonUI* m_pBtn7;
CButtonUI* m_pBtn8;
CButtonUI* m_pBtn9;
CButtonUI* m_pBtnStar;
CButtonUI* m_pBtn0;
CButtonUI* m_pBtnPound;
CButtonUI* m_pBtnDel;
CButtonUI* m_pBtnClear;
CButtonUI* m_pBtnDial;
CButtonUI* m_pBtnHangup;
CButtonUI* m_pBtnGetBalance;
CEditUI* m_pEditNumber;
};
// 注意这里与一般duilib不同的是不用编写OnCreate函数和OnFinalMessage函数
// LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// void OnFinalMessage(HWND /*hWnd*/) { delete this; };
2.准备好MFC项目了,在主对话框的OnInitDialog()中添加下面代码(注意将主对话框的资源文件样式设置成NONE,并删除所有控件):
MoveWindow(0, 0, 500, 260);
::SetWindowLongPtr(this->GetSafeHwnd(), GWLP_USERDATA, reinterpret_cast<LPARAM>(&m_mainWnd));
m_mainWnd.Subclass(this->GetSafeHwnd());
m_mainWnd.LoadSkin();
这样就将duilib的界面嵌入到MFC对话框中了,如果要在duilib中和MFC类中通信,可以将MFC类的指针传过去。
- duilib对MFC的支持
- duilib对MFC的支持
- mfc使用duilib 支持拖动
- MFC对多线程的支持
- DuiLib 与 MFC的结合
- MFC中对COM的支持
- MFC:启用对ActiveX控件的支持
- MFC对COM应用的支持(1)
- ce6.0对mfc的支持
- MFC对多线程编程的支持
- MFC对多线程编程的支持
- MFC对多线程编程的支持
- MFC对多线程编程的支持
- WinCE6添加对MFC的支持
- MFC对多线程编程的支持
- MFC使用duilib的几种方式
- MFC使用duilib的几种方式
- MS C、STL、MFC对Windows Mobile开发的支持
- java入门学习(3)—循环,选择,基础算法,API概念
- java基础之 集合容器
- IOS开发系列——UIView专题之三:自定义绘制篇【整理,部分原创】
- C++设计模式-观察者模式
- Python Flask 开发环境搭建(Windows)
- duilib对MFC的支持
- android值radioGroup实现多行多列单选框--动态加入
- PLSQL Developer的配置方法
- 反射(二)Class类,Method类,Field类,反射获得带参数的对象
- MySQL单表百万数据记录分页性能优化 limit优化
- table中设置tr行间距
- C#调用自定义表类型参数
- Linux中open函数详解
- Swift开发IOS-UIStepper