介紹你是否為你的edit控制項設定成為唯讀屬性那個灰色的背景色不合你的程式整體布局而煩惱了,其實實現這個方法不難,下面就是這個的實現方法,**可以任意拷貝和使用
正文edit控制項設定唯讀屬性後就不允許使用者進行輸入和編輯刪除等基本操作了,控制項只可以用來資訊的瀏覽,但是,如果使用預設的設定函式的話,edit控制項的背景色將變成灰色,如果你的主題程式的顏色背景進行一致的處理的話,這樣可能會與你的整體風格不和,所以需要乙個具有背景顏色但是又具有唯讀屬性的edit控制項刻不容緩了.
實現的方法其實很簡單,派生乙個cedit類,我們這裡命名為ccolreadonlyedit,再這個類中我們首先觸發pretranslatemessage,這個函式可以用來截獲訊息程式設計.我們如果要進行edit控制項的屬性設定,我們可以再這裡進行截獲wm_keydown訊息,具體程式設計可以見下:
bool ccolreadonlyedit::pretranslatemessage(msg* pmsg)
return cedit::pretranslatemessage(pmsg);
}現在遮蔽鍵盤的功能我們實現了,接下來的就是編寫乙個具有背景顏色和字型顏色的窗體了.其實這個也非常簡單,我們只需要觸發wm_paitn訊息,然後進行窗體控制項的背景重繪和字型重新輸出就可以了.
void ccolreadonlyedit::onpaint()
最後還有乙個重要的一點就是遮蔽滑鼠在edit控制項上的右鍵操作,因為你雖然象上面實現了操作,但是如果使用滑鼠右鍵選單貼上也是可以的(鍵盤貼上被遮蔽),這裡的方法有很多,比如觸發wm_rbuttondown訊息進行處理可以,同時我們可以在pretranslatemessage中進行截獲處理,也可以處理en_change訊息,這裡進行最簡單的,觸發wm_rbuttondown訊息,直接進行返回就可以了,相關**見下:
void ccolreadonlyedit::onrbuttondown(uint nflags, cpoint point)
else
cedit::onrbuttondown(nflags, point);
}
改變Edit的游標
看著edit的游標,是不是覺得了無生趣,想不想換個形狀來玩玩,其實很簡單,且聽我道來。edit是windows的標準控制項,它是乙個系統範圍視窗類,所以任何應用程式都能建立它。其實edit本質上也是乙個視窗,ms實現了它卻不開放源 只暴露出一些介面給我們操作。edit的游標 caret 沒有意外,就...
改變唯讀文字框的的背景顏色(原)
網上查了下,至少有三種方法可以使文字框變為唯讀屬性 code readonly true locked true enabled false code 可是怎麼改變唯讀文字框的的背景顏色呢?code input code 然後就可以了,達到了我想要的效果,如果想第一次載入時改變背景顏色,點到下乙個文...
VB 改變檔案唯讀屬性
setattr 語句 為乙個檔案設定屬性資訊。語法 setattr pathname,attributes setattr 語句的語法含有以下這些命名引數 部分 描述 pathname 必要引數。用來指定乙個檔名的字串表示式,可能包含目錄或資料夾 以及驅動器。attributes 必要引數。常數或數...