我最近將一個visual studio 6.0項目轉換爲visual studio 2010,並且在某些項目上調用GetDlgItem時遇到問題。以下代碼失敗。GetDlgItem()在vC++ 2010中返回null
CWnd *pWnd = (CWnd*) GetDlgItem(IDC_BATCH);
pWnd->GetWindowText(szBatchNum);
我看到這個代碼在我的資源文件中調用上面的代碼的窗體。
IDD_CC_PROCESS DIALOGEX 0, 0, 657, 410
STYLE DS_SETFONT | WS_CHILD
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
CONTROL "",IDC_BATCH,"{978C9E23-D4B0-11CE-BF2D-00AA003F40D0}",0x0,85,18,89,16
END
調用GetDlgItem()之後pWnd爲NULL。這在6.0版本的項目中不是問題。 IDC_BATCH似乎是此表單上的有效資源。 IDC_BATCH指向「Microsoft Forms 2.0標籤」。這似乎是我在將項目從6.0轉換爲2010時遇到的許多問題中的一個。
檢查您的資源文件。如果它返回NULL,那麼沒有該ID的子項dlg項... – Goz 2010-09-21 16:17:17
我在我的資源文件中添加了我在上面看到的內容。 – 2010-09-21 17:20:13
如果你在調用GetDlgItem的時候斷點並用Spy ++搜索窗口,你會發現它嗎?我猜你不會。 – 2010-09-21 17:27:28