2011-07-12 66 views
0

我最近將一個VC++項目從2005年升級到2010年,除了資源之外,一切正常。我有一個2頁的標籤控件,所有的對話框在同一個資源文件中,TabControl被找到並顯示,但所有頁面都無法加載(公共_AfxCheckDialogTemplate()錯誤)。TabControl不能與VS2010一起工作

這很奇怪,因爲所有的對話框都在同一個文件中。我已經將AfxSetResourceHandle()設置爲正確的值。

我已經做了幾個測試,結果如下: - 使用DoModal直接加載屬性頁面:在第一個控件上的DDX_Text()失敗。 - 使用DoModal加載新創建的PPage:好的! - 在TabControl中加載相同的PPage:在AfxSetResourceHandle()上失敗 - 在TabControl中加載新的PPage:也失敗。

如前所述,該項目是從VS2005簡單遷移,它很好地工作。 我也把我的主機從XP 32改成了Seven 64bits,但我猜想這個pb更有可能與VS中的資源處理方式有關。我記得已經有很多問題了,特別是如果你在include中使用公共資源。

想知道現在該做什麼? VS2010中的TabControls有問題嗎?我搜索了很多,但到目前爲止還沒有發現任何有趣的內容。 是否有另一種方式從VS2005項目遷移資源?重新創建所有資源將會很長。 我應該簡單回覆到VS2005嗎?

感謝您的任何提示,

阿蘭

回答

0

也許遷移到64位導致您的屬性頁上的一個或多個控制,以「失敗創建」。通常這應該由CPropertySheet :: Create()通過返回FALSE來報告。如果您遇到WM_INITDIALOG處理程序(在使用DoModal()顯示頁面時發生),則DDX_Control函數將失敗,這意味着無法創建第一個控件,這是一個嚴重的錯誤。在MSDN中查找有關InitCommonControlsEx()的討論,並查看您的應用程序調用它是否正確。

+0

感謝您的提示。 –

+0

它在我的項目中不見了,但在更正之後,錯誤是一樣的。但我測試了另一個項目非常相似,相同的資源結構,運行良好...所以我想我只需要重新創建項目並導入資源......謝謝! –

+0

可憐的你,你應該修改對話框,使其具有'無失敗創建'風格。走着瞧吧。繞過te CDialog :: OnInitDialog()內容(註釋掉)。你可以看到哪些控件無法創建。成功! –

0

Pb最終糾正:創建一個新的.rc文件並通過拖放操作逐個拷貝所有資源。 似乎是從2005年到2010年的遷移失敗(首先嚐試甚至不可能在編輯器中打開資源!)。 這是一個非常古老的項目,首先從VC6遷移幷包含包含的資源文件。也許VS不是很擅長處理這個... 謝謝