青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

VC中加入定時機(jī)制的幾種方法

定時機(jī)制是指在程序運(yùn)行當(dāng)中間隔特定的時間引發(fā)指定的事件。在DOS下編程時,主要依靠時鐘中斷Int 8及其調(diào)用中斷 Int 1cH來實(shí)現(xiàn),應(yīng)用程序通過修改這些系統(tǒng)中斷來達(dá)到實(shí)現(xiàn)定時觸發(fā)。而在Windows下,若想象在DOS下肆無忌憚的修改系統(tǒng)是不現(xiàn)實(shí)的,那么應(yīng)當(dāng)如何實(shí)現(xiàn)定時機(jī)制呢?下面在下就在學(xué)習(xí)當(dāng)中的幾點(diǎn)體會談?wù)勥@個問題,提出幾種方案供大家參考。

第一種方案是大家熟悉的截獲定時消息的途徑。在Windows提供給我們使用的系統(tǒng)資源當(dāng)中,有一種稱為“定時器(Timer)”的特殊資源,在申請了這類資源的程序當(dāng)中每間隔一段時間會接收到值為WM_TIMER的消息。需要定時執(zhí)行的代碼可以放在該消息的處理部分。如果在VC中,我們可以具體按照以下步驟實(shí)現(xiàn)這一目的:

  1. 利用MFC AppWizard創(chuàng)建一個標(biāo)準(zhǔn)的工程,接受所有缺省選項(xiàng)。名為s1

  2. 在Classview中選中“CMainFrame”類,然后按Ctrl+W激活ClassWizard,在“Message Map”選項(xiàng)卡中Class Name選“CMainFrame”,接著在“Message”中選“WM_TIMER”,最后按下“Add Funcation”。以上步驟加入了對WM_TIMER消息的映射處理。

  3. 回到Classview中,雙擊“OnCreate”成員函數(shù),在函數(shù)的末尾添加申請Timer的語句:
    SetTimer(100,1000,NULL);//申請一個標(biāo)識值為100的Timer,定時間隔為1000毫秒(1秒)。

  4. 在“Classview”中雙擊OnTimer函數(shù),輸入要定時實(shí)現(xiàn)的代碼。本例子中為:
    MessageBeep(1000);;//每隔一秒發(fā)出通告聲

  5. 編譯并執(zhí)行之,我們可以每隔一秒就聽到聲音。這正是我們在OnTimer函數(shù)內(nèi)要求執(zhí)行的。

實(shí)際當(dāng)中,我們可以將“MessageBeep(1000);”換成任何我們想完成的任務(wù),譬如定時存盤等。

第二種方案也利用Timer資源,但卻是采用已經(jīng)編寫好的代碼��我們可以加入一個具有定時功能的組件至當(dāng)前工程當(dāng)中。這種方法特別適用于基于對話框的工程。具體步驟如下:

  1. 利用MFC AppWizard創(chuàng)建一個基于對話框的工程,其余接受所有缺省選項(xiàng)。名為s2。

  2. 在ResourceView中,雙擊IDD_S2_DIALOG,顯示對話框,將其中的“To do:”改為“定時觸發(fā)演示的例子”,表明工程的作用。

  3. 右擊對話框編輯區(qū),在彈出的右鍵菜單中選擇“Insert ActiveX Control”,從彈出的列表框中選擇“Timer Object”,確定后會在對話框內(nèi)出現(xiàn)一個Timer對象。

  4. 我們右擊Timer對象,從彈出的菜單中選擇“Properties”,接著選“All”選項(xiàng)卡,將其中的Interval值設(shè)為5000,即每隔5秒發(fā)生一次Timer事件。

  5. 回到對話框編輯界面,雙擊Timer,產(chǎn)生一個CS2Dlg::OnTimerTimer1成員函數(shù),接受缺省值,并在函數(shù)實(shí)現(xiàn)部分輸入:
    MessageBox("定時觸發(fā)消息框","定時演示" ,MB_OK);

  6. 編譯并運(yùn)行此工程,將會在產(chǎn)生的對話框運(yùn)行期間,每隔5秒彈出一個消息框。

同樣,我們可以以任何自己的代碼來替換5中的消息框語句。詳細(xì)見附例s2。

第三種方法是采用線程技術(shù)。眾所周知,Windows 9X是一個基于多線程的多任務(wù)操作系統(tǒng),在內(nèi)核中以線程作為調(diào)度的基本單位,由系統(tǒng)分時間片進(jìn)行調(diào)度。利用這一點(diǎn),我們可以在程序當(dāng)中創(chuàng)建一個“司職”計時的線程,通過線程間的同步來定時觸發(fā)我們要完成的任務(wù)的代碼。不象前兩種方法需要至少有一個窗口作為接受消息的主窗口,采用線程技術(shù)實(shí)現(xiàn)定時觸發(fā)將免去創(chuàng)建窗口的麻煩以及帶來的系統(tǒng)各種資源的消耗。下面我們來舉一個例子來說明這個問題:我們在CmyApp類的Initstance成員中不建立主窗口而是創(chuàng)建一個工作線程,該線程休眠一定的時間后,自動調(diào)用主線程的SomeThing函數(shù)。為了支持線程的運(yùn)行,我們需要給CmyApp類增加相應(yīng)的線程函數(shù)。下面,我們還是一步一步的實(shí)現(xiàn):

  1. 利用MFC AppWizard創(chuàng)建一個標(biāo)準(zhǔn)工程,其中為不產(chǎn)生多余的代碼,不選文檔/視圖支持,并選擇單文檔。工程名為S3。

  2. 在CS3App:: InitInstance()中用“/* … */”注釋掉“return TRUE;”之前的所有代碼。這是為了不建立窗口。并添加以下代碼:
    ExitFlag=TRUE;//是否結(jié)束主線程的循環(huán)的標(biāo)志變量。因?yàn)樽泳€程嚴(yán)重依賴主線程,所以在本例子中為了避免沒有主窗口而提前結(jié)束應(yīng)用程序,從而使子線程無法存在,所以給主線程一個循環(huán),知道全局變量ExitFlag在子線程退出前被設(shè)置成FALSE為止.
    StartThread();//啟動線程
    do{}while(ExitFlag);//直到結(jié)束子線程
    ::MessageBox(NULL,"主線程結(jié)束!","定時觸發(fā)演示",MB_OK);
    return TRUE;

  3. 在Globals中增加一標(biāo)志變量“ExitFlag”,類型為BOOL。它被主線程用來判斷是否結(jié)束自身運(yùn)行。

  4. 通過ClassView在CS3App的Public部分聲明以下函數(shù):
    void StartThread(void); //啟動線程
    static UINT ThreadFunction(void); //主要執(zhí)行代碼的函數(shù)
    static UINT StaticThreadFunc(LPVOID lpparam);//設(shè)置線程時用到的函數(shù)
    需要特別指出的是,用AfxBeginThread進(jìn)行線程設(shè)置時,第一參數(shù)必須象本例所指出的那樣聲明為Static ,不然參數(shù)轉(zhuǎn)換的錯誤會擾得你不得安寧。

  5. 在StartThread中輸入如下代碼:
    AfxBeginThread(StaticThreadFunc,this);//建立并啟動線程

  6. 在StaticThreadFunc中輸入如下代碼:
    return ThreadFunc();//調(diào)用完成主要線程代碼的函數(shù),注意一定要是Static.

  7. 實(shí)現(xiàn)ThreadFunction:
    int i;
    i=5;//觸發(fā)5次
    while(i--)
    {
    Sleep(5000);//間隔5秒
    ::MessageBox (NULL,"我被定時觸發(fā)了!","定時觸發(fā)演示",MB_OK);
    }
    ExitFlag=FALSE;//ExitFlag是一全局變量,通知主線程結(jié)束運(yùn)行。
    return 0;
    }

  8. 編譯并運(yùn)行工程,將看不到應(yīng)用程序窗口,但可以看到每隔5秒,桌面上出現(xiàn)一個消息框,5次后彈出主線程結(jié)束的消息框。

以上即本人在學(xué)習(xí)當(dāng)中解決 Windows下實(shí)現(xiàn)定時觸發(fā)而采取的一些辦法,各自方法的特點(diǎn)也在介紹當(dāng)中指出。希望所述能給大家一點(diǎn)幫助,更希望能得到大家的指正。如果您有什么意見和設(shè)想,歡迎發(fā)E-Mail給我(yangshanhe@21cn.com)。

?

==

很早之前2000年的拙作,集在一起,免得自己都不清楚干過什么。

posted on 2006-06-23 21:48 楊粼波 閱讀(2769) 評論(0)  編輯 收藏 引用 所屬分類: Windows編程

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久九九久精品国产免费直播| 国产欧美日韩在线观看| 亚洲精品视频免费| 亚洲黄色有码视频| 猛男gaygay欧美视频| 久久免费少妇高潮久久精品99| 久久久久久久一区二区三区| 久久亚洲不卡| 亚洲国产精品欧美一二99| 亚洲乱码国产乱码精品精天堂 | 亚洲少妇一区| 亚洲欧美综合另类中字| 久久一区二区精品| 欧美激情久久久久| 国产乱码精品一区二区三区不卡 | 久久精品国产一区二区三区| 久久综合色天天久久综合图片| 蜜臀99久久精品久久久久久软件| 欧美韩日亚洲| 亚洲国产福利在线| 国内精品久久久久伊人av| 亚洲国产成人久久综合| 亚洲男女自偷自拍图片另类| 乱中年女人伦av一区二区| 亚洲另类视频| 久久精品国产亚洲5555| 欧美日韩国产一区精品一区| 国产中文一区二区| 中文精品一区二区三区| 六月天综合网| 一区二区三区蜜桃网| 久久久一本精品99久久精品66| 欧美日韩一区二区欧美激情 | 欧美成人国产| 亚洲男人第一av网站| 欧美大片免费| 国产一区二区三区成人欧美日韩在线观看| 亚洲区免费影片| 久久久久久欧美| 在线亚洲欧美视频| 欧美激情一区二区三区四区| 精品成人免费| 久久er99精品| 中文在线不卡视频| 欧美另类综合| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲欧美在线看| 欧美日韩视频在线观看一区二区三区| 好看的日韩视频| 久久经典综合| 午夜精品久久久久久久99水蜜桃| 欧美日韩喷水| 正在播放日韩| 日韩系列欧美系列| 欧美激情一区二区三区| 亚洲精品欧美日韩| 亚洲国产精品悠悠久久琪琪| 免费日本视频一区| 亚洲精品黄网在线观看| 亚洲福利视频一区| 欧美不卡福利| 洋洋av久久久久久久一区| 亚洲国产精品一区二区第四页av| 免费成人av在线看| 亚洲人成亚洲人成在线观看| 亚洲福利视频网| 欧美国产91| 亚洲五月六月| 亚洲一区二区三区国产| 国产日韩欧美综合一区| 欧美在线观看你懂的| 亚洲欧美日韩第一区| 欧美性片在线观看| 亚洲欧美日韩精品一区二区| 亚洲欧美一区二区三区在线| 黑人操亚洲美女惩罚| 免费欧美日韩国产三级电影| 蜜臀va亚洲va欧美va天堂| 亚洲美女av网站| 中文一区二区在线观看| 激情视频一区二区| 亚洲国产精品久久久久婷婷884| 欧美激情网友自拍| 亚洲影院免费观看| 午夜在线a亚洲v天堂网2018| 国产日本欧美一区二区| 欧美国产一区在线| 国产精品电影网站| 免费日韩成人| 国产精品久久久久久久久久久久 | 亚洲黄色精品| 国产精品午夜电影| 蜜臀av在线播放一区二区三区| 久久蜜桃资源一区二区老牛 | 欧美xxx成人| 欧美日韩不卡一区| 久久精品国产欧美激情| 欧美 日韩 国产在线| 亚洲免费在线播放| 老司机一区二区| 亚洲欧美成人网| 美日韩精品免费| 先锋亚洲精品| 欧美国产日韩xxxxx| 欧美影院视频| 欧美日韩国产91| 免费久久99精品国产自| 国产精品亚洲欧美| 亚洲国产精品久久久久秋霞不卡 | 欧美成人一区二区三区| 国产精品久久久久久久久动漫 | 另类天堂av| 国产精品美女久久久久aⅴ国产馆| 免费高清在线视频一区·| 欧美视频一区二区三区…| 猛男gaygay欧美视频| 国产亚洲成年网址在线观看| 一本一本久久| 亚洲精品视频在线| 美女诱惑一区| 免费欧美网站| 在线观看日韩精品| 久久国产精品黑丝| 欧美在线观看视频一区二区三区| 欧美日韩在线视频一区| 国产精品激情偷乱一区二区∴| 欧美成人精品一区二区| 国产精品ⅴa在线观看h| 亚洲人成小说网站色在线| 最近看过的日韩成人| 久久久久久亚洲精品不卡4k岛国| 欧美伊人影院| 国产精品视频免费一区| 中文欧美日韩| 亚洲欧美日韩另类| 国产精品麻豆va在线播放| 亚洲午夜精品久久| 性久久久久久久久| 国产亚洲a∨片在线观看| 欧美一区二区视频在线| 久久久久久电影| 精品999日本| 免费的成人av| 亚洲国产日韩欧美在线图片| 亚洲精品免费看| 欧美日韩精品久久| 国产精品99久久久久久www| 亚洲欧美国产高清| 国产欧美精品| 久久精品国产久精国产爱| 美日韩精品视频免费看| 亚洲精品国产系列| 国产精品久久久久久久app| 亚洲欧美日韩天堂一区二区| 久久久久亚洲综合| 亚洲精品社区| 国产精品国产一区二区| 欧美在线视频播放| 亚洲成色www8888| 久久久久久久久久久久久久一区| 国产欧美精品| 麻豆成人精品| 日韩亚洲欧美一区| 午夜精品一区二区三区在线视| 国产一区二区高清视频| 男人的天堂亚洲在线| 一区二区欧美日韩| 麻豆精品一区二区av白丝在线| 日韩亚洲欧美成人| 国产一区二区日韩精品| 欧美大片免费观看在线观看网站推荐| 一本色道久久综合亚洲精品小说| 久久精品亚洲一区| 在线一区视频| 1024成人| 国产精品亚洲片夜色在线| 久久综合网hezyo| 亚洲图片欧美午夜| 欧美黑人多人双交| 欧美在线视频免费观看| 日韩视频免费在线| 韩国精品一区二区三区| 欧美午夜免费| 欧美精品亚洲二区| 久久一区中文字幕| 亚洲综合三区| 亚洲乱码国产乱码精品精| 久久手机免费观看| 香蕉久久精品日日躁夜夜躁| 亚洲精品一区二区网址 | 亚洲精品小视频| 国模精品一区二区三区色天香| 欧美日韩伦理在线| 欧美不卡视频| 欧美在线一二三| 亚洲欧美日韩综合一区| aaa亚洲精品一二三区| 欧美一区二区三区在线观看| 欧美日韩高清在线一区| 欧美一区二区免费观在线|