?? 如何在標(biāo)題欄上增加按鈕 (2000年12月10日).txt
字號(hào):
如何在標(biāo)題欄上增加按鈕 (2000年12月10日)
本站更新 分類: 作者:陳勇 推薦: 閱讀次數(shù):627
(http://www.codesky.net)
--------------------------------------------------------------------------------
浙大快威郵電開(kāi)發(fā)部
陳勇
---- 大家在使用某些軟件的過(guò)程中,有沒(méi)有注意到有些軟件有一些很有趣的東西。比如說(shuō)在主窗口的標(biāo)
題欄上居然有一個(gè)按鈕。在Internet中隨處可見(jiàn)這樣的小控件。按鈕怎么可以加入到非客戶區(qū)(Client)
呢?
---- 在這里,最關(guān)鍵的一點(diǎn)就是,大家不要被傳統(tǒng)知識(shí)誤導(dǎo):真的認(rèn)為它是一個(gè)按鈕。有名柄(handle)
的控件當(dāng)然不能放在標(biāo)題欄上了。有經(jīng)驗(yàn)的程序員用Spy++跟蹤一下的話,馬上就會(huì)發(fā)現(xiàn)其中的秘密。它
并不是一個(gè)按鈕,只不過(guò)是處理成按鈕的樣子罷了。
---- 既然知道了所以然,那么我們?yōu)槭裁床荒茏约簛?lái)做一個(gè)呢,當(dāng)然沒(méi)問(wèn)題,下面我們就用Delphi來(lái)實(shí)
現(xiàn)
它,講注意我的注解。
---- 在具體實(shí)例之前,我們應(yīng)該知道幾個(gè)關(guān)于標(biāo)題欄的重要的消息:
---- WM_NCPAINT:重畫(huà)標(biāo)題欄消息。我們必須截住它,可以在這里重畫(huà)按鈕;
---- WM_NCLBUTTONDOWN:在標(biāo)題欄上按下鼠標(biāo)左鍵消息。我們可以截住它,在標(biāo)題欄上畫(huà)出按鈕按下的
樣子,并且可以在其中進(jìn)行自已的單擊事件的處理,使得它像一個(gè)按鈕;
---- WM_NCLBUTTONUP:在標(biāo)題欄上釋放鼠標(biāo)左鍵消息。我們可以截住它,在標(biāo)題欄上畫(huà)出按鈕彈起的樣
子;
---- WM_NCLBUTTONDBLCLK:在標(biāo)題欄上雙擊鼠標(biāo)左鍵消息。我們可以截住它,當(dāng)在按鈕區(qū)域雙擊時(shí),
我們就該使其無(wú)效,從而避免窗體執(zhí)行最大化和還原操作。
---- WM_NCRBUTTONDOWN:在標(biāo)題欄上按下鼠標(biāo)右鍵消息。我們可以截住它,當(dāng)在按鈕區(qū)域雙擊時(shí),我
們就該使其無(wú)效,從而避免彈出窗體按制菜單。
---- WM_NCMOUSEMOVE:在標(biāo)題欄上移動(dòng)鼠標(biāo)消息。我們可以截住它,當(dāng)鼠標(biāo)移出按鈕區(qū)域時(shí),我們就
必須畫(huà)出按鈕沒(méi)有被按下,即凸起時(shí)的樣子。
---- WM_NCACTIVATE:當(dāng)標(biāo)題欄在激活與非激活之間切換時(shí)收到該消息。我們可以截住它,當(dāng)該窗口處
理激活狀態(tài)時(shí),我們可以做一些事情,比如說(shuō)將我們的標(biāo)題欄按鈕上的字體變灰或變黑來(lái)指示該窗口的
當(dāng)前狀態(tài)。下面我沒(méi)有加入該項(xiàng)功能,如果大家感興趣的話,可以自己完成。
---- (大家從這里可以發(fā)現(xiàn),標(biāo)題欄的消息都是WM_NC開(kāi)頭的)
---- 知道了原理之后,相信大家一定可以做出更漂亮的按鈕來(lái)。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -