孫鑫的vc教學(xué)視頻廣為流傳,不失為一個(gè)好的vc教學(xué)視頻。
其18講中有個(gè)問(wèn)題,多次被人問(wèn)到,索性發(fā)了上來(lái)。
18課用到的activex控件用debug 版本生成的控件,在vc中插入這個(gè)控件,
調(diào)整interval屬性的時(shí)候,會(huì)出錯(cuò)。
只要是debug版本在 VC下就會(huì)出錯(cuò)。release版本不會(huì)?
為什么?
原因是因?yàn)楫?dāng)將 Clock控件放到VB 的Form上時(shí),該控件的窗體已經(jīng)創(chuàng)建,也就是說(shuō), CClockCtrl類的 OnCreate()方法被執(zhí)行了,這樣就設(shè)置了定時(shí)器,而在VC 的對(duì)話框上插入Clock 控件時(shí),卻沒(méi)有調(diào)用 CClockCtrl類的 OnCreate()方法, 而在修改 Interval 屬性時(shí),會(huì)調(diào)用 CClockCtrl 類的 OnIntervalChanged() 方法,在這個(gè)方法中,調(diào)用了 KillTimer(1) ,因?yàn)槎〞r(shí)器根本就沒(méi)有創(chuàng)建,因此就出現(xiàn)了非法操作。這可能是因?yàn)閷?duì)話框并不是真正的容器組件。解決辦法,用一個(gè)變量保存定時(shí)器的返回值,然后在 OnIntervalChanged() 方法中對(duì)返回值進(jìn)行判斷。