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