划船器專案第二版程式出現的問題

2021-06-18 15:22:39 字數 1533 閱讀 4121

划船器專案第二版程式

第二版程式要求:控制槳頻 ,控制力量,熱身用,介面美化!

介面美化工作由美工承擔。

程式動畫調整思路:

第一版程式動畫部分顯示在picture control控制項中,通過雙緩衝技術。

第二版程式動畫部分顯示當初有兩種方案:

a)仍然通過雙緩衝技術顯示在picture control控制項中,同時picture control控制項做透明化處理,或者將picture control控制項遮擋住的對話方塊介面做成然後在程式中由picture control控制項載入。

b)直接在視窗對話方塊中繪製動畫

本人採集的是第二種方案 ,即b)直接在視窗對話方塊中繪製動畫

第二種方案中存在的主要問題?

1)獲取對話方塊的控制代碼

bool cmatchdlg::oninitdialog()

{cdialog::oninitdialog();

·······

cwnd* pwnd1;

pwnd1 =fromhandle(this->m_hwnd);

·········

2)動畫顯示時m_staremainingdis1,m_staremainingdis2,·······m_staremainingdis6控制項閃爍

事實上,在第一版程式中,m_staremainingdis1已經繼承自ctransparentstatic,實現了透明化處理並且動態顯示時沒有出現重影(文字重疊)。那為什麼第二版程式中會出現ctransparentstatic閃爍呢?原因在於該程式的m_staremainingdis1等控制項的顯示和動畫的顯示分別在不同的定時器中:

settimer(timer_id_updatedis,50,null); //更新當前電腦的移動距離,m_staremainingdis1等控制項的顯示

settimer(timer_id_animation ,18,null); //更新動畫

由此可以看出,timer_id_updatedis的定時間隔50毫秒要比timer_id_animation的定時間隔18毫秒要大,就相當於m_staremainingdis1控制項只要一顯示出來,就會被

更新動畫的部分所遮蓋,造成了m_staremainingdis1等控制項的閃爍!

相反如果將timer_id_updatedis的定時間隔設定的小一點,timer_id_animation設定的大一點就不會出現m_staremainingdis1控制項的閃爍問題了。

3)開始和退出兩個按鈕在更新動畫的時候不能顯示出來

原因也在於第二種方案是直接通過雙緩衝將動畫顯示在對話方塊上(先在記憶體上畫背景圖,再在背景圖上畫動畫,最後copy到螢幕上),這乙個過程導致控制項被覆蓋,需要重繪才能顯示出來。但在定時器中強制重繪時候,按鈕又會出現閃爍的問題。

getdlgitem(idc_button31)->invalidate();

getdlgitem(idcancel)->invalidate();

總結:當初不應該選擇b)方案,應該選擇第一種方案,因為第一種方案更加直接,不會涉及到整個螢幕的更新,更不會出現開始和退出兩個按鈕在更新動畫的時候不能顯示出來的問題!

Python核心程式設計第二版程式14 1改寫

生成乙個迴圈程式。使用python 3改寫,並將輸入lower處理,避免輸入大小寫對判斷的影響。這裡面有個知識點是將寫好的命令用exec執行 usr bin env python dashes n 50 dashed line dashes用於做格式化輸出 exec dict def main lt...

如何招到優秀的程式設計師(第二版)

根據大家的反饋,我發現在第一版中對優秀程式設計師的定位有一些偏差,因此作出改進,希望大家繼續拍磚!並慎重宣告 此處是討論如何招到優秀的程式設計師,如果你認為自己是優秀的,請說出你自認為優秀的地方,這會給hr的工作帶來幫助。大多數程式設計師抱怨公司不識泰山,這不正好是可以改善雙方選擇的方式方法嗎?筆試...

WATMServer服務管理器第二版發布

watmserver就是在window下的apache jdk tomcat和mysql的應用服務集中管理器,由 jspgen.com 提供。其中apache tomcat mysql模組,開啟 關閉滑鼠點點就搞定,再也不用為修改繁瑣複雜的配置檔案而煩惱,再也不用將寶貴的時間浪費在沒必要浪費的環境配...