国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
編程中國 - 積累的VC編程小技巧之按鈕
積累的VC編程小技巧之按鈕
作者:huzunbo    閱讀人次:1011    文章來源:VC在線    發(fā)布時(shí)間:2007-9-3    網(wǎng)友評(píng)論(0)條
 

1.資源種創(chuàng)建的控件,對(duì)其屬性的動(dòng)態(tài)控制:

在對(duì)話框類的頭文件里創(chuàng)建所要改變屬性的控件的對(duì)象,如要改變一個(gè)Button(IDIDC_MyButton)的屬性,則需創(chuàng)建Cbutton的對(duì)象m_button。然后在.cpp中的DoDataExchange函數(shù)里將ButtonID和創(chuàng)建的對(duì)象綁定在一起:

//{{AFX_DATA_MAP(CPrintDlg)

              // NOTE: the ClassWizard will add DDX and DDV calls here

       DDX_Control(pDX, IDC_MyButton, m_button);

       //}}AFX_DATA_MAP

然后可以在該函數(shù)的最后進(jìn)行初始化:

       m_button.EnableWindow(FALSE);

到這里已經(jīng)實(shí)現(xiàn)了改變屬性。如果要?jiǎng)討B(tài)改變其屬性,可如下實(shí)現(xiàn)(通過兩個(gè)Button的點(diǎn)擊改變起屬性)

// RadioAll Button的點(diǎn)擊響應(yīng)函數(shù)

void CPrintDlg::OnRadioAll()

{

              // TODO: Add your control notification handler code here

              m_button.EnableWindow(TRUE);

}

 

// RadioSelect Button的點(diǎn)擊響應(yīng)函數(shù)

void CPrintDlg::OnRadioSelect()

{

              // TODO: Add your control notification handler code here

              m_button.EnableWindow(FALSE);

}

也可以通過一個(gè)Check Button的點(diǎn)擊來改變,在其點(diǎn)擊響應(yīng)函數(shù)里實(shí)現(xiàn):

m_button.EnableWindow(!m_button.IsWindowEnabled());

其余控件屬性的改變都如此。

 

2.VC++中的3D按鈕的編程

運(yùn)行AppWizard生成一個(gè)基于對(duì)話框的test工程,在對(duì)話框中加入一個(gè)CButton控件。在CButton控件的General屬性頁將控件的ID改為IDC_3DTEXTBTN,Caption改為誰與爭瘋,在控件Styles屬性頁選中OwnerDraw,其余設(shè)置保持默認(rèn)。
  用classwizard創(chuàng)建一個(gè)新類:C3dTextButton,基類為CButton。為C3dTextButton類添加一個(gè)protected的函數(shù)void Draw(CDC* pDC, const CRect& rect, UINT state)。如下所示編寫代碼:
  void C3dTextButton::Draw(CDC *pDC, const CRect &rect, UINT state)
  {
     CString text; GetWindowText(text);
     int l=text.GetLength();
     CRect rectClient=rect;
   
     //獲得控件的字體
     CFont* pFont=GetFont();
   
     //確定所選字體有效高度和寬度
     LOGFONT logfont;
     pFont->GetObject(sizeof(LOGFONT),&logfont);
     if(logfont.lfHeight==0)logfont.lfHeight=20;
     logfont.lfWidth=0;//寬度設(shè)為0,寬度值由高度確定
     logfont.lfWeight=1000;
     logfont.lfEscapement=logfont.lfOrientation=0;
     CFont tryfont; VERIFY(tryfont.CreateFontIndirect(&logfont));
     CFont* pFontOld=pDC->SelectObject(&tryfont);
   
     //根據(jù)控件大小,調(diào)整字體的高度,使文本與控件協(xié)調(diào)
     CSize textSizeClient=pDC->GetTextExtent(text,l);
     if(rectClient.Width()*textSizeClient.cy>rectClient.Height()*textSizeClient.cx)
     {
        logfont.lfHeight=::MulDiv(logfont.lfHeight,rectClient.Height(),textSizeClient.cy);
     }
     else{
        logfont.lfHeight = ::MulDiv(logfont.lfHeight,rectClient.Width(),textSizeClient.cx);
     }
   
     //創(chuàng)建并選擇協(xié)調(diào)后的字體
     CFont font; font.CreateFontIndirect(&logfont);
     pDC->SelectObject(&font);
     textSizeClient=pDC->GetTextExtent(text,l);
     //確定文本與控件邊界的距離minx,miny
     int minx=rectClient.left+(rectClient.Width()-textSizeClient.cx)/2;
     int miny=rectClient.top+(rectClient.Height()-textSizeClient.cy)/2;
     int oldBkMode=pDC->SetBkMode(TRANSPARENT);
     COLORREF textcol=::GetSysColor(COLOR_BTNTEXT);
     COLORREF oldTextColor=pDC->SetTextColor(textcol);
     int cx = minx;
     int cy = miny;
     int s=(state&ODS_SELECTED)?-1:+1;
     cx+= 3; cy+= 3;
   
     //實(shí)現(xiàn)3D效果
     pDC->SetTextColor(::GetSysColor(COLOR_3DDKSHADOW));
     pDC->TextOut(cx-s*2,cy+s*2,text);
     pDC->TextOut(cx+s*2,cy-s*2,text);
     pDC->TextOut(cx+s*2,cy+s*2,text);
     pDC->SetTextColor(::GetSysColor(COLOR_3DHILIGHT));
     pDC->TextOut(cx+s*1,cy-s*2,text);
     pDC->TextOut(cx-s*2,cy+s*1,text);
     pDC->TextOut(cx-s*2,cy-s*2,text);
     pDC->SetTextColor(::GetSysColor(COLOR_3DSHADOW));
     pDC->TextOut(cx-s*1,cy+s*1,text);
     pDC->TextOut(cx+s*1,cy-s*1,text);
     pDC->TextOut(cx+s*1,cy+s*1,text);
     pDC->SetTextColor(::GetSysColor(COLOR_3DLIGHT));
     pDC->TextOut(cx,cy-s*1,text);
     pDC->TextOut(cx-s*1,cy,text);
     pDC->TextOut(cx-s*1,cy-s*1,text);
     pDC->SetTextColor(textcol);
   
     //輸出標(biāo)題
     pDC->TextOut(cx,cy,text);
   
     //恢復(fù)設(shè)備描述表
     pDC->SetTextColor(oldTextColor);
     pDC->SetBkMode(oldBkMode);
     pDC->SelectObject(pFontOld);
  }

  用classwizard重載C3dTextButton類的DrawItem函數(shù)。編寫代碼如下所示:
  void C3dTextButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
  {
     CDC* pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
     ASSERT_VALID(pDC);
     CRect rectClient=lpDrawItemStruct->rcItem;
     Draw(pDC,rectClient,lpDrawItemStruct->itemState);
  }
  用classwizardIDC_3DTEXTBTN建立一個(gè)C3dTextButton控件變量m_3dTextButton1

 

“3dTextButton.h”加入testDlg頭文件。編譯并測試應(yīng)用程序。

 

3.將RADIO按鈕初始狀態(tài)設(shè)置成為選中

1、  OnInitialDialog中用CButton::CheckRadioButton(...)
2、  OnInitialDialog中用CButton::SetCheck(...)

關(guān)聯(lián)一個(gè)整型值,在構(gòu)造函數(shù)中設(shè)為0

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
vc編程如何實(shí)現(xiàn)'十字線隨光標(biāo)移動(dòng)'
字體設(shè)置
設(shè)置TextOut字體顯示大小
基于MFC的OpenGL 繪圖例程
在MFC應(yīng)用程序中顯示JPG/GIF圖像文件
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服