看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 我負責一段code 要VS2005與VS2010同時都能支援 是要當SDK的Sample code 這段code是一個GUI的介面 當中有發現一個問題 若用VS2005 compile出來是完全沒問題 功能也正常 但如果用VS2010 compile出來時 底層GUI元件送出的SendMessage訊息 上層的Dialog會收不到 不管是左鍵或右鍵的事件都一樣 這份code中除了sln不一樣之外 其它所有東西都一樣 且共用 在compile是沒有錯誤的 而且其他功能都正常 唯獨SendMessage錯誤 用中斷點看時 是下方程式碼的回傳值不同所導致 再用spy++去檢查時 發現好像是GetDlgCtrlID()個API在VS2010失去功能 不知道各位先進有沒有遇過類似狀況 可以幫小弟我解答一下 預期的正確結果(Expected Output): spy++對照圖 http://i.imgur.com/3kV3tf8.png VS2005是正確結果 VS2010是錯誤結果 程式碼(Code):(請善用置底文網頁, 記得排版) CWnd *pWnd = GetParent(); if (pWnd) { return (BOOL) (pWnd->SendMessage(WM_NOTIFY, GetDlgCtrlID(), (LPARAM) lpnmrv)); } 補充說明(Supplement): VS2005 return TRUE VS2010 return FALSE 且在最上層的Dlg會收不到 ON_NOTIFY 的事件 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.253.150 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1415972019.A.792.html