程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++ cli-尋求大神指點,如何將MFC對話框作為.net 中 winForm的父窗體

c++ cli-尋求大神指點,如何將MFC對話框作為.net 中 winForm的父窗體

編輯:編程綜合問答
尋求大神指點,如何將MFC對話框作為.net 中 winForm的父窗體

問題是這樣的:
在建立的MFC對話框工程中,使用.NET與MFC互操作,在一個MFC的對話框CMFC_C_CLIDemoDlg 中顯示一個.net的form窗體frm,由於需要顯示成非模態對話框樣式的Form,所以使用了frm->Show();的方法。
但是這樣創建的窗體frm在失去焦點後,窗體就消失了(不顯示在對話框的上層),經過測試發現,是因為在frm->Show()顯示窗體時,沒有指定對話框為它的父窗體。但是這裡如何將MFC的CDailog類型的對話框CMFC_C_CLIDemoDlg 指定為Form類型的窗體frm的父窗體呢?
如果不能指定,還有什麼辦法使frm失去焦點後,仍然顯示在對話框的上層?

代碼如下:

// CMFC_C_CLIDemoDlg 對話框
class CMFC__C_CLIDemoDlg : public CDialog
{
// 構造
public:
CMFC__C_CLIDemoDlg(CWnd* pParent = NULL); // 標准構造函數

// 對話框數據
enum { IDD = IDD_MFC__C_CLIDEMO_DIALOG };

    ```
    ```

};

namespace MFC__C_CLIDemo
{
public ref class WinForm : public System::Windows::Forms::Form
{
public:
WinForm(void)
{
InitializeComponent();
//
//TODO: 在此處添加構造函數代碼
//
}


}

//在MFC對話框中顯示form窗體
void CMFC__C_CLIDemoDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知處理程序代碼
WinForm ^frm=gcnew WinForm;
//frm->ShowDialog();
frm->Show();
}

最佳回答:


一般API是用的SetParent函數,但是MFC和.net不是一個體系,只怕內部交融肯定不行,至少焦點是個問題

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved