多功能標籤clabelex
引言
做使用者介面的時候經常要用到一些靜態文字控制項,顯示一些文字資訊,但是 mfc 提供的 cstatic類的功能過於簡單,無法滿足高階需求。為此我從 cstatic 派生了乙個類 clabelex,擴充套件了cstatic。第一次投稿,水平不足請大家見諒。我從 vckbase.*** 學到了很多很多東西 ,該是我回報的時候了。
一、功能簡介
新增的功能主要有:
4、邊框和背景
可以設定/取消邊框,指定邊框顏色;設定背景色,並填充整個標籤
二、實現原理
1、其實就是在onpaint()裡畫出各種效果:
void clabelex::onpaint()注:對字型加下劃線我沒有使用直接設定字型下劃線的方法,因為我覺得那樣不好看,呵呵///貼背景圖
if(m_bclicked && m_clickedbgbm.getsafehandle()!=null)
else if(m_bover && m_mouseoverbgbm.getsafehandle()!=null)//滑鼠經過的時候
else if(m_bgbm.getsafehandle()!=null)
///貼標籤
if(m_bclicked && m_clickedlabelbm.getsafehandle()!=null)
else if(m_bover && m_mouseoverlabelbm.getsafehandle()!=null)
else if(m_labelbm.getsafehandle()!=null)
else
///輸出文字
textmetric tm;
dc.gettextmetrics(&tm);
cstring strtext;
this->getwindowtext(strtext);
ntexttop=rect.top+(rect.height()-tm.tmheight)/2;
if(strtext.getlength()>0)
///畫下劃線
if(m_bunderline)
}
2、感應滑鼠用的方法如下所示:
在mousemove裡setcapture()和releasecapture();
void clabelex::onmousemove(uint nflags, cpoint point)注:這種方法簡單方便,但是有乙個問題,看附帶的工程,單擊label1彈出乙個對話方塊後label1無法恢復原狀。我一直沒解決這個問題.若誰知道請告知我 querw@sina.***if(m_bhighlight) //自動高亮
redrawwindow();
releasecapture();
return;
}
}
else // cursor has just moved over control
if(m_bhighlight)
redrawwindow();
setcapture();
::setcursor(m_hhandcur);
}
cstatic::onmousemove(nflags, point);
}
多功能閥知識
何謂多功能水幫浦控制閥?水幫浦有什麼執行特性需要閥門來控制?水幫浦控制閥能否實現這些控制?以及它與傳統的閘閥 蝶閥 止回閥以及勻速 雙速緩閉 的水力控制止回閥在原理 功能等方面有什麼質的不同,筆者在本文中以活塞式多功能水幫浦控 制閥 下稱控制閥 為例,通過對其結構 主要功能 工作原理的剖析,提出對上...
多功能鍊錶
此鍊錶具有stringbuffer,hashtab,list,vector 的功能 ifndef list define list include stdbool.h struct item struct list define push fl empty 0 define push fl data...
多功能輸入法
多功能輸入法 前端介面模組設計與實現 摘要隨著輸入法的發展,輸入法的外觀變得越來越美麗。由於使用者的使用習慣各不相同,為了滿足大多數的人的使用習慣,輸入法發展了新的方式,這方式不但增強了輸入法前端介面,而且憑藉photoshop的強大影象處理技術,為輸入法外觀增添了很多元素。本 主要介紹狀態視窗 編...