MFC基礎(chǔ)控件

一、靜態(tài)文本

在宣威等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,宣威網(wǎng)站建設(shè)費(fèi)用合理。

  1. 在代碼中動(dòng)態(tài)創(chuàng)建,需要使用CStatic類的成員函數(shù)Create

virtual BOOL Create(
   LPCTSTR lpszText,
   DWORD dwStyle,
   const RECT& rect,
   CWnd* pParentWnd,
   UINT nID = 0xffff 
);

  lpszText:指定要在控件中顯示的文字。如果為NULL則不會(huì)顯示任何文字。

  dwStyle:指定靜態(tài)控件的風(fēng)格。靜態(tài)文本框一般都是對話框或其他窗口的子窗口,而且是可見的,所以應(yīng)該包含WS_CHILD 和WS_VISIBLE風(fēng)格

SS_BITMAP一個(gè)位圖將顯示在靜態(tài)控件中,Create函數(shù)的lpszText參數(shù)字符串是資源文件中定義的位圖名。此風(fēng)格忽略寬度和高度參數(shù),靜態(tài)控件自動(dòng)調(diào)整它的尺寸來適應(yīng)位圖
SS_BLACKFRAME指定一個(gè)具有與窗口邊界同色的框,默認(rèn)為黑色
SS_BLACKRECT指定一個(gè)具有與窗口邊界同色的實(shí)矩形,默認(rèn)為黑色
SS_CENTER使顯示的正文居中對齊,正文可以換行
SS_GRAYFRAME指定一個(gè)具有與屏幕背景同色的邊框
SS_GRAYRECT指定一個(gè)具有與屏幕背景同色的實(shí)矩形
SS_ICON使控件顯示一個(gè)在資源中定義的圖標(biāo),圖標(biāo)的名字由Create 函數(shù)的lpszText 參數(shù)指定,圖標(biāo)自動(dòng)調(diào)整它的尺寸
SS_LEFT左對齊正文,正文能回繞
SS_LEFTNOWORDWRAP左對齊正文,正文不能回繞
SS_NOTIFY使控件能向父窗口發(fā)送鼠標(biāo)事件消息
SS_RIGHT右對齊正文,可以回繞
SS_SIMPLE使靜態(tài)正文在運(yùn)行時(shí)不能被改變并使正文顯示在單行中
SS_WHITEFRAME指定一個(gè)具有與窗口背景同色的框,默認(rèn)為白色
SS_WHITERECT指定一個(gè)具有與窗口背景同色的實(shí)心矩形,默認(rèn)為白色

rect:指定靜態(tài)控件的位置和大小,它可以是RECT結(jié)構(gòu)體類型,也可以是CRect類的對象。

pParentWnd:指定靜態(tài)控件的父窗口,通常是一個(gè)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)建類似,除了可以在對話框模板上拖進(jìn)一個(gè)編輯框,然后關(guān)聯(lián)一個(gè)變量或通過API函數(shù)使用,也可以在程序中動(dòng)態(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)格。可以是MSDN中“edit styles”包含風(fēng)格的任意組合。下面是“edit styles”的所有風(fēng)格說明。

     ES_AUTOHSCROLL:當(dāng)用戶在行尾鍵入一個(gè)字符時(shí),正文將自動(dòng)向右滾動(dòng)10 個(gè)字符,當(dāng)用戶按回車鍵時(shí),正文總是滾向左邊
       ES_AUTOVSCROLL: 當(dāng)用戶在最后一個(gè)可見行按回車鍵時(shí),正文向上滾動(dòng)一頁
       ES_CENTER: 在多行編輯框中使正文居中
       ES_LEFT :左對齊正文
       ES_LOWERCASE: 把用戶輸入的字母統(tǒng)統(tǒng)轉(zhuǎn)換成小寫字母
       ES_MULTILINE:指定一個(gè)多行編輯器。若多行編輯器不指定ES_AUTOHSCROLL 風(fēng)格,則會(huì)自動(dòng)換行,若不指定ES_AUTOVSCROLL,則多行編輯器會(huì)在窗口中正文裝滿時(shí)
發(fā)出警告聲響
       ES_NOHIDESEL:默認(rèn)時(shí),當(dāng)編輯框失去輸入焦點(diǎn)后會(huì)隱藏所選的正文,當(dāng)獲得輸入焦點(diǎn)時(shí)又顯示出來。設(shè)置該風(fēng)格可禁止這種默認(rèn)行為
       ES_NUMBER :編輯框中只允許輸入數(shù)字
       ES_OEMCONVERT:使編輯框中的正文可以在ANSI 字符集和OEM 字符集之間相互轉(zhuǎn)換。這在編輯框中包含文件名時(shí)是很有用的
       ES_PASSWORD: 使所有鍵入的字符都用“*”來顯示
       ES_READONLY: 將編輯框設(shè)置成只讀的
       ES_RIGHT :右對齊正文
       ES_UPPERCASE: 把用戶輸入的字母統(tǒng)統(tǒng)轉(zhuǎn)換成大寫字母
       ES_WANTRETURN:使多行編輯器接收回車鍵輸入并換行。如果不指定該風(fēng)格,按回車鍵會(huì)選擇默認(rèn)的命令按鈕,這往往會(huì)導(dǎo)致對話框的關(guān)閉

       除了上面的風(fēng)格外,編輯款一般還會(huì)設(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成員可動(dòng)態(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則重繪,否則不重繪,默認(rèn)為重繪

 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è)置要顯示到按鈕上的光標(biāo)圖。參數(shù)hCursor指定了光標(biāo)的句柄。返回值為按鈕原來光標(biāo)的句柄。

HCURSOR SetCursor(HCURSOR hCursor);

h  獲取之前由SetCursor設(shè)置的光標(biāo)的句柄。

HCURSOR GetCursor( );

i 設(shè)置按鈕的高亮狀態(tài)。參數(shù)bHighlight指定按鈕是否高亮顯示,非0則高亮顯示,否則取消高亮顯示狀態(tài)。

 void SetState(BOOL bHighlight);

j UINT GetState( ) const;

      獲取按鈕控件的選擇狀態(tài)、高亮狀態(tài)和焦點(diǎn)狀態(tài)。我們可以通過將返回值與各個(gè)掩碼相與來獲得各種狀態(tài)值,掩碼與對應(yīng)的相與結(jié)果說明如下:

       掩碼0x0003:用來獲取單選按鈕或復(fù)選框的狀態(tài)。相與結(jié)果為0表示未選中,1表示被選中,2表示不確定狀態(tài)(僅用于復(fù)選框)。
       掩碼0x0004:用來判斷按鈕是否是高亮顯示。相與結(jié)果為非0值表示按鈕是高亮顯示的。當(dāng)單擊按鈕并按住鼠標(biāo)左鍵時(shí),按鈕會(huì)呈高亮顯示。
       掩碼0x0008:相與結(jié)果為非零值表示按鈕擁有輸入焦點(diǎn)。

四、圖片控件

1動(dòng)態(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

五、右鍵菜單 實(shí)現(xiàn)鼠標(biāo)右鍵消息處理

void CtestDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
    CMenu menu;       // 菜單(包含主菜單欄和子菜單)   
    CMenu *pSubMenu;  // 右鍵菜單 
    menu.LoadMenu(IDR_MENU1);
    pSubMenu = menu.GetSubMenu(0); 
    ClientToScreen(&point);
    // 彈出右鍵菜單,菜單左側(cè)與point.x坐標(biāo)值對齊   
    pSubMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this); 
}

網(wǎng)站標(biāo)題:MFC基礎(chǔ)控件
轉(zhuǎn)載源于:http://muchs.cn/article14/jchjge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作云服務(wù)器、用戶體驗(yàn)、面包屑導(dǎo)航、小程序開發(fā)服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站