一演示程序,有一個(gè)編輯框,我在里面輸入ASCII文本"0123456789a",另外我點(diǎn)擊另外一個(gè)按鈕,更新(UpdateData),然后顯示一個(gè)消息框MessageBox。
用spy++查看編輯框的窗口消息,發(fā)現(xiàn)有WM_GETTEXT消息,MSDN解釋W(xué)PARAM存放的是字符長度,LPARAM存放緩沖區(qū)地址。spy++解析也的卻能夠顯示剛才的ASCII文本。
然后我用Softice對該編輯窗口用bmsg 100100(當(dāng)時(shí)的窗口句柄) WM_GETTEXT下斷,然后G,點(diǎn)擊按鈕,成功命中斷點(diǎn)。用dd命令查看lparam的內(nèi)存是.123456789a,我就奇怪了,為什么第一個(gè)字符是0x00?試了幾次都是這樣,softice安裝沒有任何問題。
我就郁悶了,換成其他字符還是一樣,第一個(gè)字符總是0x00,真是弄不明白。