2014-04-09 62 views
0

我必須在MFC應用程序中顯示/啓用一堆對話框項目。它們都有名稱,如IDC_EDIT_CHANNEL1_x,其中x是從0到15的整數值。資源文件中的ID沒有排序,所以我想通過該字符串獲取項目。通過字符串獲得對話框項目的可能性

是否有可能從字符串"IDC_EDIT_CHANNEL1_1"獲取名爲IDC_EDIT_CHANNEL1_1的resourceId?

大家都知道GetDlgItem()只能用於int值。

回答

1

您看不到的問題是預處理器在編譯時用整數替換IDC_EDIT_CHANNEL1_x。這是一個宏,而不是一個字符串。

所以你的應用程序永遠不會「看到」一個字符串。在源代碼到達編譯器之前,該字符串已被預處理器替代。

我的建議是使用連續的ID。我不知道爲什麼你不想這樣做,但它可能是解決你的問題最快最簡單的方法。

另一種方法是根本不使用宏。資源編輯器可以使用字符串,並且如果預處理器不用int替換它們,那將會使用什麼。你可以通過字符串過濾它們。

+0

您也可以創建一個Array,並通過DDX_Control將其元素綁定到您的控件,然後通過索引訪問,即使這不是最好的方法。 – IssamTP

相關問題