2011-09-16 50 views
2

我們的代碼庫中有許多MFC擴展dll,其中許多嵌入了在項目.rc文件(IDS _...,IDD_ ...,IDB _...等)。我們使用數字標識符來定義我們的資源,特別注意我們的資源id不會在dll之間發生衝突,這需要一些管理員來確保我們的開發人員不使用相同的編號。在Windows中使用字符串類型資源標識符.rc文件/ dll

我已經意識到字符串類型的資源標識符可能是一個簡單的路要走,這意味着我們可以定義唯一標識符爲每個不同的dll每個資源。

我的問題是,是否有與這個產品的技術問題,例如:

  • 請問MFC DLL /資源鏈仍正常運行?
  • Visual Studio資源編輯器仍然工作嗎?

我還沒有在MS技術說明中發現任何內容,說這將是一個問題 - 我只是想知道,如果人們有這方面的經驗。

+0

我在寫這個問題時忘記了一件事 - 對話資源ID值(IDD _...)必須是整數標識符,以確保HtmlHelp(...)API與HH_HELP_CONTEXT命令正常運行(請參閱http:///msdn.microsoft.com/en-us/library/ms670088(v=VS.85).aspx) –

+0

你有什麼經驗可以分享這個問題嗎?我們現在正在處理同樣的問題。 – Mikhail

回答

3

但請注意,字符串表(IDS_)中的字符串ID必須是數字(16位IIRC)。字符串和另一個資源之間的區別是由於字符串不是單獨的資源。實際上,字符串表包含一組資源,每個資源最多包含16個具有連續ID的字符串。

對話框中的Control ID也一樣。但你很可能知道這一點。

在資源編輯器中,您可以通過簡單地在資源名稱周圍加引號來指定屬性網格中的字符串資源ID。

關於對話框和資源編輯器:您將遇到一個小問題:無論何時爲對話框創建類,生成的代碼都包含枚舉{IDD = resourceid}。不用說,它不適用於字符串ID。但是你可以很容易地擺脫這個IDD枚舉並將其替換爲一個字符串。

+0

感謝您的意見,尤其是關於字符串表資源的意見。 –