resource.h中的值是如何分配的

 
存在分配相同ID的可能。詳情見下:

ID的分配是通過頭文件控制的。
你看你的resource.h的最後幾行(註釋是我加的,源文件裏沒有):
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        2000  // 下一個資源的ID,比如字符串資源,位圖資源等
#define _APS_NEXT_COMMAND_VALUE         40001 // 下一個command的ID,這個一般是作爲WM_COMMAND消息的參數用的。
#define _APS_NEXT_CONTROL_VALUE         1001  // 下一個控件的ID
#define _APS_NEXT_SYMED_VALUE           101 // 下一個符號的ID
#endif
比如,如果這個時候你用VC的對話框插入一個字符串,那麼這個字符串的ID就會自動被分配成2000,同時_APS_NEXT_RESOURCE_VALUE會被改成2001。其他幾個值也是以類似方式工作的。

所以其實VC自動分配的ID號,跟你自己定義的是有可能重複的。你必須自己保證沒有重複,而不是依賴於VC幫你檢查。一個辦法是,比如你要新加一個控件,你可以用_APS_NEXT_CONTROL_VALUE的值作爲這個控件的ID,然後自己手動把_APS_NEXT_CONTROL_VALUE的值加1,這樣就能保持跟VC的ID分配機制一致。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章