2015-09-29 40 views
0

讓我先說我不想在兩個項目上有一個資源文件的副本(我已經看到了關於這個問題的一個問題)。如何在不同的VS 2013項目中使用新的VS 2013項目的對話框(資源文件)?

使用Windows 7,MS VS 2013,C++,MFC。

我將引用的這兩個項目是同一解決方案的一部分。

我有一個對話框,該對話框已在rc/h/cpp文件中創建,可以在一個項目中工作(項目A)。我希望能夠從單獨項目中的例程(項目B)中打開該對話框。項目B有一個GUI按鈕,當點擊時,我希望提出項目A的對話框。

我已經包括在的屬性項目A的參考項目B

我已經包括(#包括)在項目B(這需要的護理rc文件項目A rc文件路徑資源文件和資源文件的定義編號不重疊)。

我已經包含了路徑(從項目A)到控制項目B中對話框的類(在包含事件處理程序的文件中調出對話框)。

我的設置沒有錯誤,它只是沒有做任何事情。我創建對話框,並嘗試一個DoModal就像我在項目A中的任何地方(它的工作原理),沒有任何反應,我可以多次點擊按鈕,它永遠不會帶來任何東西。

我無法提供這方面的任何代碼,但我希望有足夠的信息給我一些線索。現在我迷路了。謝謝。

防爆常規:

#include "DialogIWant.h" 

... 

void OnPushButtonOnProjectB() 
{ 
    CDialogIWant dialog; // CPP/H/RC in the other project A 
    dialog.DoModal(); // Nothing comes up 
} 
+0

項目A和項目B不會自動鏈接到對方。我不確定我是否遵循,但是您描述項目B的方式甚至不應該成功構建。如果在同一個解決方案中有多個項目,則右鍵單擊項目B,在彈出菜單中單擊「*設置爲啓動項目*」。在'dialog.DoModal()'上放置一個斷點並使用調試器運行。 –

+0

是的項目B是啓動項目,我忽略了這一點。問題是我創建它時對話框本身是空的,我不認爲DoModal部分真的是問題。我不認爲我甚至可以創建CDialogIWant類的任何實例,即使它是通過#include引用的。我基本上想知道是否可以在不同的項目中使用一個項目中的單個對話框,如果可以的話,我該怎麼做。謝謝。 – Clay

+0

資源實際包含在項目B二進制文件中,還是隻包含在項目A中?如果找不到資源,它將無法加載對話框。您也可以嘗試在DoModal調用之後放置一個斷點,以查看返回值是什麼。 -1表示無法創建對話框,IDABORT將在輸出窗口中顯示來自GetLastError的錯誤信息。 – 1201ProgramAlarm

回答

0

資源文件能夠使用#inclde同其他任何C++文件。將對話框資源放在單獨的文件中,並將其包含在兩個項目的.rc文件中。

您還需要共享資源ID定義,通常在resource.h

相關問題