※ 引述《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■■■
--