方法一:
1.1 繼承IDialogBuilderCallback類,重寫CreateControl函數。
1.2 在使用該控件的類中繼承OnCreate函數,代碼如下:
CDialogBuilder builder;
CDialogBuilderCallbackEx cb;
CControlUI* pRoot = builder.Create(_T("LoginMainWnd.xml"), (UINT)0, &cb, &m_pm);
執行個體:在視窗MainWnd中自定義一個控件miFileName(該控件使用xml的形式定義),在控件miFileName裡面定義一個CaoGifAnim控件。
如圖:1、MainWnd中定義miFileName
2、miFileName控件中定義CaoGifAnim
3、mainWnd的CreateControl函數
4、miFileName控件的DoInit函數(關鍵是添加callback)
方法二:
2.1 在使用該控件的類中重寫CreateControl函數。
2.2 使用WindowImplBase類實作的建立視窗的方法。也就是不重寫OnCreate。
方法三:使用REGIST_DUICONTROL注冊(在DuiLib_Ultimate中封裝)。
未完待續...
在自定義控件中繼承實作
LPCTSTR GetClass() const;
LPVOID GetInterface(LPCTSTR pstrName);
在視窗中繼承實作
CControlUI* CreateControl();
說明一下:在自定義控件中添加void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);之後,在InitWindow中使用該控件對于的name找不到(這個問題找了很久的原因,最終發現是添加了SetAttribute導緻的)。