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

牽著老婆滿街逛

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

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

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

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

  1. 利用MFC AppWizard創(chuàng)建一個(gè)標(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”。以上步驟加入了對(duì)WM_TIMER消息的映射處理。

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. 利用MFC AppWizard創(chuàng)建一個(gè)標(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)用程序,從而使子線程無法存在,所以給主線程一個(gè)循環(huán),知道全局變量ExitFlag在子線程退出前被設(shè)置成FALSE為止.
    StartThread();//啟動(dòng)線程
    do{}while(ExitFlag);//直到結(jié)束子線程
    ::MessageBox(NULL,"主線程結(jié)束!","定時(shí)觸發(fā)演示",MB_OK);
    return TRUE;

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

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

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

  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,"我被定時(shí)觸發(fā)了!","定時(shí)觸發(fā)演示",MB_OK);
    }
    ExitFlag=FALSE;//ExitFlag是一全局變量,通知主線程結(jié)束運(yùn)行。
    return 0;
    }

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

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

?

==

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

posted on 2006-06-23 21:48 楊粼波 閱讀(2769) 評(píng)論(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>
            亚洲国产成人久久综合| 午夜免费电影一区在线观看| 亚洲高清网站| 久久综合亚洲社区| 免费视频亚洲| 欧美裸体一区二区三区| 91久久久久| 女生裸体视频一区二区三区| 亚洲欧美综合精品久久成人 | 久久综合九色九九| 国产日本欧美在线观看| 欧美一区=区| 亚洲综合色婷婷| 欧美视频二区| 亚洲先锋成人| 在线视频你懂得一区| 欧美日韩国产丝袜另类| 一本色道久久加勒比88综合| 亚洲精品美女久久7777777| 久久久久免费视频| 好吊日精品视频| 欧美1区2区视频| 欧美成人激情在线| 夜夜夜久久久| 亚洲素人在线| 国产亚洲在线| 欧美成人中文字幕| 欧美成人影音| 在线亚洲自拍| 性色av一区二区三区| 在线看一区二区| 欧美黄色一级视频| 欧美日韩激情小视频| 午夜视频精品| 久久久99免费视频| 亚洲精品久久久久| 亚洲素人在线| 在线视频国产日韩| 99国内精品| 在线播放日韩| 99国产精品久久久久久久成人热| 国产精品一区二区a| 你懂的亚洲视频| 欧美日韩亚洲91| 久久久久久久久综合| 欧美成人一区二区三区| 亚洲欧美日韩视频一区| 久久亚洲欧美| 欧美亚洲日本国产| 久久综合狠狠| 欧美一区二区日韩| 欧美大片一区二区三区| 亚洲欧美综合| 免费日韩精品中文字幕视频在线| 亚洲女同精品视频| 六月婷婷一区| 欧美激情在线观看| 国产精品伊人日日| 午夜精品视频网站| 国产麻豆午夜三级精品| 久久免费国产| 欧美日韩喷水| 欧美sm视频| 午夜欧美理论片| 亚洲精品久久久久久久久久久久 | 欧美一区二区免费| 国产精品亚洲片夜色在线| 欧美激情一区二区三区全黄| 国产精品三级久久久久久电影| 久久久久国产成人精品亚洲午夜| 欧美日韩国产黄| 老鸭窝91久久精品色噜噜导演| 欧美少妇一区二区| 亚洲高清资源| 国产午夜精品全部视频播放| 亚洲黄色视屏| 亚洲欧洲精品一区二区| 久久久免费观看视频| 久久精品免费电影| 欧美日韩在线三级| 一本色道**综合亚洲精品蜜桃冫| 亚洲精品中文字幕在线| 噜噜噜躁狠狠躁狠狠精品视频| 久久这里只有| 伊人男人综合视频网| 久久性色av| 欧美激情欧美狂野欧美精品| 国产一区二区三区成人欧美日韩在线观看| 一区二区三区四区五区视频 | 欧美 日韩 国产在线| 久久久精品日韩欧美| 久久久久综合| 国产精品久久一级| 亚洲美女尤物影院| 夜夜嗨av一区二区三区| 久久伊人一区二区| 欧美韩国在线| 日韩图片一区| 欧美伦理91| 亚洲精品乱码久久久久久按摩观| 亚洲精品免费在线观看| 欧美久久99| 在线视频精品一区| 欧美一区二区三区视频免费播放| 欧美日韩精品欧美日韩精品 | 欧美激情自拍| 日韩一级免费观看| 欧美一区二区久久久| 国产欧美激情| 久久久久国产精品一区三寸| 欧美成黄导航| 99视频一区| 久久精品1区| 影音先锋欧美精品| 欧美成人中文| 亚洲精品麻豆| 久久不见久久见免费视频1| 亚洲国产va精品久久久不卡综合| 欧美成年人视频| 亚洲精品免费网站| 校园春色综合网| 国内精品久久国产| 另类图片综合电影| 亚洲一区免费视频| 久久午夜影视| 亚洲人成网站在线观看播放| 一区二区av在线| 国产一区二区三区高清播放| 你懂的国产精品永久在线| 一个色综合av| 免费欧美日韩| 亚洲免费在线| 狠狠色综合网| 欧美日本一区二区高清播放视频| 亚洲永久免费观看| 欧美韩日亚洲| 欧美在线啊v| 99精品热视频只有精品10| 黄色成人在线观看| 国产精品久久久久永久免费观看 | 欧美—级a级欧美特级ar全黄| 亚洲一区二区三区高清不卡| 欧美国产一区二区| 久久国产精品一区二区三区| 亚洲精品一级| 韩国女主播一区| 国产精品美女午夜av| 欧美国产欧美亚洲国产日韩mv天天看完整| 中文在线不卡| 最新精品在线| 欧美成人精品激情在线观看 | 久久精品一区二区三区四区| 一区二区三区免费在线观看| 亚洲电影一级黄| 美女91精品| 午夜久久久久久| 中文在线一区| 日韩视频免费看| 亚洲国产综合91精品麻豆| 国产主播一区二区三区| 国产欧美欧美| 国产欧美不卡| 国产日产亚洲精品系列| 国产精品久久久久久久午夜片| 欧美日韩一区二区三区在线视频| 欧美va亚洲va香蕉在线| 久热精品视频在线免费观看| 欧美一级久久久久久久大片| 亚洲午夜一区二区三区| 亚洲天堂久久| 亚洲欧美高清| 亚洲欧美日本另类| 亚洲专区在线| 欧美在线观看视频| 久久精品亚洲一区| 久久亚洲一区二区三区四区| 久久久久国产精品一区| 久久久精品一区| 久久综合激情| 欧美激情女人20p| 欧美成人在线免费观看| 欧美区二区三区| 国产精品高潮呻吟久久av黑人| 欧美色播在线播放| 国产欧美日本一区二区三区| 国内久久视频| 亚洲国产第一页| 9国产精品视频| 亚洲欧美一级二级三级| 久久九九精品99国产精品| 久久综合狠狠综合久久激情| 欧美激情视频一区二区三区在线播放 | 国产精品99久久久久久久女警| 日韩一级在线观看| 亚洲视频一起| 久久久之久亚州精品露出| 在线亚洲一区二区| 国产日韩欧美一区二区三区四区 | 欧美成人网在线| 极品少妇一区二区|