遇到了這樣的問題,利用VS2005寫MFC的時候,向導在我想添加消息和事件的處理時,一個勁的彈出“無法執行添加/移除操作,因為代碼元素XXX是只讀的”,在經過一輪檢查後,確認所有相關的文件都是可寫的之後,問題依然。
嘗試了如下方法:
1. 刪除.ncb文件——問題照舊。
2. 刪除項目對相關文件的引入,然後重新引入文件——第一次好用了。但再次遇到這個問題的時候(另一個類),就不好用了。原因不明。
3. 關閉打開的.cpp和.h文件——某些時候好用。
4. 關閉VS2005,再重新打開項目——有些時候好用。
同一個類中,只要一類處理(消息/事件)好用一次,就沒有限制,短時間內再次添加就沒有問題了。但必須是向導好用一次,手動添加進去也無效。好用之後,過一段時間也可能遇到相同問題。
十分搞笑的Bug,看來微軟是真的不想再做MFC了(私人為托管C++也不怎麼樣)。
2. 另外發現了個有趣的設定,在資源裡打開對話框時,再打開.h文件(一定要先打開資源)的屬性就是類和方法的那幾項屬性,但關閉對話框資源的話,.h文件的屬性就是整個對話框的屬性了,包括了事件,消息和重寫。尤其是重寫這項,好像只有這種情況會出現。感覺有些莫名其妙。
3. 在利用向導對類添加方法或屬性時,曾看到過說無論設置成public還是private或者protected都會加成public的。這個我倒沒遇到,可能是SP1裡修正了。
但我卻遇到了更搞笑的。我有一個類T_T0,在增加一個方法後,頭文件寫入了這個方法的聲明,但卻增加了一個新文件t_t0.cpp(原來的是T_T0.cpp)結果新加的方法寫到它自己新加的文件裡去了。搞不懂,頭文件都找到了,cpp文件是怎麼搞錯的呢?