您好,登錄后才能下訂單哦!
一、靜態(tài)文本
在代碼中動態(tài)創(chuàng)建,需要使用CStatic類的成員函數(shù)Create
virtual BOOL Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );
lpszText:指定要在控件中顯示的文字。如果為NULL則不會顯示任何文字。
dwStyle:指定靜態(tài)控件的風(fēng)格。靜態(tài)文本框一般都是對話框或其他窗口的子窗口,而且是可見的,所以應(yīng)該包含WS_CHILD 和WS_VISIBLE風(fēng)格
SS_BITMAP | 一個位圖將顯示在靜態(tài)控件中,Create函數(shù)的lpszText參數(shù)字符串是資源文件中定義的位圖名。此風(fēng)格忽略寬度和高度參數(shù),靜態(tài)控件自動調(diào)整它的尺寸來適應(yīng)位圖 |
SS_BLACKFRAME | 指定一個具有與窗口邊界同色的框,默認為黑色 |
SS_BLACKRECT | 指定一個具有與窗口邊界同色的實矩形,默認為黑色 |
SS_CENTER | 使顯示的正文居中對齊,正文可以換行 |
SS_GRAYFRAME | 指定一個具有與屏幕背景同色的邊框 |
SS_GRAYRECT | 指定一個具有與屏幕背景同色的實矩形 |
SS_ICON | 使控件顯示一個在資源中定義的圖標,圖標的名字由Create 函數(shù)的lpszText 參數(shù)指定,圖標自動調(diào)整它的尺寸 |
SS_LEFT | 左對齊正文,正文能回繞 |
SS_LEFTNOWORDWRAP | 左對齊正文,正文不能回繞 |
SS_NOTIFY | 使控件能向父窗口發(fā)送鼠標事件消息 |
SS_RIGHT | 右對齊正文,可以回繞 |
SS_SIMPLE | 使靜態(tài)正文在運行時不能被改變并使正文顯示在單行中 |
SS_WHITEFRAME | 指定一個具有與窗口背景同色的框,默認為白色 |
SS_WHITERECT | 指定一個具有與窗口背景同色的實心矩形,默認為白色 |
rect:指定靜態(tài)控件的位置和大小,它可以是RECT結(jié)構(gòu)體類型,也可以是CRect類的對象。
pParentWnd:指定靜態(tài)控件的父窗口,通常是一個CDialog對象,不能是NULL。
nID:指定靜態(tài)控件的ID。
cs = new CStatic(); cs->Create("hello world", WS_CHILD|WS_VISIBLE|SS_CENTER, CRect(50,80, 150, 150), this);
二、編輯框 Edit Control
1.與靜態(tài)文本框的創(chuàng)建類似,除了可以在對話框模板上拖進一個編輯框,然后關(guān)聯(lián)一個變量或通過API函數(shù)使用,也可以在程序中動態(tài)創(chuàng)建編輯框,即調(diào)用CEdit類的成員函數(shù)Create。Create成員函數(shù)的原型如下
virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
2. dwStyle:指定編輯框的風(fēng)格??梢允荕SDN中“edit styles”包含風(fēng)格的任意組合。下面是“edit styles”的所有風(fēng)格說明。
ES_AUTOHSCROLL:當用戶在行尾鍵入一個字符時,正文將自動向右滾動10 個字符,當用戶按回車鍵時,正文總是滾向左邊
ES_AUTOVSCROLL: 當用戶在最后一個可見行按回車鍵時,正文向上滾動一頁
ES_CENTER: 在多行編輯框中使正文居中
ES_LEFT :左對齊正文
ES_LOWERCASE: 把用戶輸入的字母統(tǒng)統(tǒng)轉(zhuǎn)換成小寫字母
ES_MULTILINE:指定一個多行編輯器。若多行編輯器不指定ES_AUTOHSCROLL 風(fēng)格,則會自動換行,若不指定ES_AUTOVSCROLL,則多行編輯器會在窗口中正文裝滿時
發(fā)出警告聲響
ES_NOHIDESEL:默認時,當編輯框失去輸入焦點后會隱藏所選的正文,當獲得輸入焦點時又顯示出來。設(shè)置該風(fēng)格可禁止這種默認行為
ES_NUMBER :編輯框中只允許輸入數(shù)字
ES_OEMCONVERT:使編輯框中的正文可以在ANSI 字符集和OEM 字符集之間相互轉(zhuǎn)換。這在編輯框中包含文件名時是很有用的
ES_PASSWORD: 使所有鍵入的字符都用“*”來顯示
ES_READONLY: 將編輯框設(shè)置成只讀的
ES_RIGHT :右對齊正文
ES_UPPERCASE: 把用戶輸入的字母統(tǒng)統(tǒng)轉(zhuǎn)換成大寫字母
ES_WANTRETURN:使多行編輯器接收回車鍵輸入并換行。如果不指定該風(fēng)格,按回車鍵會選擇默認的命令按鈕,這往往會導(dǎo)致對話框的關(guān)閉
除了上面的風(fēng)格外,編輯款一般還會設(shè)置WS_CHILD、WS_VISIBLE、WS_BORDER等窗口風(fēng)格。另外,編輯框可以是多行的,也就是在編輯框中顯示多行文字,這就需要設(shè)置ES_MULTILINE風(fēng)格,如果想要多行編輯框支持回車鍵,則還要設(shè)置ES_WANTRETURN。
對于在對話框模板中創(chuàng)建的編輯框,它的屬性中包含了上述的風(fēng)格,例如,Multiline屬性對應(yīng)的就是ES_MULTILINE風(fēng)格,Want Return屬性對應(yīng)ES_WANTRETURN風(fēng)格。
三、Cbutton 單選框 復(fù)選框
1.CButton類的Create成員可動態(tài)創(chuàng)建Button
2.常用方法
a設(shè)置顯示的位圖
HBITMAP SetBitmap(HBITMAP hBitmap);
HBITMAP hBitmap; hBitmap=(HBITMAP)::LoadImage(::AfxGetInstanceHandle(),_T("aaa.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION); CButton *btn = (CButton*)GetDlgItem(IDC_BUTTON1); btn->SetBitmap(hBitmap);
b 獲取之前由SetBitmap函數(shù)設(shè)置的按鈕位圖的句柄。
HBITMAP GetBitmap( ) const;
c 設(shè)置按鈕的風(fēng)格。參數(shù)nStyle指定按鈕的風(fēng)格,bRedraw指定按鈕是否重繪,為TRUE則重繪,否則不重繪,默認為重繪
void SetButtonStyle(UINT nStyle,BOOL bRedraw = TRUE);
d 獲取按鈕控件的風(fēng)格。
UINT GetButtonStyle( ) const;
e設(shè)置按鈕的選擇狀態(tài)。參數(shù)nCheck為0表示未選中狀態(tài),1表示選中狀態(tài),2表示不確定狀態(tài)(僅用于復(fù)選框)。
void SetCheck(int nCheck);
f 獲取按鈕的選擇狀態(tài)。返回值的意義同SetCheck函數(shù)的nCheck參數(shù)。
int GetCheck( ) const;
g 設(shè)置要顯示到按鈕上的光標圖。參數(shù)hCursor指定了光標的句柄。返回值為按鈕原來光標的句柄。
HCURSOR SetCursor(HCURSOR hCursor);
h 獲取之前由SetCursor設(shè)置的光標的句柄。
HCURSOR GetCursor( );
i 設(shè)置按鈕的高亮狀態(tài)。參數(shù)bHighlight指定按鈕是否高亮顯示,非0則高亮顯示,否則取消高亮顯示狀態(tài)。
void SetState(BOOL bHighlight);
j UINT GetState( ) const;
獲取按鈕控件的選擇狀態(tài)、高亮狀態(tài)和焦點狀態(tài)。我們可以通過將返回值與各個掩碼相與來獲得各種狀態(tài)值,掩碼與對應(yīng)的相與結(jié)果說明如下:
掩碼0x0003:用來獲取單選按鈕或復(fù)選框的狀態(tài)。相與結(jié)果為0表示未選中,1表示被選中,2表示不確定狀態(tài)(僅用于復(fù)選框)。
掩碼0x0004:用來判斷按鈕是否是高亮顯示。相與結(jié)果為非0值表示按鈕是高亮顯示的。當單擊按鈕并按住鼠標左鍵時,按鈕會呈高亮顯示。
掩碼0x0008:相與結(jié)果為非零值表示按鈕擁有輸入焦點。
四、圖片控件
1動態(tài)加載圖片
type選擇Bitmap
// TODO: Add your control notification handler code here CBitmap bitmap; // CBitmap對象,用于加載位圖 HBITMAP hBmp; // 保存CBitmap加載的位圖的句柄 bitmap.LoadBitmap(IDB_BITMAP1); // 將位圖IDB_BITMAP1加載到bitmap hBmp = (HBITMAP)bitmap.GetSafeHandle(); // 獲取bitmap加載位圖的句柄 m_jzmPicture.SetBitmap(hBmp); // 設(shè)置圖片控件m_jzmPicture的位圖圖片為IDB_BITMAP1
五、右鍵菜單 實現(xiàn)鼠標右鍵消息處理
void CtestDlg::OnRButtonDown(UINT nFlags, CPoint point) { CMenu menu; // 菜單(包含主菜單欄和子菜單) CMenu *pSubMenu; // 右鍵菜單 menu.LoadMenu(IDR_MENU1); pSubMenu = menu.GetSubMenu(0); ClientToScreen(&point); // 彈出右鍵菜單,菜單左側(cè)與point.x坐標值對齊 pSubMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this); }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。