2012-09-18 85 views
0

我努力做到以下幾點:問題與函數GetDlgItem

CComboBox *pComboBox; 
CString newString; 
int iNewSelection = -1; 

pComboBox = (CComboBox*)(this->GetDlgItem(IDC_METHOD)); 

NewMethod = pComboBox->GetCurSel(); 

if(NewMethod != CB_ERR) 
{ 
    pComboBox->GetLBText(NewMethod, newString); 
} 

在上面NewMethod是一個整數。

它工作正常(種)。問題如下:

當我通過上面的代碼進行調試時,停在IF條件並將鼠標光標放在NewMethod上,我得到一些隨機值,但它確實經歷了IF條件,我可以看到正確的在newString中的值。

我的問題是:爲什麼我在NewMethod中看不到正確的整數值?

非常感謝。

問候

Chintan

+0

什麼是'NewMethod'? –

+0

NewMethod被定義爲一個整數。 –

+1

您是在開啓優化的情況下調試發佈版本還是調試版本?調試優化代碼時會得到這些效果。 – Ferruccio

回答

0

它看起來像你的源代碼和二進制是不同步的,即。您正在調試使用不同版本的源代碼編譯的DLL/EXE。

在調試過程中,激活Debug-> Windows-> Modules窗口並檢查您正在調試的DLL/EXE是否與您使用源代碼編譯的DLL/EXE相同(檢查日期/時間,符號文件等等。)。

+0

我做了上面的測試,看起來他們是同步的。我的項目設置如下:主項目分爲兩部分。一個是GUI,另一個是處理信號,這是一個DLL。我粘貼的代碼是在GUI項目中。問題在於它是有效的,因爲我可以看到'newString'中的值是''「',在'if'條件後,它從下拉列表中獲得當前選擇。只是它並沒有在'NewMethod'中給我顯示正確的inetger :( –

+0

(對不起,看起來似乎很愚蠢的問題,但是...)只需檢查一下,項目的調試設置就像'(TargetPath)命令「,而不是其他的EXE?另外,它的編譯沒有任何錯誤? – snowdude

+0

是的,它是爲'命令'指定的,它編譯得很好,沒有任何警告(s) –