チュートリアル16. Win32とMFCの組み合わせはじめに簡潔なガイドduilib duilib

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、コードは次のとおりです。

  1.     // TODO:この余分な初期化コードを追加します
  2.     CPaintManagerUI ::でsetInstance(AfxGetInstanceHandle()); //指定されたインスタンスduilib
  3.     CPaintManagerUI :: SetResourcePath(CPaintManagerUI :: GetInstancePath()); // duilib指定されたリソースのパスはここで指定し、同じディレクトリをexeファイルされます
  4.     ::のCoInitialize(NULL); // CoUninitializeの::リリースを(覚えています)。
  5.     m_duiFrame.Create(*これ、_T( "DUIWnd")、UI_WNDSTYLE_CHILD、0、0、0、800、600); 
  6.     m_duiFrame.ShowWindow(TRUE)。 
  7.     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は、です。

  1. //コントロールのHWNDは、トップCControlUIにショーを取ります
  2. クラスCWndUI:公共CControlUI
  3. {
  4. パブリック:
  5.     CWndUI():m_hWndを(NULL){}
  6.     仮想ボイドSetInternVisible(ブール値bVisible =真)
  7.     {
  8.         __super :: SetInternVisible(bVisible)。
  9.         ::のShowWindow(m_hWndを、bVisible)。
  10.     }
  11.     仮想空SetPos(RECT rcの)
  12.     {
  13.         __super :: SetPos(RC);
  14.         :: SetWindowPos(m_hWndを、NULL、rc.left、rc.top、rc.right - rc.left、rc.bottom - rc.top、SWP_NOZORDER | SWP_NOACTIVATE)。
  15.     }
  16.     BOOLアタッチ(HWND hWndNew)
  17.     {
  18.         もし(!:: IsWindow(hWndNew))
  19.         {
  20.             FALSEを返します。
  21.         }
  22.         m_hWndを= hWndNew。
  23.         TRUEを返します。
  24.     }
  25.     HWNDデタッチ()
  26.     {
  27.         HWND hWndを= m_hWndを。
  28.         m_hWndを= NULL;
  29.         hWndを返します。
  30.     }
  31. 保護されました:
  32.     HWND m_hWndを;
  33. }。
コードをコピー




    次のように2、XMLスライダーWND、及び位置情報のみを残すにノードは、XMLです。


           

  1.             
コードをコピー




    3. WNDコントロールを作成します。スライダーはduilib組み込みコントロールをされているので、そうduilib自動的にXMLメッセージに基づいて、Sliderコントロールを作成し、カスタム見つけduilib場合だけ(のCreateControl関数に対応する必要があり、独自に作成する必要があるのでCWndUIは、私たちのカスタムコントロールでありますコントロールは、自動的に以下の機能を追加しCDuiFrameWndに、)コントロールを得るために、この関数を呼び出します。


  1. 仮想CControlUI *のCreateControl(LPCTSTR pstrClassName)
  2.     {
  3.         (_tcsicmp(pstrClassName、_T( "WND"))== 0)の場合
  4.         {
  5.             CWndUI *チキン=新しいCWndUI。            
  6.             HWNDのhWnd =のcreateWindow(_T( "ボタン")、_T( "のWin32")、WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON、0、0、0、0、m_PaintManager.GetPaintWindow()、NULL、NULL、NULL);
  7.             pUI->アタッチ(hWndを);  
  8.             MFCを使用してこのボタンの下////上記使用されるWin32のボタン
  9.             // CButton * pBtn =新しいCButton; //は、メモリリコールを解放
  10.             // pBtn->作成(_T( "MFC")、WS_VISIBLEを| WS_CHILD | BS_PUSHBUTTON、CRect(0、0、0、0)、CWndの:: FromHandle(m_PaintManager.GetPaintWindow())、0);
  11.             // pUI->(* pBtn)を取り付け、            
  12.             鶏肉を返します。
  13.         }
  14.         NULLを返します。
  15.     }
コードをコピー





    コメントセクションは、MFCボタンでのWin32ボタン、と上記のコードは、両親がダウン効果の両方を試すことができます。


     
    今まで、私たちはduilibにMFCコントロールを追加するか、あなたはまた、オリジナルのMFCプロジェクトのコントロールをduilib追加することができますコントロールは、その前に使用することはできません心配する必要はありません〜O(∩_∩)O〜

おすすめ

転載: www.cnblogs.com/blogpro/p/11427099.html