GetDlgItem返回NULL的原因
阿新 • • 發佈:2019-01-08
今天要移植一個程式到WINDOWS上面,用的是MFC。
其實就是給Dialog上面加按鈕,新增新功能。
我直接給Dialog新增按鈕但是在OnInitDialog裡面
CWnd* p1 = GetDlgItem(IDC_BTN_XXX);的時候,返回NULL,我不解,
又換了個之前已經存在的ID,還是返回NULL。為什麼呢?我有辦法。
Baidu, google.
有的Blog說什麼只兩個工程的按鈕ID相同的問題,我改了,發現還是為NULL。
Microsoft說是MFC的一個BUG,需要修改.rc檔案。
我都試過了,還是錯誤。
不得已,我使用終極攻略,也就是大絕招,將另一個工程相同的程式碼移植過來(在另一個工程裡面是OK的),還是返回NULL。
為什麼???我頭太了,暈了。。。。。
當時簡直五雷轟頂,不知所措。。。。。。一身冷汗。。
忽然靈光一現,資原始檔的問題。。
因為這個工程編譯語言是英文,但是之前從svn上面check下來的是帶有語言包DLL的,
因此工程會用語言包的DLL,代替工程裡面的資原始檔。當然你新新增到BUTTON返回NULL,而老的BUTTON返回指標來。
然後我資源DLL刪除後,OK,驗證了我的結論,哈哈。。。
這個小問題折騰了我2個小時,,,,。。鄙視一下。。~~~