windows程式設計之編輯框簡介

2022-08-02 11:45:10 字數 1774 閱讀 5812

今天碰到乙個很無語的問題,創個編輯框建立了兩個多小時,就是不知道**出問題。

後來我就索性新建乙個最簡單的工程進行測試,就建立乙個視窗,然後中間加個長方形的編輯框(*^__^*)。

結果出醜了,編輯框是出來了,結果無法編輯,就連焦點都沒法設定

。看**:

就是詭異了,原以為編輯框建立不是挺簡單的嗎??可建立出來後,不能編輯啊···我就奇怪了

。然後又拿起《windows程式設計》找到編輯框這部分內容,看了下demo,好像也和我的沒很大區別額。比較大的區別就是他在處理訊息wm_create時候用了createwindow來建立,我懷疑問題出現在這裡,結果也用他的demo整合到我自己的程式上試試,

就在上面的**做了些小改變

結果就更加蛋疼了,連編輯框也沒了,真是詭異了。

我還去找了createwindow和createwindowex的區別。發現也沒什麼區別啊,不過是createwindowex提供了更詳細的引數,而createwindow裡面有很多引數是系統預設了,ex的功能有所增強罷了,那就奇怪了。

只要把文字內容改了就行,反正不要edit(不區分大小寫)就行了。仔細一想,好像可以理解。第一次我建立視窗時候視窗類用了edit,好的。windows說ok!

但是我在建立編輯框的時候createwindow (text ("edit"), ......),windows就不高興了,怎麼拿一樣的視窗類來建立父視窗和子視窗控制項呢??

編輯框也就成功建立了,也就不會有「亂七八糟的功能」了。

後來我又做了些小測試,createwindow (text ("edit"), .....)第乙個引數可不能亂指定,要「edit」(不區分大小寫),可能是系統自己預設的吧?(在預設建立的情況下)

既然介紹到了編輯框,我就順便再做些總結。

createwindow第二引數可是很強大的,預設時,編輯控制是單行的,使用es_multiline視窗風格就可以建立多行編輯控制。對於單行編輯控制,一般只可以在編輯框

的尾部輸入正文。要建立乙個水平的編輯控制,我們可以採用風格es_autohscroll。對於乙個多行編輯控制,正文不會整字回行,除非使用es_autohscroll風

格,在這種情況下,我們必須按enter鍵來開始新的一行。還可以設定es_autovscroll來將垂直滾動條包括到多行編輯控制中。

再是movewindow (hwndedit, 0, 0, loword (lparam), hiword (lparam), true) ;demo中編輯框的大小是wndpro接收到wm_size訊息才定義的。

我們可以設定不同的值進行測試。

再簡單介紹下發送給編輯框控制的訊息

sendmessage(hwndedit,wm_cut,0,0) :對編輯框內容進行剪下,將內容送到剪下板。

sendmessage(hwndedit,wm_copy,0,0)

sendmassage(hwndedit,wm_clear,0,0)

sendmessage(hwndedit,wm_paste,0,0)

sendmessage(hwndedit,em_getsel,(wparam)&istart,&(lparam)&iend) :選中當前選擇的起始位置和末尾位置。

sendmessage(hwndedit,em_getlinecount,0,0) :對於多行文字編輯,獲取行數。

sendmessage(hwndedit,em_getline,iline,(lparam)szbuffer) :將行本身複製到乙個快取區。

上面就是對編輯框的簡單介紹,就到這裡了,出去活動下(*^__^*) 。

參考書記 《windows程式設計》

MiniGUI程式設計 編輯框

編輯框 es editstyle 單行ctrl sledit sledit singlelineedit 多行ctrl mledit textedit multilineedit 通用風格 ws child ws visible ws border 特有風格 es uppercase大寫 es lo...

MFC組合框 編輯框

getdlgitem idc enablewindow false 設定初始狀態,編輯框獲取資訊的方式 變數 m edit m edit.format 操作組合框的資料 1 由於組合框內包含了列表框,所以列表框的功能都能夠使用。如可以利用 int addstring lpctstr lpszitem...

VC程式設計小技巧之編輯框

怎麼讓對話方塊中的cedit控制項類接收對話方塊的訊息 1 在對話方塊中增加乙個id 為idc edit1的cedit1控制項 2 通過classwizard 生成乙個基於cedit的新類cmyedit,cmyedit m wndedit 3 在對話方塊oninitdialog 中,將m wnded...