日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Win10系列:VC++ 定时器

發(fā)布時(shí)間:2025/3/8 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Win10系列:VC++ 定时器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

計(jì)時(shí)器機(jī)制俗稱"心跳",表示以特定的頻率持續(xù)觸發(fā)特定事件和執(zhí)行特定程序的機(jī)制。在開發(fā)Windows應(yīng)用商店應(yīng)用的過程中,可以使用定義在Windows::UI::Xaml命名空間中的DispatcherTimer類來創(chuàng)建計(jì)時(shí)器。DispatcherTimer類包含了如下的成員:

  • Tick事件,周期性觸發(fā)的事件。
  • Start函數(shù),用于啟動(dòng)計(jì)時(shí)器。
  • Stop函數(shù),用于停止計(jì)時(shí)器。
  • Interval屬性,設(shè)置觸發(fā)Tick事件的時(shí)間周期,此屬性值的類型為TimeSpan。

簡單介紹了DispatcherTimer類之后,接下來模擬實(shí)現(xiàn)一個(gè)簡易的計(jì)時(shí)器。在Visual Staudio 2012中新建一個(gè)Visual C++的Windows應(yīng)用商店的空白應(yīng)用程序項(xiàng)目,并命名為DispatcherTimerDemo,接著在MainPage.xaml文件的Grid元素中添加如下的代碼,用于布局前臺界面。

<StackPanel HorizontalAlignment="Center" Margin="50,300,0,0">

<TextBlock x:Name="ClockText" FontSize="24"></TextBlock>

<Grid>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="Auto"></ColumnDefinition>

<ColumnDefinition Width="*"></ColumnDefinition>

</Grid.ColumnDefinitions>

<Button x:Name="Start" Click="StartClick" Content="開始" Grid.Column="0"></Button>

<Button x:Name="Stop" Click="StopClick" Content="停止" Grid.Column="1"></Button>

</Grid>

</StackPanel>

在上面的代碼中,添加了一個(gè)TextBlock控件和兩個(gè)按鈕。將這個(gè)TextBlock控件命名為ClockText,用來顯示計(jì)時(shí)器的計(jì)時(shí)。兩個(gè)按鈕分別為"開始"按鈕和"停止"按鈕,其中"開始"按鈕用來啟動(dòng)計(jì)時(shí)器,"停止"按鈕用來停止計(jì)時(shí)器。

布局了前臺界面以后,接下來添加計(jì)時(shí)器的后臺實(shí)現(xiàn)代碼。打開MainPage.xaml.h頭文件,添加如下的代碼:

private:

????//聲明DispatcherTimer類型變量timer

????Windows::UI::Xaml::DispatcherTimer^ timer;

????//聲明TimeSpan類型變量timeSpan

????Windows::Foundation::TimeSpan timeSpan;

????//聲明int32類型變量

????int32 highNum;

????//聲明int32類型變量

????int32 lowNum;

在上面的代碼中,使用private關(guān)鍵字聲明了四個(gè)私有的成員變量,分別為timer、timeSpan、highNum和lowNum,其中timer是一個(gè)DispatcherTimer類型的變量,用來表示計(jì)時(shí)器,timeSpan為TimeSpan類型的變量,用來表示時(shí)間。highNum和lowNum都為int32類型的變量,分別代表計(jì)時(shí)器的十位數(shù)和個(gè)位數(shù)。

聲明了上述的變量之后,接下來打開MainPage.xaml.cpp源文件,并在構(gòu)造函數(shù)中添加如下的代碼:

MainPage::MainPage()

{

????InitializeComponent();

????//創(chuàng)建DispatcherTimer類的對象

????timer=ref new DispatcherTimer();

????//Tick事件添加事件函數(shù)

????timer->Tick +=ref new EventHandler<Object^>(this,&DispatcherTimerDemo::MainPage::DispatcherTimerTick);

????// Duration屬性記錄的時(shí)間為1s

????timeSpan.Duration=10000000;

????//設(shè)置時(shí)間間隔

????timer->Interval=timeSpan;

????//highNum變量賦值0

????highNum=0;

????//lowNum變量賦值0

????lowNum=0;

}

在上面的代碼中,初始化一個(gè)DispatcherTimer類的對象timer,并為timer對象的Tick事件添加事件處理函數(shù)DispatcherTimerTick,后面將介紹DispatcherTimerTick函數(shù)的具體實(shí)現(xiàn)代碼。然后把timeSpan變量的Duration屬性賦值為10000000,并將timeSpan變量賦值給timer對象的Interval屬性,使timer對象的Tick事件每1秒觸發(fā)一次。最后將highNum變量和lowNum變量分別賦值為0,用于表示計(jì)時(shí)器的起始時(shí)間。

在實(shí)現(xiàn)DispatcherTimerTick函數(shù)之前,首先需要在MainPage.xaml.h頭文件中進(jìn)行聲明,代碼如下所示:

public:

????//更新計(jì)時(shí)器計(jì)時(shí)

????void DispatcherTimerTick(Object^ sender, Object^ e);

在上述代碼中,使用public關(guān)鍵字聲明一個(gè)公有的DispatcherTimerTick函數(shù),此函數(shù)用來更新計(jì)時(shí)器的計(jì)時(shí),并將更新后的計(jì)時(shí)顯示到前臺界面中。

聲明了DispatcherTimerTick函數(shù)以后,接下來在MainPage.xaml.cpp源文件中添加DispatcherTimerTick函數(shù)的實(shí)現(xiàn)代碼,具體代碼如下所示:

//更新計(jì)時(shí)器計(jì)時(shí)

void DispatcherTimerDemo::MainPage::DispatcherTimerTick(Object^ sender, Object^ e)

{

????//當(dāng)lowNum小于9時(shí),lowNum1

????if(lowNum<9)

????{

????????lowNum++;

????}

????else

????{

????????//當(dāng)lowNum大于9時(shí),將lowNum設(shè)為0

????????lowNum=0;

????????//highNum小于9時(shí),highNum1

????????if(highNum<9)

????????{

????????????highNum++;

????????}

????????else

????????{

????????????//highNum大于9時(shí),將highNum設(shè)為0

????????????highNum=0;

????????}

????}

????//將計(jì)時(shí)顯示到TextBlock控件中

????ClockText->Text="開始計(jì)時(shí):"+highNum+lowNum;

}

在上面的代碼中,當(dāng)lowNum變量的值小于9時(shí),lowNum變量自增1。而當(dāng)lowNum變量的值大于9時(shí),將lowNum變量賦值為0,并設(shè)置highNum變量的值。同樣,當(dāng)highNum變量的值小于9時(shí),highNum變量自增1。而當(dāng)highNum變量大于9時(shí),將highNum變量賦值為0。最后將highNum變量和lowNum變量賦值給名為"ClockText"的TextBlock控件的Text屬性,用于將計(jì)時(shí)顯示到前臺界面中。

添加了DispatcherTimerTick函數(shù)的實(shí)現(xiàn)代碼后,接下來為"開始"按鈕添加單擊事件處理函數(shù)StartClick。在MainPage.xaml.h頭文件中添加如下的代碼,用來聲明StartClick函數(shù)。

public:

????//啟動(dòng)計(jì)時(shí)器

????void StartClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);

聲明了StartClick函數(shù)之后,接下來在MainPage.xaml.cpp源文件中添加StartClick函數(shù)的實(shí)現(xiàn)代碼,在此函數(shù)中調(diào)用timer對象的Start函數(shù)來啟動(dòng)計(jì)時(shí)器。具體代碼如下所示:

//啟動(dòng)計(jì)時(shí)器

void DispatcherTimerDemo::MainPage::StartClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)

{

????timer->Start();

}

接著給"停止"按鈕添加單擊事件處理函數(shù)StopClick,在MainPage.xaml.h頭文件中添加如下的代碼,用來聲明StopClick函數(shù)。

public:

????//停止計(jì)時(shí)器

????void StopClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);

聲明了StopClick函數(shù)之后,接下來在MainPage.xaml.cpp源文件中添加StopClick函數(shù)的實(shí)現(xiàn)代碼,在此函數(shù)中調(diào)用timer對象的Stop函數(shù)來停止計(jì)時(shí)器。具體代碼如下所示:

//停止計(jì)時(shí)器

void DispatcherTimerDemo::MainPage::StopClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)

{

????timer->Stop();

}

運(yùn)行DispatcherTimerDemo項(xiàng)目后,單擊"開始"按鈕啟動(dòng)計(jì)時(shí)器,顯示如圖20-1所示的計(jì)時(shí)器界面。

圖20-1 計(jì)時(shí)器

總結(jié)

以上是生活随笔為你收集整理的Win10系列:VC++ 定时器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。