任務管理器開發(一)

2021-04-22 14:34:54 字數 1706 閱讀 2820

前言:

這個專案是自己膚淺的看了些關於系統的文章後,決定實現乙個任務管理器的加強版。現在後悔啊~發現這個任務量實在太大了,差不多兩個星期了(星期1到5都晚上時間和週末都用上了),才把程序管理部分完成了一部分。

期間遇到的問題列出一部分,因為很多我都不太記得了。

一、listctrl的重新整理問題:

當資料量比較大的時候,更新listctrl會出現閃爍,因為每次重新整理都deleteallitems,然後再乙個乙個的additem、setitemtext。這樣大部分的時間都被浪費而且造成了介面的閃爍。

解決辦法:

1.給listctrl設定lvs_ex_doublebuffer風格,顧名思義,雙緩衝~

2.在更新listctrl的時候使用下面的**段,可以很大程度上改善閃爍的情況,但也不是完美的。

// 防止閃爍措施

// 更新資料

// 恢復並更新

3.運用虛表,這個具體參見

,或者直接google吧~噢,在更新虛表的時候建議用setitemcountex這個方法吧,因為有個引數是防止更新後滾動條移動到開頭lvsicf_noscroll.

派生了個sortctrl,其實是在codeproject上找的,不過自己修改了下~

在顯示process資訊時,使用了虛表技術,具體察看**~

沒有解決的問題:

在正常listctrl裡,更新資料項後,滾動條不移動這個功能老是實現不了。在網上找了些**,都不成功,在此我列出一種方法吧,但是沒成功~

// 防止閃爍 

//m_wndlistprocess.setredraw(false); 

//int ntopindex =m_wndlistprocess.gettopindex(); //得到最頂端記錄索引 

//int nperpageitem=m_wndlistprocess.getcountperpage(); 

//m_wndlistprocess.ensurevisible(m_wndlistprocess.getitemcount()-1,false); 

//m_wndlistprocess.ensurevisible(ntopindex+nperpageitem,false); 

//m_wndlistprocess.setitemcount(m_vecprocessinfo.size()); 

// 

// 新增資訊 

//insertitem(); 

//m_wndlistprocess.setitemstate(m_ncuritem,lvis_selected, lvis_selected); 

//m_wndlistprocess.setredraw(true); 

//m_wndlistprocess.invalidate(); 

//m_wndlistprocess.updatewindow(); 

//m_wndlistprocess.redrawitems(ntopindex,ntopindex+nperpageitem);

怪!後記   :

今天就操作listctrl的問題總結出來,希望以後也能記住這些經驗,改善不足的地方~

估計明天總結列舉工作列視窗的事情~

還有,明天開始把當天的學習和工作成果記錄下來,在紙質的筆記本上記下!

任務管理器

dim url systemutil.run e 20111108 20111108 chinese hedexlite.exe process name inputbox 請輸入程序名 程序 hedexlite process list dialog windows 任務管理器 winlistvi...

linux任務管理器

在redhat2.4.20 8下編譯通過 由於本程式視窗部分由glad工具編制,源 不易貼出,現只給出部分 函式的 1,退出 按鈕 函式 void on button9 clicked gtkbutton button,gpointer user data 2,關機 按鈕 函式 void on bu...

遮蔽「任務管理器」

適用於win nt 2k xp,引數key為true,遮蔽 任務管理器 為false,任務管理器 可用 使用方法 disabletaskmgr true procedure disabletaskmgr key boolean var reg tregistry begin reg tregistr...