2010年6月10日 星期四

(MFC) SetTimer & KillTimer 的用法

或許大家會想問..
SetTimer是什麼東東?
什麼時後會需要用到SetTimer呢?

嘿~ 我來回答

SetTimer 是一個程式定時器.....
所以當我們需要每隔一段時間執行一件事的時後
就可以用到它囉~

我舉個例好了...
像是做時鐘的功能必須每隔多久就要更新一次時間
這時後就可以用SetTimer來設定多久更新的動作了~

來看一下SetTimer的原型
UINT SetTimer(
HWND hWnd,
UINT nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);
當使用SetTimer函數的時候,就會生成一個計時器。

函數中nIDEvent指的是計時器的標識,也就是名字。

nElapse指的是時間間隔,也就是每隔多長時間觸發一次事件。

第四個參數是一個回調函數,在這個函數裏,放入你想要做的事情的代碼,

你可以將它設定為NULL,也就是使用系統默認的回調函數,系統默認認的是onTime函數。

這個函數怎麼生成的呢?

你需要在需要計時器的類的生成onTime函數:
在ClassWizard裏,選擇需要計時器的類,添加WM_TIME消息映射,就自動生成onTime函數了。
然後在函數裏添加代碼,讓代碼實現功能。每隔一段時間就會自動執行一次。

例: SetTimer(m_hWnd(指定容器), 1(名稱), 1000(毫秒), NULL(NULL就是到onTime))

如果要增設兩個以上的Timer,那當然就是多用SetTimer

只要名稱取不一樣就可以

接著在onTime裡可以用switch...case的方法來分辨要執行哪一個SetTimer

不需要的時後就要用KillTimer(nIDEvent)


下方的連結有更詳細的SetTimer和KillTimer的用法
http://wenku.baidu.com/view/b52f38b91a37f111f1855b46.html

2010年6月9日 星期三

(MFC) 新增元件function 遇到的問題

我用VS的MFC拉介面弄到一半, Button要加新事件的時候, 系統就冒出這段話

"Add/Remove operation is impossible, because the code element 'XXX' is read only"

我試過把button刪除再重新新增一個

也還是無法替Button 加新事件

最後上網google一下 果然還蠻多人發生類似的事

原因是資料夾的唯讀選項被啟用了

後來我試著把資料夾內容-> 唯讀的功能取消

再開啟project ,但情況還是一樣沒改善

事件還是無法新增

最後在網上找到了二個解決的方法


方法一

1. 把project 資料夾裡的.ncb檔刪除掉

2. 再重新編譯project

3. 創Button 新事件


方法二

從執行->cmd->到project的資料夾-> 打入 attrib -h -r /S

-是關閉選項, h是隱藏檔案屬性, r是唯讀檔案屬性,
/S是處理目前及所有子資料夾

就成功改變資料夾屬性囉~


我只用到方法一就成功了

所以方法二我就沒試了....

我想應該也是有用的吧 ^^