天天看點

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

在對OpenCasCade7.5.0中的MFC的sample進行修改的過程中,會需要添加對話框以實作一些新的互動功能。這裡介紹如何在OpenCasCade7.5.0中的MFC的samples中添加對話框(彈窗)。

1、建立對話框

找到需要添加對話框的解決方案中的.rc檔案。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

選擇添加資源,建立一個Dialog。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

将對話框設計成自己想要的樣子。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

2、為設計好的對話框建立類,解決自動添加時的一些報錯

右鍵對話框,選擇添加類。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

基類選擇CDialog,類名自己設。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

自動添加後發現會有一些錯誤:

1、無法打開源檔案“pch.h”。

解決方法:直接删除“pch.h”檔案。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

2、出現一些不允許繼承,這是由于找不到基類CDialog。

解決方法:添加#include <afxwin.h>

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

3、修改完1和2後,還會有一個錯誤,未定義辨別符。即沒有找到我們設計的對話框在系統中的編号。

解決方法:找到解決方案中的“resource.h”檔案,打開後,發現可以找到我們想要的“IDD_DIALOG1”。之後,找到“resource.h”的屬性,複制其中的相對路徑,添加到“CTestDialog.cpp”中。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

4、修改完1、2、3後,暫時找不到錯誤,嘗試進行編譯,會出現報錯。

解決方法:按照提示,添加"stdafx.h"。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

5、繼續嘗試編譯,仍然失敗,提示無法打開“OCC_Resource.h”。出現該問題的原因暫時不知。

解決方法:輕按兩下找到出錯位置,删去一個“…\”。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

再次嘗試,編譯通過。

3、使用我們設計的對話框,使其可以通過現有的MFC案例中的按鈕觸發并彈出。

找到我們想要彈出對話框的按鈕事件的“.cpp”檔案,加入我們的對話框類的頭檔案“CTestDialog.h”。這時會報錯:無法打開源檔案,即找不到這個檔案。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

有兩個解決方法,首先找到“CTestDialog.h”的屬性,找到其完整路徑:

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

解決方法1(不推薦):将“CTestDialog.h”的完整路徑放入。注意更改“\”為“/”。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

解決方法2(推薦):将“CTestDialog.h”所在檔案夾,放入到解決方案的包含目錄中。這樣下次再生成别的對話框時,也不會出現同樣的問題。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

在我們想要彈出對話框的按鈕事件中,加入如下兩行代碼。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

運作後點選相應按鈕,自動彈出我們設計好的對話框。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

4、為我們設計的對話框,增加按鈕事件和按鈕變量。

輕按兩下對話框中的按鈕,自動建立按鈕事件,這時會報錯,提示未定義辨別符“IDC_BUTTON1”,這是因為找不到自動建立的按鈕所在的資源檔案“OCC_Resource.h”。

解決方案:搜尋IDC_BUTTON1,找到“OCC_Resource.h”的所在位置,添加到“CTestDialog.cpp”中。

OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)
OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)

之後,就可以自由添加按鈕變量和事件了。

5、總結

在修改OpenCasCade7.5.0中的MFC的samples,添加對話框(彈窗)的過程中,遇到了許許多多的問題。總結起來最主要的就是OpenCasCade自帶的案例中存在許多的資源檔案,有些還是同名的,是以有時候感覺明明有這個檔案,卻提示沒找到。這種情況多數是因為資源檔案找錯了,可以通過搜尋或者是檔案屬性或者是看其它例子裡類似檔案的位置來找到正确的資源檔案,放入對應的位置,解決這些問題。