duilibが来るが、MFC duilibデモで使用されるが、唯一のMFCのウィンドウとウィンドウduilib状況を重なりません。あなたはMFCのウィンドウ内のコントロールをduilib埋め込みたいかduilibコントロールにMFCコントロールを埋め込む場合は、何のデモはないだろう実際には、見ることができ、ActiveXUIのコントロールの下で見て、Alberlスタートを行う方法がわからない、これは組み合わせHWNDですが、接触すぐに、その時々最後にActiveXUIを理解することはできませんduilibは、Win32のHWNDは、塗装方法ですので、鉛筆グループをありがとう、偉大な神がトロイを案内するグループを求めていた:
あなたがアップロードコードを解決した後の時間を、まだ見ユーザーが存在します知らないので、昨夜AlberlはMFCとでduilib書き込みに必要なチュートリアル、もちろん、すでにAlberl計画などでは、このチュートリアルので、私たちは妥協や友人は、チュートリアル上半分しか完成書かれたので、この小さなパートナーは、追加の要件がある場合Alberl計画の中に、Alberlは〜O(∩_∩)O〜小さなパートナーの要件を満たすようにしようとする場合にも、ああもちろんのこと、サプリメントのコースを行く
、MFCでduilib使う
だけで、親ウィンドウMFC千万人とCDuiFrameWndフロントウインドウチュートリアル必要、
CDuiFrameWnd m_duiFrameます。MFCでのMFCのメンバ変数として定義され 次のようにウィンドウ内duilib初期化関数を作成するのOnInitDialog、コードは次のとおりです。
- // TODO:この余分な初期化コードを追加します
- CPaintManagerUI ::でsetInstance(AfxGetInstanceHandle()); //指定されたインスタンスduilib
- CPaintManagerUI :: SetResourcePath(CPaintManagerUI :: GetInstancePath()); // duilib指定されたリソースのパスはここで指定し、同じディレクトリをexeファイルされます
- ::のCoInitialize(NULL); // CoUninitializeの::リリースを(覚えています)。
- m_duiFrame.Create(*これ、_T( "DUIWnd")、UI_WNDSTYLE_CHILD、0、0、0、800、600);
- m_duiFrame.ShowWindow(TRUE)。
- TRUEを返し、そうでない場合はTRUEを返していない限り、//コントロールにフォーカスを設定
ここでは、ちょうどあなたがコントロールMFCにduilib埋め込みたい場合は、MFCのメインウィンドウにduilibを埋め込み、そして唯一のHWNDが詳細に入る、ライン上にない扱うので、それは、非常に簡単ですしている-
しかし、あなたは、次の質問を見つけることができます:
1、ActiveXUIそのバグの前になくなります。
2は、すべてのMFCコントロールは、ここで、duilib上のウィンドウに表示され、ZORD順序は関係を持っている必要があります。
図3は、OKボタン点以上duilibウィンドウ内のボタンは、上記の一部が反応を持っているだけでなくduilibクリックすると、キャンセル、応答しませんでした。
一時的研究Alberlインターフェイスので、インシデント対応の側面を研究するためではないので、詳細は検討していません。あなたが緊急に小さなパートナーを持っている場合は、あなたがに応えることができるように、そして、MFCコントロールは、duilib制御、または非duilibエリアでのMFCコントロールに埋め込むことができます。
第二、MFC制御duilibで使用
スライダーバーduilibの制御位置に本明細書MFC例ボタン:
次のようにMFCの制御コードduilib制御を受信する準備ができて1は、です。
- //コントロールのHWNDは、トップCControlUIにショーを取ります
- クラスCWndUI:公共CControlUI
- {
- パブリック:
- CWndUI():m_hWndを(NULL){}
- 仮想ボイドSetInternVisible(ブール値bVisible =真)
- {
- __super :: SetInternVisible(bVisible)。
- ::のShowWindow(m_hWndを、bVisible)。
- }
- 仮想空SetPos(RECT rcの)
- {
- __super :: SetPos(RC);
- :: SetWindowPos(m_hWndを、NULL、rc.left、rc.top、rc.right - rc.left、rc.bottom - rc.top、SWP_NOZORDER | SWP_NOACTIVATE)。
- }
- BOOLアタッチ(HWND hWndNew)
- {
- もし(!:: IsWindow(hWndNew))
- {
- FALSEを返します。
- }
- m_hWndを= hWndNew。
- TRUEを返します。
- }
- HWNDデタッチ()
- {
- HWND hWndを= m_hWndを。
- m_hWndを= NULL;
- hWndを返します。
- }
- 保護されました:
- HWND m_hWndを;
- }。
次のように2、XMLスライダーWND、及び位置情報のみを残すにノードは、XMLです。
3. WNDコントロールを作成します。スライダーはduilib組み込みコントロールをされているので、そうduilib自動的にXMLメッセージに基づいて、Sliderコントロールを作成し、カスタム見つけduilib場合だけ(のCreateControl関数に対応する必要があり、独自に作成する必要があるのでCWndUIは、私たちのカスタムコントロールでありますコントロールは、自動的に以下の機能を追加しCDuiFrameWndに、)コントロールを得るために、この関数を呼び出します。
- 仮想CControlUI *のCreateControl(LPCTSTR pstrClassName)
- {
- (_tcsicmp(pstrClassName、_T( "WND"))== 0)の場合
- {
- CWndUI *チキン=新しいCWndUI。
- HWNDのhWnd =のcreateWindow(_T( "ボタン")、_T( "のWin32")、WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON、0、0、0、0、m_PaintManager.GetPaintWindow()、NULL、NULL、NULL);
- pUI->アタッチ(hWndを);
- MFCを使用してこのボタンの下////上記使用されるWin32のボタン
- // CButton * pBtn =新しいCButton; //は、メモリリコールを解放
- // pBtn->作成(_T( "MFC")、WS_VISIBLEを| WS_CHILD | BS_PUSHBUTTON、CRect(0、0、0、0)、CWndの:: FromHandle(m_PaintManager.GetPaintWindow())、0);
- // pUI->(* pBtn)を取り付け、
- 鶏肉を返します。
- }
- NULLを返します。
- }
コメントセクションは、MFCボタンでのWin32ボタン、と上記のコードは、両親がダウン効果の両方を試すことができます。
今まで、私たちはduilibにMFCコントロールを追加するか、あなたはまた、オリジナルのMFCプロジェクトのコントロールをduilib追加することができますコントロールは、その前に使用することはできません心配する必要はありません〜O(∩_∩)O〜