精華區beta Programming 關於我們 聯絡資訊
※ 引述《PCMan.bbs@bbs.sayya.org (PCMan X Project)》之銘言: > ※ 引述《sniffer@kkcity.com.tw》之銘言: > <deleted /> > > 在 windoze 下就是 OS 自己的問題 > > 我 trace 的結果就是因為 event 產生的 window message 的先後不同 > > 光是 window minimize, close 在 2000,xp 就很明顯不同 > > 所以很多程式在舊的 win9x 沒問題, 新的就在 window close access violation 源於此 > > 這就叫亂改規格 > 這是程式自己沒有設計好 > 那些東西本來就不是放在 close 處理 > Windows 本來就沒有保證 event 的先後順序 不照順序的話一堆功能都不用做了, 最多只能說 M$ 規格不清不楚所以隨時會變 mouse, keyboard message 也沒在 api spec 標先後, 如果真的也沒先後就是垃圾了 對一個 event driven 的架構, 如果 event 順序是隨機的, 就不該互相 depend, 不然狀態圖怎麼畫? ex: 先來個 window close 才送其它這個 window 的 message, 那這些 message 要怎辦 一般關一個 window 前都會先做一些動作, 也會產生 message, 結果最後 close message 先到, 這是那門子的設計 再慘一點, 如果 mouse up 比 mouse down 先到, 那 mouse 現在是 up 還是 down > 有順序的會載明 > 例如,destruct 的動作最好在 WM_POSTNCDESTROY 做 > 這在視窗解構時,保證是最後一個 event,文件有載明 > Access violation 還是多半是程式沒有寫好造成 VB 的程式如果在 close 前先 minimize 就可能會如此 (under xp) 所以 VB 沒寫好, M$ 不懂 win32 api? -- ┌─────KKCITY─────┐ KKBOX 可立刻 聽音樂 ■ bbs.kkcity.com.tw ■■所有想找的歌通通不必等 ■■ └──From:59.120.53.7 ──┘ http://www.kkbox.com.tw --