MFC不同工程(解決方案)之間對話框資源的複製與重用方法

項目是一個基於MFC的VS2013工程A,主要實現一個通過GPRS網絡接收一個傳感器系統採集的數據並存儲的功能。最近需要添加一個帶有溫度計、羅盤等控件的對話框,但由於原程序已經比較完善,而新控件以前並未使用過,怕直接添加會出現莫名的問題,因此先創建一個新工程B,將界面設計好,控件成功運行,然後將工程B的界面與類文件移植到工程A中使用即可。

實際上是MFC工程中rc資源文件的重用與resource.h文件的修改,經多方嘗試發現一個較爲簡單的方法:

步驟:

  1. 工程B的UI設計完成後,先確保所有控件ID與工程A中的控件ID不重名
  2. 直接在原工程A的解決方案管理器中,右鍵–>添加–>現有項,將工程B添加至工程A中
  3. 在資源視圖中,直接右擊工程B的新對話框資源IDD_METER_DIALOG,複製,然後選中工程A,右鍵粘貼即可
  4. 切換到解決方案管理器,打開resource.h文件,發現新加入的對話框資源ID以及控件ID已經自動添加進來,但是ID號可能會有重複,需要手動重新設置新加入的控件ID號,設置完成注意修改resource.h文件底部#ifdef APSTUDIO_INVOKED 下面的幾個數字,以便增加新控件時VS能夠自動正確生成新ID號
  5. 將工程B中對話框類文件MeterDlg.h和MeterDlg.cpp複製到工程A中,並添加至解決方案管理器中
  6. 將工程B從工程A中移除
  7. 測試新對話框IDD_METER_DIALOG,只要在工程A中,
    (CMeterDlg*)m_pVMdlg = new CMeterDlg;
    if (m_pVMdlg->Create(IDD_METER_DIALOG) == NULL)
    {
    AfxMessageBox(_T("Meter對話框創建失敗!"));
    return;
    }
    m_pVMdlg->ShowWindow(TRUE);

    即可

新對話框創建出現失敗,則在MeterDlg.h的類定義頭部加入DECLARE_DYNAMIC(CMeterDlg),在MeterDlg.cpp文件前部加入IMPLEMENT_DYNAMIC(CMeterDlg, CDialogEx)即可

參考資料:
MFC中對話框資源的複製
資源文件 (C++)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章