我現在正在用 C 撰寫一個 win32 程式。我想在視窗上顯示我的運行程序,就像時間在流動一樣。
例如,這段代碼
int a=0;
for(int i=0;i<10;i )
{
a ;//The change in "a" can be seen on the window.
Sleep(1*1000);
}
但是我發現如果我想展示這個程序,比如點擊一個按鈕,螢屏上會出現一個變化的數字,那么程式需要一直運行。在這一點上,我沒有辦法做任何其他事情,比如點擊另一個按鈕。
所以我意識到我需要一個可以中斷當前行程的操作。但是查閱了很多資料,發現只有Linux系統的fork()函式才能滿足我的需求。但是我現在使用的是 Windows,那么我還有什么其他方法可以實作呢?真誠期待您的回復。
uj5u.com熱心網友回復:
您想使用SetTimer創建一個計時器。然后注意WM_TIMER訊息并更新螢屏。這是實作您所描述的標準方法。
uj5u.com熱心網友回復:
創建一個執行緒并使用原子。
std::atomic_int a_t(0);
auto do_a = [](std::atomic_int* pA)
{
for (int i = 0;i < 10;i )
{
(*pA) ;
std::this_thread::sleep_for(1s);
}
};
thread t(do_a, &a_t);
t.join();
cout << a_t.load(memory_order::memory_order_relaxed);
任何時候您需要獲取 的值a_t,只需呼叫 a_t.load(memory_order::memory_order_relaxed);
希望這可以幫助你
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/478593.html
上一篇:如何為不同的布局重用點擊監聽器
